Damn Vulnerable Web Application(DVWA)攻略一
写在前面
网络安全教学声明
根据《中华人民共和国刑法》《中华人民共和国网络安全法》《中华人民共和国个人信息保护法》等相关法律法规,现就本教学项目声明如下:
法律依据与违法后果:
任何未经授权侵入计算机信息系统、非法获取数据、破坏网络功能等行为,均涉嫌违反《刑法》第二百八十五条、第二百八十六条,可处三年以下有期徒刑或拘役,情节严重者最高可处七年以上有期徒刑。
传播计算机病毒、木马程序或其他恶意代码,或提供相关工具,依据《网络安全法》第二十七条、第六十三条,将面临行政处罚;构成犯罪的,依法追究刑事责任。
非法收集、使用、买卖公民个人信息,根据《个人信息保护法》第十条、第六十六条,最高可处以违法所得五倍罚款或五百万元以下罚款,并承担刑事责任。
教学目的与责任声明:
本课程所有技术内容仅用于网络安全知识普及、合法授权的渗透测试、漏洞研究等教学场景,严禁任何形式的非法使用。
学习者须承诺遵守国家法律法规及公序良俗,严禁将教学内容用于破坏网络安全、侵犯他人隐私、窃取商业秘密等违法活动。
因学习者违反本声明导致的全部法律后果,由行为人自行承担;作者/教学方不对此承担任何直接、间接或连带责任。
适用范围:
本声明适用于课程文本、视频、实验环境及衍生的所有教学资料。
学习者通过任何渠道获取本课程内容,即视为已阅读并同意本声明全部条款。
特别提示:网络空间非法外之地,请严格遵守技术伦理与法律红线。
安装教程
基础环境:
操作系统:kali-linux-2024.4-vmware-amd64
DVWA地址:
终端中执行:
sudo bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh)"DVWA攻略视频
作者是跟着这个学习视频做的题目和教程(视频非本作者制作):
此攻略较长,一共是17个学习内容(实际16个,最后一个没什么意思),每个又有三种难度,因此攻略分为5部分。
Brute Force(暴力破解)
Low:
( 首先看一下目的 ) 通过字典攻击爆破管理员的密码:

再看一下源码:

打开Brup pro工具 Proxy —> Intercept —> Open Browser 将 Intercept is 设置off
访问后输入用户名 admin 和密码 ( 随便 ) 比如:123 。将Intercept is 设置no,点Login

右键选择 Send to Intruder ,然后将 Intercept is 设置为 off,接着点击 Intruder

点击Positions,攻击模式选择Cluster bomb,点击右侧Clear( 清除所有变量 )
在第一行中GET /DVWA/vulnerabilities/brute/?username=admin&password=123&Login=Login HTTP/1.1选中username中的admin接着点击add,password中的123 也是一样。

点击Payloads,Payload set这里的1就是之前选的用户名,在下方的Payload Options [simple list] 中的输入框中输入admin 然后点击Add
Payload set选择2,也就是之前选的密码,在下方的Payload Options [simple list] 中点击Load ... 选择字典2017_top100.txt
github的链接可能加载不出来,我这里放地址:https://github.com/k8gege/PasswordDic
点击 Start attack 开始攻击

点击 Length 进行排序,选中最上面的,然后点击 Response ,再点击 Render 可以看到密码正确
Medium:
先看以下源码:

如果密码不对需要等待2秒,没什么屁用,操作和上面的 Low 一样,无非就是等,或者你可以用下面的多线程操作:

这里的 Number of threads 就是线程数,你可以将数值改为 <20 的太大的我没试过,这里不过多赘述了
High:
先看一下源码:

在上个基础上添加了Token的校验,还有如果密码不对将随机等待0至3秒
这一关在Token的获取上有些问题,先放一边。
Command Injection(命令注入)
Low:
首先看一下目的:

看一下源码

这是一个通过输入IP地址测试通信状况的网页,后台执行的是 'ping' 命令。但是有操作系统的判断,所以需要通过回显判断对方服务器使用的是什么系统。先在输入框中输入IP地址:127.0.0.1

我们可以从中发现这个数据的大小是64字节,这通常是Linux系统,而如果是32字节的数据则是Windows系统。

在Linux的学习中我们知道怎么执行多条命令的方法,使用“&&” “&” “||” “|” “;”
在输入框中输入
127.0.0.1&&cat /etc/passwd
127.0.0.1||cat /etc/passwd
127.0.0.1;cat /etc/passwd
Medium:
先看一下源码:

不让用“&&”和“;”了,没屁用!不演示了
High:
先看以下源码:

没屁用!“|” “&&”照样用代码中的“ | ”符号左右各有两个空格。只能说防了个寂寞。
Vulnerability: Cross Site Request Forgery (CSRF)(跨站请求伪造)
Low:
先看一下目的

这里的功能是修改 admin 账户的密码
请注意!这里修改的admin账户密码是你登录DVWA网站的admin账户密码! 请务必记住密码!!!

打开Brup pro工具 Proxy —>Intercept —> Open Browser 将Intercept is 设置为off
访问后输入用户名:123和密码 ( 随便 ) 比如:123 。将Intercept is 设置为no,点击Change

右键选择Engagement tools —> Generate CSRF PoC,在新窗口点击Copy HTML

复制后将 Intercept is 设置为 off,接着打开 VSCode,添加工作区 —> 创建新文件夹 —> 创建新文件 "index.html" 然后粘贴之前复制的HTML代码

然后需要你修改为以下代码:
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>history.pushState('', '', '/')
window.onload = function () {
var btn = document.getElementById('sub');
btn.click()
console.log('btn', btn);
}
</script>
<form action="http://10.86.29.238/DVWA/vulnerabilities/csrf/">
<input type="hidden" name="password_new" value="123" />
<input type="hidden" name="password_conf" value="123" />
<input type="hidden" name="Change" value="Change" />
<input id="sub" type="submit" value="Submit request" />
</form>
</body>
</html>随后点击浏览此网页,或者在VSCode中装Live Server插件,装好后右下角会显示 Go Live,点击后即可访问,或者右键选择Open with Live Server也可浏览网页文件,发现已经跳转。
Medium:
先看一下源码:

这里添加了请求验证,就是说他会验证你的请求是否来源于本站,还是中途有所跳转。
这里我将使用子域名的方式来做这题,编辑本机 ( 就是你做题的电脑 ) hosts 文件,
路径C:/Windows/System32/drivers/etc/hosts在其中添加如下内容:请把注释删除!
192.168.85.80 target.test #目标站域名
127.0.0.1 source.test #跨站网页域名
127.0.0.1 target.test.source.test #最后使用的域名这里解释一下,当你使用target.test.source.test也就是子域名访问时,你的请求中就带有目标站的域名,所以通过了验证机制
VSCode中点击右下角的Go Live,在浏览器中访问:target.test.source.test:5500就能看到密码已更改:

这里的密码取决于你跨站脚本中写的是什么密码,就是下面红框所标处:

High:
先看一下源码:

没做成功,新版本的浏览器规则貌似并允许使用解这道题的答案,如果你能做出来,请让我学习学习!
攻略一到此结束,下一期这周末更新