谈一谈文件上传漏洞

Admin 2020-03-22 233人围观 ,发现0个评论 文件上传漏洞上传漏洞

0x01 文件上传漏洞概念

由于文件上传功能实现代码没有严格限制用户上传的文件后缀、文件头、文件内容等,导致允许攻击者向某个可通过Web访问的目录上传任意脚本文件(jsp/php/asp等),并能够姜这些文件传递给服务器解释执行,最终可以在远程服务器上执行任意代码脚本,进而控制WEB服务器。

0x02 客户端漏洞

    1. 客户端源代码检测

    2. 户端js脚本检测

    客户端绕过:

  • 自己写客户端进行提交,绕过javascript检查

  • Burpsuit抓包改包上传,绕过javascript检查

0x03 服务器端漏洞

    1. 无检测:

  • 直接上传

    2. PUT上传

  • 使用BurpSuit抓包修改数据包上传

谈一谈文件上传漏洞 Web安全 第1张

    3. MIME检测(是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。)

常见MIME类型:超文本标记语言文本.html   text/html普通文本.txt               text/plain
PNG图像.png              image/png
GIF图像.gif                image/gif
JPEG图形.jpeg,.jpg          image/jpeg
au声音文件.au             audio/basic
AVI文件.avi                video/x-msvideo
GZIP文件.gz                application/x-gzip
TAR文件.tar                application/x-tar任意的二进制数据          application/octet-stream

谈一谈文件上传漏洞 Web安全 第2张

    4. 黑名单检测绕过

  • 文件名大小写绕过

例如 test.Php、test.pHp
  • 黑名单列表绕过

例如 asp网站可以尝试上传asa、cer之类后缀的木马也可以执行php网站可以尝试上传php3、php4、php5、phtml之类后缀的木马也可以执行jsp 网站可以尝试上传jspx、jspf之类后缀的木马也可以执行
  • 特殊文件名

文件名使用非字母数字例如 test.asp.、test.asp (空格)
  • .htaccess文件

Apache 服务器的目录配置文件.htaccess提供针对每个目录改变的配置的方法,即在一个特定的目录放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录

上传.htaccess文件将jpg格式文件以php执行:<FilesMatch "\.jpg">
    SetHandler application/x-httpd-php</FilesMatch>

将文件名中带zj文件全部以以php执行:
<FilesMatch "zj">
    SetHandler application/x-httpd-php</FilesMatch>
  • Apache 解析漏洞

此漏洞版本包括:Apache 2.2.11、Apache 2.2.17、Apache 2.2.6、Apache 2.0.59、Apache 2.2.8
Apache认为一个文件可以拥有多个扩展名,哪怕没有文件名,也可以拥有多个扩展名。Apache认为应该从后到前开始判断解析。如果最后面的扩展名为不可识别的,就继续往前判断,直到判断到文件名为止。

例如 test.php.111 会当作php执行

     5. 白名单检测绕过

  • 双文件上传

一般找到上传点审查元素

谈一谈文件上传漏洞 Web安全 第3张

修改后上传文件,第一个需要正常图片,否则上传不成功

  • 0x00截断

 谈一谈文件上传漏洞 Web安全 第4张

将 20 改为 00

谈一谈文件上传漏洞 Web安全 第5张

  • IIS解析漏洞

        1)目录解析

在网站下建立名为asp、asa的文件夹,期目录内的任何扩展名的文件夹都被IIS当作asp文件来解析并

执行。可以通过控制上传文件夹路经,上传正常后缀进行上传绕过

例如 /xx.asp/xx.jpg

          2)文件解析

在IIS6.0下,分号后面的文件扩展名不被解析,也就是说xx.asp;.jpg会被服务器看成是xx.asp,还有IIS6.0

默认的可执行文件除了asp还包括这三种 /xx.asa、/xx.cer、/xx.cdx

例如 xx.asp;.jpg
IIS7.0/7.5 在访问http://127.0.0.1/1.jpg时在后面加上/.php就会以php方式去解析。漏洞出自php-cgi的漏洞。
  • Nginx解析

在默认Fast-CGI开启状况下,上传一个名字为xx.jpg,内容为

<?php fputs(fopen(‘shell.php’,’w’),’<?php eval($_POST[cmd])?>’);?>

访问xx.jpg/.php,在这个目录下就会生成一句话木马shell.php

<?php eval($_POST[cmd]);?>
  • 目录路径检测

        1)0x00、%00截断

谈一谈文件上传漏洞 Web安全 第6张

  • 文件头检测

        1)GIF文件头检测

在文件头写GIF89a

谈一谈文件上传漏洞 Web安全 第7张


  • 文件内容检测

        1)图片拼接

Copy /b 1.gif+2.php 3.gif

文件头格式与文件名后缀名格式一致才能正常打开

    6. 配合文件包含漏洞

一段index.php代码If ($_GET[‘func’]){
	 Include $_GET['func'];}else{
	 Include 'default.php';}

程序的本意可能是当提交http://example.com/index.php?func=add.php时,调用add.php里面的样式内容和功能。直接访问http://example.com/index.php则会包含默认的default.php
如果提交http://example.com/index.php?func=upload/pic/evil.jpg,且evil.jpg是黑客在图片末尾添加了恶意的php代码上传到服务器上的一个图片,那么恶意代码就会被引入当前文件执行。

0x04 其他

    1. 后台修改文件

    2. Tomcat WAR包上传

    3. 编辑器漏洞

    4. 竞争条件攻击


些网站上传文件的逻辑是先允许上传任意文件,上传后再检测是否有webshell,问题就是文件上传成功后

和删除文件之间存在一个时间差,可以利用这个时间差进行攻击。攻击者上传一个webshell脚本,作用是生

成一个新的webshell脚本,当第一个webshell脚本上传成功后,立即对其访问,使其生成shell。



一个不错的文件上传靶场:https://github.com/c0ny1/upload-labs


请发表您的评论
请关注微信公众号
微信二维码
不容错过
Powered By 蚁人博客