解析漏洞与文件上传漏洞

作者: 原来是老王 | 来源:发表于2018-12-25 19:09 被阅读1次


    前言

    文件上传是很常用的功能点,如:上传头像、上传附件、保存文件等,文件上传漏洞的思想很简单,即可以将包含恶意代码的文件上传到服务器,并且能够解析执行,从而实现getshell。

    首先,本文将介绍如何解析执行文件以及已知的一些解析漏洞;

    然后,本文将讲解常见文件上传漏洞的防御方式以及绕过方法;

    最后,本文会提供修复文件上传漏洞的建议。

    解析&解析漏洞


    Apache默认解析的后缀名

    FilesMatch ".+\.ph(p[3457]?|t|tml)$">

    IIS默认解析的后缀名

    IIS6.0

    .asp .asa .cer .cdx

    通过aspnet_isapi.dll解析

    Tomcat默认解析的后缀名

    <servlet-mapping>

            <servlet-name>jsp</servlet-name>

            <url-pattern>*.jsp</url-pattern>

            <url-pattern>*.jspx</url-pattern>

    </servlet-mapping>

    IIS解析漏洞

    IIS6.0:*.asa或*.asp格式的目录下的任意文件会被IIS当作asp文件来解析

    IIS6.0:当文件名为*.asp;1.jpg类型的格式时,会被IIS当做ASP脚本执行

    顺带提一下,当开启WebDav拓展,并且只是PUT、Move、Copy、Delete等方法时,可被上传恶意脚本

    OPTIONS查看支持的方法

    PUT上传文件

    Move或Copy修改文件名

    Apache解析漏洞

    Apache 1.x & 2.x:当Apache遇到不认识的后缀名时,如:1.php.xx,会从后往前依次尝试解析,直到发现认识的php后缀名,遂当做PHP脚本解析。(apache认识的后缀名储存在/etc/mime.types)

    Nginx解析漏洞

    (PHP CGI解析漏洞):http://ultramangaia.cn/gg.jpg,在这个网址后面加上1.php,即http://ultramangaia.cn/gg.jpg/1.php,会被解析成PHP脚本。(php.ini文件中cgi.fix_pathinfo开启时/此漏洞也可能会出现在IIS7.0、IIS7.5、Lighttpd等,因为是PHP CGI的问题)

    空字节:http://ultramangaia.cn/gg.jpg,在这个网址后面加上%00.php,即http://ultramangaia.cn/gg.jpg%00.php会导致解析为PHP脚本

    nginx 0.5.*

    nginx 0.6.*

    nginx 0.7 <= 0.7.65

    nginx 0.8 <= 0.8.37

    文件上传漏洞防御及绕过方法

    客户端校验

      JavaScript 检查后缀名

      绕过:Burp Suite 改后缀名

    服务端校验

      文件头content-type字段校验(eg. image/gif)

      绕过:修改content-type字段

      文件头校验(eg. GIF89a)

      绕过:生成图片马绕过

      后缀名黑名单/正则黑名单

      绕过:黑名单覆盖不全时,可换后缀名绕过

      绕过:大小写绕过

      后缀名白名单/正则白名单

    其他特性利用

    Windows环境的奇葩规则,如会自动去掉不符合规则符号后面的内容

    gaia.php[空格]

    gaia.php.

    gaia.php:1.jpg    (注:生成的文件内容是空白的)

    gaia.php::$DATA

    gaia.php::$INDEX_ALLOCATION (注:生成文件夹)

    gaia.php::$DATA.jpg  (注:生成0.jpg)

    gaia.php::$DATA\aaa.jpg (注:生成aaa.jpg)

    上传.htaccess改变解析方式

    AddType application/x-httpd-php xxx

    会将xxx后缀的文件,用PHP解析

    或者

    <FilesMatch "shell.jpg">

      SetHandler application/x-httpd-php

    </FilesMatch>

    会将shell.jpg用PHP解析。

    文件上传漏洞修复建议

    白名单机制

    强行重命名为特定后缀名

    检查文件内容

    文件保存随机的文件名,在数据库中映射后缀,返回时,设置Content-Type

    隐藏文件路径

    文件路径在web目录之外,不能直接访问到

    将上传的文件保存到OSS(阿里云)

    相关文章

      网友评论

        本文标题:解析漏洞与文件上传漏洞

        本文链接:https://www.haomeiwen.com/subject/pmhqlqtx.html