基础知识
上传文件,使用burp抓包,会出现如下两种情况:
- ①若burp抓到请求包:
- 则说明存在服务端检测,
- 可通过修改数据包中文件的content-type 类型、修改filename为.htaccess、添加文件头GIF89a,等操作进行绕过。
- ②若burp未抓到请求包:
- 则说明存在前端检测,
- 需禁用浏览器JavaScript后再重新抓包绕过。
1.在前端校验
- 绕过方式:在浏览器中禁用JavaScript直接用Burp重命令后发送注册请求
- 修改文件名绕过(.jpg → .php)
- 注意:虽可以在前端禁用JavaScript代码执行,但不建议这么做,因为前端页面中可能还存在很多JS的功能全部都可能被禁用。
2.在后端校验
- 绕过方式:
- 大小写转换(.php → .PhP)
- 使用Burp修改
content.type
后绕过
3.upload-labs
靶场环境绕过方式提醒
前端绕过
类型绕过
黑名单绕过
大小写绕过
图片马包含
空格绕过
点绕过
点空格点绕过
双写绕过
条件竞争
Windows专用
Apache解析机制
dvwa
pikachu
靶场实战
upload-labs:http://127.0.0.1/uploadlabs
Pass-01-前端JS检查
【提示】本pass在客户端使用js对不合法图片进行检查!
- 三种方法:
- 前端禁用JS
- 修改后缀,通过Burp上传改回后缀
- 部分浏览器可直接修改前端代码
Pass-02-只验证Content-type
【提示】本pass在服务端对数据包的MIME进行检查!
- 方法:
- 上传shell.php,抓包修改content-type为图片类型:
- image/jpeg,image/png,image/gif
- 上传shell.php,抓包修改content-type为图片类型:
Pass-03-黑名单绕过
【提示】本pass禁止上传.asp|.aspx|.php|.jsp后缀文件!
黑名单:禁止XXX,限制范围有限
白名单:只允许XXX
- 源代码:本关对文件进行了重命名,部分代码如下:(第三行)
if(!in_array($file_ext, $deny_ext)) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
if (move_uploaded_file($temp_file,$img_path)) {
$is_upload = true;
} else {
$msg = '上传出错!';
}
} else {
$msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
}
- 方法:
- 用黑名单不允许上传
.asp .aspx .php .jsp
后缀的文件,但可以上传.phtml .phps .php5 .pht
,前提条件:且还需要后台配置,即在apache的httpd.conf(路径:D:\Tools\phpstudy_pro\Extensions\Apache2.4.39\conf
)中加入如下一条配置命令:AddType application/x-httpd-php .php .phtml .php5
- 用黑名单不允许上传
Pass-04-htaccess绕过
【提示】本pass禁止上传 .php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf 后缀文件!
黑名单拒绝了几乎所有有问题的后缀名,除了.htaccess
标签:文件,后缀,前端,漏洞,file,绕过,php,上传 From: https://www.cnblogs.com/xiaosu23/p/17336710.html