本次搭建OWASP靶机进行File Upload测试
测试项目:Bricks
测试介绍:此靶机主要练习 文件上传
-
文件上传主要应用(个人经验,可能不完善,建议大佬们留言提意见)
- 通过文件上传,上传钓鱼页面,挂黑页,挂黄页,甚至结合社会工程获取受害者常去的一些页面利用CSRF漏洞进行修改信息等恶意操作
- 上传自定义动态网站文件(asp,php,jsp,aspx等),举个栗子,上传php文件套取服务器相关重要信息<敏感信息>,利用php函数phpinfo()
<?php phpinfo()?> <!--显示出PHP 所有相关信息-->
此处需要区分,php探针和phpinfo()的关系:phpinfo()可以理解为php探针的一种,只因为代码量小(易上手),从而广泛使用。除了phpinfo()作为探针外,可以采用其他探针 php探针例子引路
- 传说中的一句话木马利用上传接菜刀
目前我认为一般存在上传漏洞时,主要使用此项进行应用----- 个人观点
<?php @eval($_POST[id]);?> <!-- php一句话木马-->
<%execute(request("id"))%> <!-- asp一句话木马-->
<%@ Page Language="Jscript"%>
<%eval(Request.Item["value"])%> <!-- aspx一句话木马-->
其中需要了解
eval函数功能作用
execute函数功能作用
- 上传小马,进而上传大马。由于一句话木马的代码量少,基本不会被文件大小限制,但是相对于大马危害和功能小,所以可以通过小马撕开口子,通过上传配置文件的方法(可能的话,也是一种思路),修改限制上传大小限制。但是一般可以直接通过小马来上传大马,进而获取webshell乃至更大的权限。
测试1:Simple File Upload

查看测试页源码,进行代码审计。

容易发现,两个重要的判断条件。
- upload参数通过POST方式提交,并判断是否有值;
-
将上传的文件移动到指定目录下
结论:这个测试中并未对上传的文件有任何过滤与检查,所以可以直接上传木马进行操作。本次测试,我上传phpinfo进行测试
关键信息获取
测试2:Content type verification File Upload
继续按照测试1的方式进行上传测试,发现上传失败

查看测试页源码,进行代码审计。

容易发现,相对测试1增加了一个关键条>
- 需要对文件的type属性进行白名单匹配<类似按照属性过滤>
$_FILES['myFile']['type']等全局变量详解指路
本质对文件的 MIME类型进行白名单匹配。
MIME为HTTP表单上传属性之一,HTTP MIME引路
结论:在上传时对MIME进行篡改为白名单匹配的即可,一般可通过代理抓包进行实现,当然也可以尝试制作图片马来进行上传
数据包截取与篡改
完成篡改,放行篡改后的数据包成功上传。
测试3:Extension verification File Upload
为了节省时间,直接从代码审计入手

第一眼看到图中的1处,以为可能会对文件后缀名进行限制,但是进行审计判断条件时,貌似并未用到该变量,依旧是通过type属性判断,但不像测试2那么明显{会有存在明显的白名单},变成两个类型的判断。依旧属于MIME绕过上传类型。可以依旧采用改包上传法。
充电站总结
php探针例子引路
eval函数功能作用
execute函数功能作用
$_FILES['myFile']['type']等全局变量详解指路
HTTP MIME引路
文件上传绕过拓展:
由于测试内容偏向基础,对于绕过介绍较少,故进行引路学习
- 客户端javascript 检测(通常为检测文件扩展名)
- 服务端MIME 类型检测(检测Content-Type 内容)
- 服务端目录路径检测(检测跟path 参数相关的内容)、
- 服务端文件扩展名检测(检测跟文件extension 相关的内容)
- 服务端文件内容检测(检测内容是否合法或含有恶意代码)
后记:本人能力有限,难免出现纰漏,若有疑问可进行留言;
网友评论