
(Tips:如果在阅读本文时遇到代码块无法正常显示的情况时,请刷新页面访问即可)
DVWA(Damn Vulnerable Web Application)是一个专为安全学习和渗透测试设计的漏洞靶场,XSS(Cross-Site Scripting)跨站脚本攻击是最常见的Web漏洞之一。本文将引导你如何在 DVWA 上完成三种等级的 XSS 渗透测试:低、中、高级。
基础环境配置可以查看上一篇文章:DVWA:SQL注入中级教程
具体操作
一、反射型
1.初级
靶场等级设置为初级,点击左侧菜单的XSS(Reflected)
按钮,进入反射型XSS测试
点击右下角View Source
按钮,可查看网页源代码,发现这里只是判断不为空而已,没有其他防护,直接输入语句
<script>alert(document.cookie)</script>
页面即可触发
2.中级
将等级设为中级后,返回页面,再次查看代码,发现对代码添加了<script>标签的过滤,可以输入语句
<Script>alert(document.cookie)</script>
因为代码只对小写字母进行了过滤,只需改为大写字母即可触发
3.高级
将等级设为高级,返回页面,查看代码,发现使用了正则表达式将大小写都禁止了,这里可以使用
<img src=# onerror=alert(document.cookie)>
使用Img插入一张空图片,返回报错到cookie值即可触发
二、存储型
存储型在提交结果之前,一定要先清除一下数据,再进行提交!
1.初级
靶场等级设置为初级,点击左侧菜单的XSS(Stored)
按钮,进入存储型XSS测试
还是先View Source查看代码,依旧没有任何防护,name为任意字符,在Message输入
<script>alert(document.cookie)</script>
页面即可正常回显
2.中级
将等级设为中级,返回页面,查看代码,发现代码对message进行了过滤和转移,但是name只是过滤了script而且使用的是str_replace函数,他对大小写是不敏感的,所以这里可以用大小写绕过。
还发现了页面对name栏设置了最大字符数,我们可以按F12进入开发者调试模式进行更改相关参数
在name栏中输入
<Script>alert(document.cookie)</script>
message中输入任意字符即可,页面即可触发
3.高级
这里和中级差不多,但是name的script大小写都过滤了,所以这里我们继续用img函数来绕过
先修改name的最大输入字符,然后在其中输入
<img src=# onerror=alert(document.cookie)>
message中输入任意字符即可,页面正常触发
三、DOM型
1.初级
靶场等级设置为初级,点击左侧菜单的XSS(DOM)
按钮,进入DOM型XSS测试
直接点击Select按钮,发现URL中多了一个English,查看代码,发现什么也没有,直接在URL中将English修改为
<script>alert(document.cookie)</script>
出现弹窗,漏洞触发成功
2.中级
等级设置为中级,返回页面,查看代码,这里判断只要出现<script就重定向到English,这里我们可以利用其他函数来触发弹窗,如函数
<img src=# onerror=alert(document.cookie)>
这里发现没有弹窗但是,语句被插入页面当中了,这里看代码要先闭合option语句,才可以执行我们的xss语句
将语句修改为
"></option></select><img src=# onerror=alert(document.cookie)>
即可正常执行我们的XSS语句
3.高级
等级设为高级,返回页面,从代码中可以看到,这里是设置了白名单,只允许列表中出现的四个内容出现。
这里我们拿#来进行绕过,#后面的内容是被注释的,所以他不会发到后端,进行校验,但是js是一个在前端的语言,所以这里可以塑造语句
EnGlish# <script>alert(document.cookie)</script>
即可正常触发漏洞
本期教程到这里就结束了,有问题可以在评论区留言讨论!