文件上传绕过方式总结
文章目录
前端过滤绕过
1.后缀名过滤
2.MIME文件类型过滤
-
使用F12禁用或修改Javascript(可能会影响原本页面正常的功能)
-
使用BurpSuite抓包修改Content-Type字段值和文件后缀名
黑名单绕过
1.等价扩展名
语言 | 等价扩展名 |
---|---|
asp | asa, cer, cdx |
aspx | ashx, asmx, ascx |
php | php2 php3 php4 phps phtml |
jsp | jspx jspf |
利用前提: 使用php2 phtml等需要修改配置文件,添加解析类型
2.双写绕过
如pphphp,将php替换为空后剩下的字符也会组合成php
3.大小写绕过
4.点绕过
5.空格绕过(仅Windows环境下)
6.点空格点绕过
7…htaccess文件绕过
利用前提:
AllowOverride = All
,mod_rewrite
模块开启
在.htaccess中写入
SetHandler application/x-httpd-php //当前目录下的所有文件都会被当成php的代码来解析
上传.htaccess文件,再上传其他文件即可被当作php执行
8.apache解析机制绕过
例如上传shell.php.jjj,jjj后缀名无法解析,因此shell.php.jjj会被当做shell.php解析
9.::$DATA绕过(仅Windows环境下)
使用::$DATA
不会检测其后缀名,且保持::$DATA
之前的文件名。例如:shell.php::$DATA
会被解析为shell.php
白名单绕过
1.%00截断
截断条件:
php版本<5.3.4且magic_quotes_gpc=off
,上传路径可控
例如上传shell.jpg,在上传路径/upload/后加上shell.php%00,最终会被处理成/upload/shell.php/.jpg,/后的内容被忽略
2.文件包含+图片马绕过
有文件包含漏洞时,制作图片马(图片马的制作方法在文末)上传,然后通过解析漏洞拿到shell
需要根据服务器代码对图片的检测方式灵活多变,例如有些只检查文件开头几个字节
3.条件竞争绕过
原理:服务器处理逻辑有问题,例如如下代码
$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
$ext_arr = array('jpg','png','gif');
$file_name = $_FILES['upload_file']['name'];
$temp_file = $_FILES['upload_file']['tmp_name'];
$file_ext = substr($file_name,strrpos($file_name,".")+1);
$upload_file = UPLOAD_PATH . '/' . $file_name;
if(move_uploaded_file($temp_file, $upload_file)){
if(in_array($file_ext,$ext_arr)){
$img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;
rename($upload_file, $img_path);
$is_upload = true;
}else{
$msg = "只允许上传.jpg|.png|.gif类型文件!";
unlink($upload_file);
}
}else{
$msg = '上传出错!';
}
}
问题在于,先将文件上传到服务器后,才进行白名单判断、移动、重命名等相关操作。
因此只要上传路径可知,就可以利用文件上传到服务器还未进行操作的这个间隙,访问到我们上传的原始文件。
图片马制作
1.文本方式或十六进制打开图片,直接插入代码
2.cmd中输入如下命令
copy 1.jpg/b + 2.php/a shell.php
3.在shell.php中添加文件头、文件尾
常见图片文件头文件尾:
文件类型 | 后缀 | 文件头 | 文件尾 | 标志 |
---|---|---|---|---|
JPEG | .jpg/.jpeg | FFD8FF | FFD9 | JFIF |
PNG | .png | 89504E47 | AE426082 | PNG IEND IHDR |
GIF | .gif | 47494638 | 003B | GIT9a |
TIFF | .tif/.tiff | 49492A00 | 4D4D2A00 | - II MM |
本人学习记录,欢迎各位大佬指正
注:
以上仅供学习交流,未用于非法用途。