文件上传漏洞利用

发布于:2025-07-21 ⋅ 阅读:(14) ⋅ 点赞:(0)

一、绕过客户端检测

客户端检测是利用JavaScript代码对上传的文件进行判断,因此禁用掉JavaScript即可绕过检测上传Webshell。

一、绕过服务端检测

1.绕过MIME类型检测

修改MIME类型为合法类型即可,一般为图片类型。
在这里插入图片描述

2.绕过后缀名检测

(1)绕过黑名单后缀名检测

1) 解析后缀绕过

修改后缀名即可,如php3、php5等。
在这里插入图片描述

2) 配置文件+图片绕过
  1. 先上传.htaccess文件。
    在这里插入图片描述

在这里插入图片描述

  1. 然后上传php文件,抓包,修改为对应名称即可。
    在这里插入图片描述
3)点空格点绕过

利用Windows系统的文件名特性,会自动去掉后缀名最后的.,上传tset.php. .进行绕过。
在这里插入图片描述

4)后缀大小写绕过

利用Windows对大小写不敏感的特性。上传as.PHP进行绕过。
在这里插入图片描述

5)空格绕过

在文件名后面增加空格。
在这里插入图片描述

6)点绕过

在文件名后添加.。
在这里插入图片描述

7)::$DATA绕过

::$DATA是Windows系统中用于存储文件实际数据的隐藏属性,它对于普通用户来说是透明的,只有系统和特定程序才能访问和使用它。
在这里插入图片描述

8)双写后缀绕过

在这里插入图片描述

(2)绕过白名单后缀名检测

由于白名单限制较大,为确保可行,以下是环境配置:

phpStudy2018
php版本5.2.17
php.ini的magic_quotes_gpc的值为Off
php.ini的;extension=php_exif.dll修改为extension=php_exif.dll
httpd.conf的#AddType application/x-httpd-php .php去掉井号注释并添加.phtml

1)%00截断绕过

在这里插入图片描述

2)0x00截断绕过
  1. 添加文件名和一个空格。
    在这里插入图片描述
  2. 找到上图位置,把20改为00并回车。
    在这里插入图片描述

3.绕过文件内容检测

(1)图片马绕过

图片马可理解为在图片里加入木马。

  1. 打开cmd,执行以下命令,制作图片马。
    在这里插入图片描述

  2. 将文件上传后可以发现文件内容的php代码还在。
    在这里插入图片描述

  3. 再配合文件包含漏洞进行利用。

(1)绕过二次渲染

用正常的图片马上传发现文件里的php代码消失了,并且图片看起来也没有任何的变化,说明它在不改变图片原内容的情况下,重新制作了图片。那么就应该找到那个没有改变的地方,并插入木马。

  1. 上传一张gif图片,然后再将图片下载下来,比较两张图片的差异。在相同的地方插入php代码并重新上传即可。

四、其他绕过方式

1.条件竞争绕过

  1. 准备一个php文件,内容为:
<?php fputs(fopen('shell.php', 'w'), "<?php phpinfo();?>");?>
  1. 上传该文件并抓包,对该请求包进行重放,也可以使用Burp Suite的Null payloads进行爆破。
    在这里插入图片描述

  2. 并同时访问该文件,也可以用爆破的方式,出现状态码200说明访问到该文件。

  3. 访问新生成的php文件。

2.条件竞争+解析漏洞绕过

由于是白名单验证,因此只能上传符合白名单的文件。再配合Apache的解析漏洞,在Apache版本符合条件下,对mime.types中没有涉及的文件后缀不会解析,查看httpd.conf文件下的mime.types,没有发现7z后缀,说明不会解析7z文件,比如test.php.7z这个文件,Apache的解析是从后往前,当7z不能解析时,其向前解析一直到可以解析的后缀为止,所以将test.php.7z当作test.php执行。

  1. 首先上传test.php.7z然后抓包,并对该请求包进行多次的重放。
  2. 访问test.php.7z并进行多次重放。
  3. 成功生成info1.php。

3.绕过move_uploaded_file

实际上是绕过黑名单验证


网站公告

今日签到

点亮在社区的每一天
去签到