文件上传漏洞

落花浮王杯 提交于 2020-03-10 12:41:41

1、漏洞简介

  文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得执行服务器端命令的能力

2、满足条件

  • 上传的文件能够被web容器解释执行,文件上传后所在的目录是web容器所覆盖到的路径
  • 用户能够从web上访问这个文件
  • 用户上传的文件若被安全检查,格式化,图片压缩等功能改变了内容,也可能导致攻击不成功

3、文件上传导致的安全问题

  • 上传文件是web脚本语言,服务器的web容器解释并执行了用户上传的脚本,导致代码执行
  • 上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为
  • 上传的文件是病毒,木马文件,黑客用于诱骗用户或者管理员下载
  • 上传的文件是钓鱼图片或包含了脚本的图片,在某些版本的浏览器中会被当作脚本执行,用于钓鱼和欺诈

4、文件上传检测方法及绕过

  • 前端检测:直接使用浏览器F12上的设置禁用
  • 文件类型检测:使用Burp抓包,修改文件文件类

     

 

 

 

  •  文件后缀检测

    a.00截断绕过

    

    b.大小写绕过:Php,pHp,PHp

    c.双重后缀名:shell.jpg.php

    d.黑名单绕过:通过上传不受欢迎的php扩展来绕过黑名单,例如:pht,phpt,phtml,php3,php4,php5,php6

    e.文件解析规则绕过:上传 .htaccess 规则解析文件

    .htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者    目录的访问、禁止目录列表、配置默认文档等功能。

    先上传一个.htaccess文件,内容为:AddType application/x-httpd-php .aaa。如下:

  

 

 

   然后再上传文件后缀为.aaa的文件,让其解析为php类型文件。

  

    f.配合文件包含漏洞使用:上传图片马,然后使用文件包含漏洞执行图片里的代码,(在我上一篇博客里有详细介绍)

    h.配合解析漏洞使用

  • 文件头检测:有些应用会通过判断上传文件的文件头来验证文件类型

   JPG:FF D8 FF E0 00 10 4A 46 49 46

   PNG:89 50 4E 47 0D 0A 1A 0A

5、如何防御文件上传漏洞

  • 文件上传的目录设置为不可执行
  • 判断文件类型
  • 使用随机数改写文件名和文件路径
  • 单独设置文件服务器的域名

6、解析漏洞

  • 【IIS 5.x/6.0】

  目录解析:在网站下建立文件夹的名称中带有.asp、.asa等可执行脚本文件后缀的文件夹,其目录内的任何扩展名的文件都被IIS当作可执行文件来解析并执行。

http://www.xxx.com/xx.asp/xx.jpg

 

 

  文件解析:在IIS6.0下,分号后面的不被解析,也就是说xx.asp;.jpg将被当做xx.asp解析并执行。

http://www.xxx.com/xx.asp;.jpg

 

  IIS6.0 默认的可执行文件有asp、asa、cer、cdx四种。

 

  • 【IIS 7.0/IIS 7.5/ Nginx <0.8.3畸形解析漏洞】

  在默认Fast-CGI开启状况下,访问以下网址,服务器将把xx.jpg文件当做php解析并执行。

http://www.xxx.com/xx.jpg/.php

  • 【Nginx <8.03 空字节代码执行漏洞】

  影响范围:Nginx0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37,访问以下网址,服务器将把xx.jpg文件当做php解析并执行。

http://www.xxx.com/xx.jpg%00.php

  • 【Apache解析漏洞】

  Apache对文件解析是从右到左开始判断解析,如果文件的后缀为不可识别,就再往左判断,解析。

  如xx.php.owf.rar,由于Apache无法解析rar和owf后缀,但能够解析php后缀,因此Apache会将xx.php.owf.rar当做php格式的文件进行解析并执行。
  访问以下网址,服务器将把xx.php.owf.rar文件当做php解析并执行。

http://www.xxx.com/xx.php.owf.rar

 

  • 【CVE-2013-4547 Nginx解析漏洞】

  访问以下网址,服务器将把xx.jpg文件当做php解析并执行。

http://www.xxx.com/xx.jpg(非编码空格)\0.php

  • 【使用.htaccess将任意文件作为可执行脚本解析】

  如果在Apache中.htaccess可被执行.且可被上传.那可以尝试在.htaccess中写入:

1 //这将把目录下的所有后缀为jpg的文件当做可执行的php脚本进行解析并执行。
2 <FilesMatch ".(jpg)$"> SetHandler application/x-httpd-php </FilesMatch>
3 
4 //上传后缀为.aaa的文件,让其做为php类型文件进行解析
5 AddType application/x-httpd-php .aaa

 

参考链接:https://www.freebuf.com/column/227315.html
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!