(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进入开发者调试模式进行更改相关参数

f12.webp

在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语句

f12-2.webp

将语句修改为

"></option></select><img src=# onerror=alert(document.cookie)>

即可正常执行我们的XSS语句

3.高级

等级设为高级,返回页面,从代码中可以看到,这里是设置了白名单,只允许列表中出现的四个内容出现。
这里我们拿#来进行绕过,#后面的内容是被注释的,所以他不会发到后端,进行校验,但是js是一个在前端的语言,所以这里可以塑造语句

EnGlish# <script>alert(document.cookie)</script>

即可正常触发漏洞

本期教程到这里就结束了,有问题可以在评论区留言讨论!