写在前面

网络安全教学声明

根据《中华人民共和国刑法》《中华人民共和国网络安全法》《中华人民共和国个人信息保护法》等相关法律法规,现就本教学项目声明如下:

法律依据与违法后果:

任何未经授权侵入计算机信息系统、非法获取数据、破坏网络功能等行为,均涉嫌违反《刑法》第二百八十五条、第二百八十六条,可处三年以下有期徒刑或拘役,情节严重者最高可处七年以上有期徒刑。

传播计算机病毒、木马程序或其他恶意代码,或提供相关工具,依据《网络安全法》第二十七条、第六十三条,将面临行政处罚;构成犯罪的,依法追究刑事责任。

非法收集、使用、买卖公民个人信息,根据《个人信息保护法》第十条、第六十六条,最高可处以违法所得五倍罚款或五百万元以下罚款,并承担刑事责任。

教学目的与责任声明:

本课程所有技术内容仅用于网络安全知识普及、合法授权的渗透测试、漏洞研究等教学场景,严禁任何形式的非法使用。

学习者须承诺遵守国家法律法规及公序良俗,严禁将教学内容用于破坏网络安全、侵犯他人隐私、窃取商业秘密等违法活动。

因学习者违反本声明导致的全部法律后果,由行为人自行承担;作者/教学方不对此承担任何直接、间接或连带责任。

适用范围:

本声明适用于课程文本、视频、实验环境及衍生的所有教学资料。

学习者通过任何渠道获取本课程内容,即视为已阅读并同意本声明全部条款。

特别提示:网络空间非法外之地,请严格遵守技术伦理与法律红线。


安装教程

基础环境:

操作系统:kali-linux-2024.4-vmware-amd64

DVWA地址:https://github.com/digininja/DVWA

终端中执行:

sudo bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh)"

DVWA攻略视频

作者是跟着这个学习视频做的题目和教程(视频非本作者制作):https://www.bilibili.com/video/BV1SG411h7BR


此攻略较长,一共是17个学习内容(实际16个,最后一个没什么意思),每个又有三种难度,因此攻略分为5部分。


Brute Force(暴力破解)

Low:

( 首先看一下目的 ) 通过字典攻击爆破管理员的密码:

再看一下源码:

打开Brup pro工具 Proxy —> Intercept —> Open BrowserIntercept 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接着点击addpassword中的123 也是一样。

点击PayloadsPayload set这里的1就是之前选的用户名,在下方的Payload Options [simple list] 中的输入框中输入admin 然后点击Add

Payload set选择2,也就是之前选的密码,在下方的Payload Options [simple list] 中点击Load ... 选择字典2017_top100.txt

https://github.com/k8gege/PasswordDic

github的链接可能加载不出来,我这里放地址:https://github.com/k8gege/PasswordDic

点击 Start attack 开始攻击

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

Medium:

先看以下源码:

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

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

High:

先看一下源码:

在上个基础上添加了Token的校验,还有如果密码不对将随机等待03

这一关在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 BrowserIntercept 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&#95;new" value="123" />
        <input type="hidden" name="password&#95;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:

先看一下源码:

没做成功,新版本的浏览器规则貌似并允许使用解这道题的答案,如果你能做出来,请让我学习学习!


攻略一到此结束,下一期这周末更新