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

    文件上传

    文件类型检测绕过

         更改请求绕过

          有的站点仅仅在前端检测了文件类型,这种类型的检测可以直接修改网络请求绕过。 同样的,有的站点在 
          后端仅检查了HTTP Header中的信息,比如 Content-Type 等,这种检查同样可以通过修改网络请求绕 
          过。

         Magic检测绕过

              有的站点使用文件头来检测文件类型,这种检查可以在Shell前加入对应的字节以绕过检查。几种常见的文件类型的头字            节如下表所示

    后缀

    文件头

    JPEG (jpg)

    FFD8FF

    PNG (png)

    89504E47

    GIF (gif)

    47494638

    TIFF (tif)

    49492A00

    Windows Bitmap (bmp)

    424D

    CAD (dwg)

    41433130

    Adobe Photoshop (psd) 

    38425053

    Rich Text Format (rtf)

    7B5C727466

    XML (xml)

    3C3F786D6C

    HTML (html),文件头:

    68746D6C3E

    Email [thorough only]

    44656C69766572792D646174653A

    Outlook Express (dbx)

    CFAD12FEC5FD746F

    Outlook (pst)

    2142444E

    MSWord/Excel(xls.or.doc)

    D0CF11E0

    MS Access (mdb)

    5374616E64617264204A

    WordPerfect (wpd)

    FF575043

    Adobe Acrobat (pdf)

    255044462D312E

    Quicken (qdf)

    AC9EBD8F

    Windows Password (pwl)

    E3828596

    ZIP Archive (zip)

    504B0304

    RAR Archive (rar)

    52617221

    Wave (wav)

    57415645

    AVI (avi)

    41564920

    Real Audio (ram)

    2E7261FD

    Real Media (rm)

    2E524D46

    MPEG (mpg)

    000001BA

    MPEG (mpg)

    000001B3

    Quicktime (mov)

    6D6F6F76

    Windows Media (asf)

    3026B2758E66CF11

    MIDI (mid)

    4D546864

         后缀绕过

          部分服务仅根据后缀、上传时的信息或Magic Header来判断文件类型,此时可以绕过。 php由于历史原 
          因,部分解释器可能支持符合正则 /ph(p[2-7]?|t(ml)?)/ 的后缀, 
          如 php / php5 / pht / phtml 等 可在禁止上传php文件时测试该类型。 
          jsp引擎则可能会解析 jspx / jspf / jspa / jsw/ jsv / jtml 等后缀,
          asp支持 asa / asax / cer / aspx / ascx / ashx / asmx 等后缀。

         系统命名绕过

          在Windows系统中,上传``index.php.``会重命名为``.``,可以绕过后缀检查。 
          也可尝试 index.php ``,``index.php:1.jpg index.php::$DATA 等。 
          在Linux系统中,可以尝试上传名为 index.php/. 或 ./aa/../index.php/. 的文件  

          .user.ini

          在php执行的过程中,除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 
          文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 
          PHP 文件在 web 根目录之外,则只扫描该目录。 .user.ini 中可以定义除了PHP_INI_SYSTEM以外的模 
          式的选项,故可以使用 .user.ini 加上非php后缀的文件构造一个shell,比 
          如 auto_prepend_file=01.gif 。

    WAF绕过

          有的waf在编写过程中考虑到性能原因,只处理一部分数据,这时可以通过加入大量垃圾数据来绕过其处理 
          函数。 另外,Waf和Web系统对 boundary 的处理不一致,可以使用错误的 boundary 来完成绕过。

           竞争上传绕过

          有的服务器采用了先保存,再删除不合法文件的方式,在这种服务器中,可以反复上传一个会生成Web 
          Shell的文件并尝试访问,多次之后即可获得Shell。

    攻击技巧

           Apache重写GetShell

          Apache可根据是否允许重定向考虑上传.htaccess
          内容为
               AddType application/x-httpd-php .png
               php_flag engine 1
          就可以用png或者其他后缀的文件做php脚本了

          软链接任意读文件

          上传的压缩包文件会被解压的文件时,可以考虑上传含符号链接的文件 若服务器没有做好防护,可实现任 
          意文件读取的效果

    防护技巧

          #使用白名单限制上传文件的类型
          #使用更严格的文件类型检查方式
          #限制Web Server对上传文件夹的解析

    参考链接

                  构造优质上传漏洞Fuzz字典

  • 相关阅读:
    圣战 [奇环, 树上差分]
    花火之声不闻于耳 [线段树]
    SP2878 KNIGHTS
    P5300 [GXOI/GZOI2019]与或和 [单调栈]
    Speike [线段树, 动态规划]
    Jerry [动态规划]
    JSON对象
    正则书写
    flex布局实践
    数组对象的深拷贝与浅拷贝
  • 原文地址:https://www.cnblogs.com/qingwuyou/p/10687456.html
Copyright © 2011-2022 走看看