在之前的文章中,我曾向大家介绍了关于XSS漏洞产生的原理、类型及其危害。在本文中我将教大家,如何在安全测试当中绕过XSS过滤,并成功利用XSS漏洞。这里我将以DVWA平台为例,向大家展示如何绕过该平台下XSS漏洞(存储和反射型)的,所有安全级别过滤。
反射型xss
低安全级别
首先,我们在浏览器中输入localhost/127.0.0.1 打开DVWA登录界面;使用admin:password默认账户登录,并在左侧栏选择反射型XSS漏洞。
我们可以看到,这里有一个“name”的文本提交框,当我在框中注入一段简单的js代码,会发生什么呢。
<script>alert(“helllooo”)</script>
很显然,浏览器执行了我的注入脚本,并生成一个弹框警告。如图所示。
在低安全级别中,攻击者只需使用简单的XSS语句,就能轻松绕过程序并执行代码。造成该问题的主要原因是开发人员,没有对用户的输入进行任何过滤导致的。
中安全级别
我们点击查看源码可以看到,在中安全级别中已经对“name”字段,添加了过滤函数限制js代码的注入。
str_replace – 用替换字符串,替换所有出现的搜索字符串。如果攻击者尝试使用script标签注入脚本,则脚本中的字符串将被替换为空。
对于这种过滤,我们也可以很轻松的进行绕过。只需将<script>改为大写<SCRIPT>或使用其他HTML标签
例如下面我使用body标签进行注入:
<body onload=alert(“XSS”)>
可以看到我们成功的注入了脚本,绕过了中安全级别过滤。如图所示:
高安全级别
在高安全级别下,我们可以看到代码的安全过滤机制明显增强。通过查看源码我们可以发现,这里使用了PHP的preg-replace函数,来正则匹配并禁用js脚本。
Preg_replace – 执行一个正则表达式的搜索和替换。
此时,我们已经无法使用以上的XSS脚本进行绕过了。代码会对用户所有的有效输入字符进行匹配检查,并将无效字符替换为空。
那么,对于高安全级别我们还能绕过吗?下面我再使用HTML的<img>标签来构造我们的XSS语句,看看是否能成功绕过。
<img src=x onError=alert(‘xss’)>
可以看到,XSS警告框成功弹出!如图:
存储型XSS
低安全级别
我们点击进入到存储型XSS界面,可以看到这里为我们提供了一个留言文本框。我们在留言框内注入一段简单的XSS代码,看看是否成功注入到服务端并弹出警告框。
<script>alert(“helllooo”)</script>
现在,只要用户访问到此页面并浏览我的留言时,他的浏览器将执行我的XSS脚本,并生成一个弹框警告。如图:
由于它会永久存储在Web服务器中,因此在切换到其他两个安全级别测试之前,我们需要重置DVWA数据库。
中安全级别
在之前的文章中我曾介绍过,关于使用inspect元素来更改文本区域的文本输入限制长度的方法。通过这种方式我们可以在文本框中,注入功能更为强大的XSS利用代码。下面我们按F12,通过inspector元素来修改“name”的文本字段最大长度。
将“maxlength = 10更改为maxlength = 100”; 这样我们就有足够的空间来注入我们的XSS脚本了。
接着我们在“name”字段中,输入以下脚本内容:
<body onload=alert(“XSS”)>
这里需要注意的是,留言框不能为空!
现在,只要用户访问到此页面并浏览我的留言时,他的浏览器将执行我的XSS脚本,并生成一个弹框警告。如图:
我们再次重置数据库。
高安全级别
重复相同的过程,更改“name”字段的最大长度。
将“maxlength = 10更改为maxlength = 100”
接着我们在“name”字段中,输入以下脚本内容:
<img src=x onError=alert(‘xss’)>
同样,留言框不能为空!
再次成功弹出XSS警告框。如图:
视频演示
*参考来源 :hackingarticles,FB小编 secist 编译,转载请注明来自FreeBuf.COM


































暂无评论内容