Pikachu靶场:DOM型XSS以及DOM型XSS-X
实验环境以及工具
Firefox浏览器、Burp Suite、Pikachu靶场
实验原理
要改变页面的某个东西,JavaScript就需要获得对HTML文档中所有元素进行访问的入口。这个入口,连同对HTML元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的(DOM )。所以,你可以把DOM理解为一个一个访问HTML的标准编程接口。
跨站脚本漏洞测试流程
1.在目标站点上找到输入点,比如查询接口,留言板等;
2.输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理;
3.通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);
4.提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞;
DOM型XSS
具体操作
1.在目标站点上找到输入点,比如查询接口,留言板等;
2.输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理;
发现正常输入字符串直接返回一个what do you see?但是输入了**’"<>123返回了一个123‘>**说明没有对特殊字符进行过滤。
3.通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);
发现了一个js函数,利用了DOM将字符串进行了拼接并把值给a标签的href,然后输出一个what do you see?
4.提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞;
利用已知条件构建payload效果为弹窗,弹窗内容为111
<a href='#' onclick="alert(111)">'>what do you see?</a>
则payload为
#' onclick="alert(111)">
DOM型XSS-X
具体操作
1.在目标站点上找到输入点,比如查询接口,留言板等;
2.输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理;
3.通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);
发现了一个js函数,利用了DOM将字符串进行了拼接并把值给a标签的href,然后输出一个what do you see?
4.提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞;
利用已知条件构建payload效果为弹窗,弹窗内容为111
<a href='#' onclick="alert(111)">'>what do you see?</a>
则payload为
#' onclick="alert(111)">
总结
DOM型XSS只在前端,与后端毫无关系。DOM-X型危害更大,它能够像反射型一样在URL中体现,将URL发给了受害者就能进行攻击。