文件上传漏洞-黑名单检测

本文讲述了在代码文件中使用黑名单检测来识别非法字符或字符串的过程,以及如何通过构造文件后缀、htaccess文件和点/空格绕过等技巧来检测和绕过这种检测。作者详细介绍了几种常见的绕过方法,如后缀双写、大小写、图片+配置文件,以及点和空格在绕过黑名单中的应用。
摘要由CSDN通过智能技术生成

黑名单检测

一般情况下,代码文件里会有一个数组或者列表,该数组或者列表里会包含一些非法的字符或者字符串,当数据包中含有符合该列表的字符串时,即认定该数据包是非法的。
如下图,定义了一个数组$deny_ext = array('.asp','.aspx','.php','.jsp');
然后有一个判断语句如果后罪名为数组里面的几个就不允许上传

如何确认是否是黑名单检测

黑名单是有限的,可以随意构造一个文件后缀,如果可以上传,则说明是黑名单检测,反之,为白名单检测。比如上传一个php后缀的文件,发现不允许上传,接下来就是去判断检测方式。
随意构造一个文件后缀,比如将1.php改为1.aaa发现可以上传,说明是基于黑名单检测

绕过技巧

1. 后缀双写绕过
2. 后缀大小写绕过
3. 其它可解析后缀绕过
4. 图片+配置文件绕过
。。。

其它可解析后缀绕过

PHP:
php2php3php5phtmlpht(是否解析需要根据配置文件中设置类型来决定)
ASP:asacercdx
ASPX:ascxashxasac
JSP:jspxjspf

Pass-03

方法1
更改 Apache 的配置项 AddType application/x-httpd-php .php .phtml ,然后上传 .phtml 文件
在实战中是不可以修改的,如果服务器本身就设置了这项那么我们可以利用。这里只是了解一下原理。
一般会将这一项注释掉,我们打开后,可以添加指定后缀,这样服务器就会将指定后缀的文件当做php文件解析
更改后将phpstudy服务重启即可,我们将post.php后缀修改为phtml发现上传成功。接下来就可以利用工具进入服务器
方法2
抓包,双写 ::$DATA
window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,它的目的就是不检查后缀名
例如:"phpinfo.php::$DATA" Windows会自动去掉末尾的::$DATA变成"phpinfo.php
我们查看源代码可以发现这么一个变量
网站有所防御,会清除::$DATA,防止我们利用::$DATA绕过监测后缀名。
服务器是从第一个字符开始匹配::$DATA,比如第一个从:开始,只有后面完全匹配::$DATA,才会清除,那么我们就可以利用双写::$DATA。那么到底如何双写呢。
1.::$DATA::$DATA,这种写法明显不对,因为第一次开始匹配,发现一个::$DATA清除后,还会继续匹配发现还是::$DATA那么就都会清除掉。
2.::$::$DATADATA,开始匹配,匹配到::$以后下一个应该是字母D但是下一个是:则会认为不是,那么就开始从第二个:同理,知道匹配到中间的::$DATA,会将这个清除掉,然后会接着从下一位开始匹配也就是D开始第一个就匹配失败,那么继续往后,后面都不是从:开始。所以最后就留一下了一个::$DATA。这样就达成了我们的目的
开始抓包
在这里双写,然后放包会发现.php文件上传成功
访问图像链接,将::$data去掉再次访问
可以看到一句话木马上传成功

图片+配置文件绕过

Pass-04

.htaccess 文件(或者分布式配置文件,全称是HypertextAccess(超文本入口)。提供了针对目录改变配置的方法。它里面可以存放Apache服务器配置相关的指令。
.htaccess
<FilesMatch "as.png">
setHandler application/x-httpd-php
</FilesMatch>
通过一个.htaccess 文件调用 php 的解析器去解析一个文件名中只要包含"as.png"这个字符串的任意文件,所以无论文件名是什么样子,只要包含"as.png"这个字符串,都可以被以 php 的方式来解析,一个自定的.htaccess 文件就可以以各种各样的方式去绕过很多上传验证机制。
也可以使用以下方式:
先上传 .htaccess 文件,内容如下
SetHandler application/x-httpd-php(这个万能)
或者
AddType application/x-httpd-php jpg
再上传一句话木马 shell.txt 或者 shell.jpg 文件
解题过程
可以看到这关的源代码添加了更多的黑名单。我们再想通过其他后缀解析php文件就比较困难,那么就用到了.htaccess 文件,先编辑好上传
之所以可以使用 .htacces文件是因为这关源代码中不会随机更改文件名
而第三关会将上传厚的文件随机更改名字这样就会让 .htacces文件失效
上传好 .htaccess 文件后再上传一个.png的文件,直接将一句话木马文件后缀改成这个。 .htaccess 文件的作用是将任何文件当成php文件进行解析
发现上传成功,使用中国蚁剑进行连接也成功了

点和空格绕过

pass-4

由于删除点和首尾去空这些验证只是一次性,所以我们可以进行 点和空格绕过
bp抓包绕过 这里我们上传post.php文件,然后bp抓包修改为1.php. .这里是点+空格+点。然后放包
可以看到删除点和去空后还剩下一个点,且文件成功被解析

pass-5

查看源代码发现将.htaccess文件也列入黑名单
那么利用点和空格绕过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

捞虾米

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

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

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

打赏作者

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

抵扣说明:

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

余额充值