一.XSS—标签内
1.反射型XSS
攻击者将恶意的JS语句提交到服务器,服务器程序将JS语句直接输出到页面
中,导致再浏览器端触发。
Payload:alert(1)script>
在虚拟机搭建DVWA,在本地访问虚拟机的地址,进入DVWA的目录,设置安全等级为low,即可开始测试
如图,出现弹窗并在url中能看到XSS语句,说明存在反射型XSS。
查看元素,可以看到语句在script标签中插入了alert(1)。
1.反射型XSS的JS代码在URL中,并且反射型XSS只能触发一次。
2.常出现在搜索框和URL中。
3.①.未对用户输入的数据进行编码或html实体化就输出到页面中则存在反射型XSS ②.过滤了某些关键字或者将特殊符号进行了html实体化,这样则不存在反射型XSS
2.存储型XSS
攻击者直接的将js语句存储到了目标的数据库或者文件中,程序读取到JS语句
后输出到页面中触发。
可以看到出现了弹窗但在url中却并没有我们输入的XSS语句。说明存在存储型XSS。
查看元素,我们也发现了插入的alert(1)语句。
1.存储型XSS的JS代码在数据库中,而且存储型XSS在页面被浏览的时候就可以触发。
2.常见在留言板、评论框。
3.Dom型XSS
Dom型XSS与前两者均不同,前两者都是后台将JS代码输出页面中,而Dom型XSS是前端的JS将攻击者构造的JS代码输出到页面中的。
进入DVWA的Dom型XSS测试,查看元素,可以观察到JS代码与元素。
出现弹窗。
查看元素,可以发现alert(1)被存放到JS下。
二.XSS产生位置非标签内时—属性内(以下仅作方法记录,等待实践)
html的属性指:name=”value” id=”value”等形式。
1.利用事件属性进行XSS攻击
当利用上面的方法直接进行XSS攻击失败时,我们查看元素,当发现标签内的XSS语句被实体化,而属性内的XSS语句却没有被实体化时,我们就可以利用事件属性来进行XSS攻击。
Payload:
src=x onerror=alert(1)>
src=x onmouseover=alert(1)>
若直接用事件属性去触发XSS漏洞时,由于双引号未闭合导致js代码变成alert(1)",所以无法弹窗。我们可以利用以下构造的语句来解决。
123" onmouseover="alert(1)
Hello 123" onmouseover="alert(1)pre>
123" onmouseover=alert(1);//
123
" onmouseover="alert(1);//"">Hello 123" onmouseover=alert(1)
123" onmouseover=alert(1) x="
Hello 123" onmouseover=alert(1)
123">
">Hello 123" onmouseover=alert(1)pre>
三.特殊标签构造XSS方法
特殊标签内构造XSS,本质是先闭合该标签,再在其后加入我们想利用的XSS语句。
1.
select>
我正在写这个语句的时候,在这个编辑器里就出现了XSS漏洞..(偷笑)
2.