一、漏洞介绍
xss攻击全称跨站脚本攻击,是为了不和层叠样式表(CSS)混淆,所以缩写成XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到web网站里面,供给其他用户访问,当用户访问到有恶意代码的网页就会产生xss攻击。
二、漏洞危害
- 盗取各类用户账号,如机器登录账号、用户网银账号、各类管理员账号
- 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
- 盗窃企业重要的具有商业价值的资料
- 非法转账
- 强制发送电子邮件
- 网站挂马
- 控制受害者机器向其他网站发起攻击
三、漏洞防御
xss防御的总体思路是:对于输入(和URL参数)进行过滤,对输出进行编码,也就是对提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容,然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。
四、漏洞类型
1、反射型
反射型的XSS,非持久化,需要欺骗用户自己去点击链接才能触发XSS代码,反射型XSS攻击的方法,攻击者通过发送邮件或诱导等方法,将包含xss恶意链接发送给目标用户,当目标用户访问该链接时,服务器将接收该用户的请求并进行处理,然后服务器把带有xss恶意脚本发送给目标用户的浏览器,浏览器解析这段带有xss代码的恶意脚本后,就会触发xss攻击。
==代码分析==
在反射型xss代码中,首先判断$_GET['mssage'] 是否等于 kobe,如果不是则在页面中
将 $_GET['mssage'] 复制给$html 变量中,⽽且没有任何过滤再输出到⻚⾯中,所以直接输
⼊⻚⾯会直接输出 xss 信息,就会造成 xss 攻击。
2、存储型
存储型XSS,持久化,代码是存储在服务器中的数据库里,如在个人信息或发表文章等地方,可以插入代码,如果插入的数据没有过滤或过滤不严,那么这些恶意代码没有经过过滤将储存到数据库中,用户访问该页面的时候,没有进行编码过滤输出到浏览器上,就会触发代码执行,造成xss攻击。
==代码分析==
在存储型xss代码分析中,看到留言的inster into语句中,直接插入留言信息,没有任何过滤,输入恶意代码,这个代码将记录在数据中。
3、DOM型
DOM,全称 Document Object Model,是⼀个平台和语⾔都中⽴的接⼝,可以使程序和脚
本能够动态访问和更新⽂档的内容、结构以及样式。 DOM 型 XSS 其实是⼀种特殊类型的反射
型 XSS,它是基于 DOM ⽂档对象模型的⼀种漏洞。 在⽹站⻚⾯中有许多⻚⾯的元素,当⻚⾯
到达浏览器时浏览器会为⻚⾯创建⼀个顶级的 Document object ⽂档对象,接着⽣成各个⼦⽂
档对象,每个⻚⾯元素对应⼀个⽂档对象,每个⽂档对象包含属性、⽅法和事件。可以通过
JS 脚本对⽂档对象进⾏编辑从⽽修改⻚⾯的元素。也就是说,客户端的脚本程序可以通过
DOM 来动态修改⻚⾯内容,从客户端获取 DOM 中的数据并在本地执⾏。基于这个特性,就
可以利⽤ JS 脚本来实现 XSS 漏洞的利⽤;
==代码分析==
DOM型xss程序中,只有html代码,dom通过操作HTML或者css实现HTML属性、方法、事件,因此程序中没有与服务器进行交互。
点击按钮时,会调用domxss()函数,跟踪domxss函数:
五、payload
在网站是否存在xss漏洞时,应该输入一些标签<>输入后查看网页源代码是否过滤标签,如果没过滤,很大可能存在xss漏洞。
1、常用的测试语句
2、一些常见标签
下面的标签大部分都是可以自动触发js代码的,无需用户去交互,大部分情况下我们也是希望自动触发而不是等用户去触发。
3、javascriot伪协议
4、payload
备忘录:
https://netsec.expert/posts/xss-in-2021/
https://github.com/0xsobky/HackVault/wiki/Unleashing-an-Ultimate-XSS-Polyg
lot
https://d3adend.org/xss/ghettoBypass
https://www.jb51.net/tools/xss.htm
https://www.yuque.com/docs/share/c16d3bb5-929c-4239-bab9-35e2a93d7fd9?
5、不同位置的XSS利用方式
6、远程加载payload
7、有过滤的情况下
(1)过滤空格
(2)过滤关键字
(3)双写关键字
(4)字符拼接
(5)其他字符混淆
(6)编码绕过
Unicode编码绕过
url编码绕过
Ascii码绕过
<img src="x"
onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,4
1,59))">
hex绕过
八进制
base64绕过
(7)过滤双引号,单引号
(8)过滤括号
(9)过滤url地址
(10)使用IP
六、XSS平台利用
在初步探测到xss漏洞时,此时我们可以使用xss在线平台,去获取一些我们需要的信息,比如位置、键盘记录、IP、表单挟持。
不建议自己搭建。
使用公网的(自行搜索)。