Web安全

upload-labs(Pass03)

2020-03-25  本文已影响0人  六亲不认的步伐

本次搭建upload-labs靶机进行File Upload测试


测试项目:Pass03[后缀名过滤之黑名单(1)]

测试介绍:此靶机主要练习 文件上传技能与代码审计技能

Pass03上传界面与源代码

拿到题目后,第一步先依旧是代码进行审计

PHP代码审计

根据图中1处 可以发现声明了一个后缀名数组

根据图中2处 发现去除 ::$DATA,从而防止通过 ::$DATA绕过

此处关于::$DATA是利用Windows流特性绕过
对于Windows数据流,自己又查阅了NTFS数据流及高级文件隐藏

根据图中3处 通过匹配后缀名是否存在黑名单数组内(关键处)

根据图中4处 通过匹配验证后,对文件名称进行重新命名,加入随机数和时间戳拼接组成新名称


方法1.利用版本兼容性后缀名继续进行上传,例如.php2;.php3;.php4;.php5;.php6

原理:php3代表php 3.x版本,利用php向下兼容特点进行绕过测试。

php3后缀名绕过验证
成功上传php3后缀名文件,但是在执行时,未成功解析php3文件(本机配置原因),效果如下图
未成功执行.php3文件里的php代码
对于未成功执行.php3文件,通过查阅资料可以发现需要在配置文件对.php3文件进行解析为.php从而引出控制文件.htaccess来可以实现对该文件解析。
扩展:除了php可以利用篡改可解析的后缀名其他类型文件也可以篡改
.asp .aspx .jsp
.asa .ashx .jspx
.cer .asmx .jspf
.cdx .ascx

方法2.利用系统特性进行绕过

Linux与Windows系列操作系统不同之处:对大小写敏感不同,Linux对大小写区分严格,所以在Linux系统下可通过例如.pHp等进行绕过。
由于自己搭建环境是Windows该方法行不通,效果如下图

Windows系统环境下将pHp拦截

后记:对于该关卡,自己尝试过利用Apache自身缺陷 使用1.php.rar方法进行绕过上传,成功上传但是由于存在随机数对文件名重命名导致存储为.rar压缩文件。


存储为压缩文件.rar格式

第一篇:upload-labs(Pass01)
第二篇:upload-labs(Pass02)
第四篇(存在遗留问题):upload-labs(Pass04)

上一篇下一篇

猜你喜欢

热点阅读