DVWA代码审计

目录

Brute Force爆破

Low

Medium

High

Command Injection

Low

Medium

High

Csrf

Low

Medium

High

File Inclusion

Low

medium

high

File Upload

Low

Medium

High

SQL Injection

Low

Medium

High

Xss

Low

Medium

High


Brute Force爆破

Low

通过get方式获取用户名$user、密码$pass,再对密码进行md5加密,然后进数据库进行查询,没有限制次数,没有过滤,可以暴力破解和sql注入

Sql注入:admin'or'1'='1

Medium

这里使用mysqli_real_escape_string函数来对特殊字符(x00、 、 、、'、"、x1a)进行转义

sleep(2)每运行一次程序休眠2秒,给爆破增加了时间,但依旧可以进行爆破

High

stripslashes()剥离反斜杠字符的函数

增加了token动态令牌的验证

sleep随机0-3秒休眠

high级别主要区别就是过滤了字符串的反斜杠,增加了令牌验证。sleep还是休眠只是增加了爆破的时间,没有限制次数。但还是可以用爆破来解决。

Command Injection

Low

stristr函数,搜索字符串在另一字符串中首次的出现

判断点击按钮submit,得到IP,拼接执行ping xxx,显示结果。无任何过滤。

可以在后面拼接其他命令行代码,如:127.0.0.1&&net user,

echo "<pre>{$cmd}</pre>";直接输出变量cmd的值,这里还存在反射性xss,如:192.168.111.1 && echo "<script>alert(1)</script>"

Medium

过滤了&&和;

依旧存在命令执行漏洞和反射型xss

High

添加了很多黑名单

依旧可以使用127.0.0.1 || whoami或者127.0.0.1 |whoami

Csrf

Low

只是简单的判断输入的两次密码是否相同,在用户身份上面并没有做判断,所以存在csrf漏洞

Medium

用函数stripos匹配了referer

stripos( $_SERVER[ 'HTTP_REFERER' ] ,$_SERVER[ 'SERVER_NAME' ])

此句是判断HTTP_REFERER中是否包含SERVER_NAME

HTTP_REFERER是Referer参数值,即来源地址

SERVER_NAME是host参数及主机ip名

伪造HTTP_REFERER中是包含SERVER_NAME的值即可绕过

High

加了验证token

File Inclusion

Low

直接包含文件,没有做任何的过滤,可以配合../

medium

过滤了字符,将http/https/ ../ / ..\  替换为空,可以双写进行绕过,也可以直接读取操作系统的配置文件

例:http://192.168.111.1/dvwa/vulnerabilities/fi/?page=....//....//....//test.php

http://192.168.111.1/dvwa/vulnerabilities/fi/?page=httphttp://://192.168.111.1/test.php

http://192.168.111.1/dvwa/vulnerabilities/fi/?page=c:\windows\win.ini

high

如果$page 没有匹配到file开头的文件或者include.php就退出

这里我们可以使用file协议来读取文件

http://192.168.111.1/dvwa/vulnerabilities/fi/?page=file:///c:windows/win.ini

http://192.168.111.1/dvwa/vulnerabilities/fi/?page=file:///../../../test.php

File Upload

Low

没有任何过滤,可以上传任意文件

Medium

判断了Content-Type即文件的mime类型,只要Content-Type为image/jpeg或image/png就可以绕过

High

getimagesize(string filename)函数会通过读取文件头,返回图片的长、宽等信息,如果没有相关的图片文件头,函数会报错。可以看到,High级别的代码读取文件名中最后一个”.”后的字符串,期望通过文件名来限制文件类型,因此要求上传文件名形式必须是”*.jpg”、”*.jpeg” 、”*.png”之一。同时,getimagesize函数更是限制了上传文件的文件头必须为图像类型。

首先使用一张真正的图片文件,把后缀名改成txt然后打开,在最后加入一句话木马,配合文件包含使用

SQL Injection

Low

没有做任何过滤,可以直接拼接

Medium

使用了函数mysqli_real_escape_string过滤特殊字符,但是在sql语句拼接中没有使用单引号或者双引号,导致字符型注入

High

在SQL语句后面添加了一个 limit,这种直接可以用注释符将后面的语句注释掉。

Xss

Low

低级别没有过滤用户输入,直接输出用户输入的数据

Medium

可以看到,这里对输入进行了过滤,基于黑名单的思想,使用str_replace函数将输入中的<script>删除,这种防护机制是可以被轻松绕过的,我们利用双写就可以绕过

<sc<script>ript>alert(/xss/)</script>

High

这里通过正则表达式过滤了<script>标签,但是我们可以使用其他标签进行绕过

如:<img src=1 οnerrοr=alert(/xss/)>

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值