文件上传漏洞

1.js绕过

  当用户在客户端选择文件点击上传的时候,客户端还没有向服务器发送任何消息,就对本地文件进行检测来判断是否是可以上传的类型,这种方式称为前台脚本检测扩展名。

  JS=JavaScript在数据被提交到服务器之前验证数据。因为js验证用于客户端本地的验证,所以你如果上传一个不正确的文件格式,它的判断会很快就会显示出来你上传的文件类型不正确,那我们就能判断出该网站是使用的js验证

  绕过方法:

    上传文件抓包修改后缀名就可

2.Content-Type检测文件类型—绕过 (服务端检测绕过(MIME类型检测)

  绕过方法:

    1.上传一个正确的文件。抓取数据包,查看Content-Type

    2.上传自己的文件,抓取数据包。修改Content-Type:image/jpeg

3.文件后缀名大小写混淆上传php文件 

  绕过方法:

    1.抓取数据包修改上传文件后缀名的大小写字母即可。

    2.多种混合:

      源码:

        

      绕过方法:

        1.根据源码修改后缀名为xx.php5

        2.修改Content-Type为:image/jpeg  

        3修改Content-Type: multipart/form-data 为Content-Type: Multipart/form-data即可

4.%00截断

    绕过方法:

      

        1.修改上传文件后缀名为可以上传的jsp

        2.修改Content-Type为:image/jpeg

        3.修改路径 upload为 upload/1.php 空格 然后使用hex把空格修改成00 直接截断

5.服务端检测绕过(文件扩展名检测)

    (1)黑名单检测

          1. 文件名大小写绕过

            用像 AsP,pHp 之类的文件名绕过黑名单检测

          2. 名单列表绕过

            用黑名单里没有的名单进行攻击,比如黑名单里没有 asa 或 cer 之类

          3. 特殊文件名绕过

            比如发送的 http 包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式 在 windows 系统里是不被允许的,所以需要在 burp 之类里进行修改,然后绕过验证后,会 被 windows 系统自动去掉后面的    点和空格,但要注意 Unix/Linux 系统没有这个特性。

          4.0x00 截断绕过

            在扩展名检测这一块目前我只遇到过 asp 的程序有这种漏洞,给个简单的伪代码 name= getname(httprequest)//假如这时候获取到的文件名是 test.asp.jpg(asp 后面为 0x00) type=gettype(name) //而在 gettype()函     数里处理方式是从后往前扫描扩展名,所以判断为 jpg if(type == jpg) SaveFileToPath(UploadPath.name,name)//但在这里却是以 0x00 作为文件名截断 //最后以 test.asp 存入路径里

          5..htaccess 文件攻击
            配合名单列表绕过,上传一个自定义的.htaccess,就可以轻松绕过各种检测

             .htaccess文件创建:

                创建一个123.htaccess文件,内容为:

                            <FilesMatch "pangya.jpg">

                            SetHandler application/x-httpd-php
                          </FilesMatch>

                 然后在创建一个pangya.jpg的一句话 图片+一句话都可以

          6. 解析调用/漏洞绕过 这类漏洞直接配合上传一个代码注入过的非黑名单文件即可,再利用解析调用/漏洞

      (2)白名单检测

            1.0x00 截断绕过

             用像 test.asp%00.jpg 的方式进行截断,属于白名单文件,再利用服务端代码的检测逻辑 漏洞进行攻击。

            2. 解析调用/漏洞绕过

            这类漏洞直接配合上传一个代码注入过的白名单文件即可,再利用解析调用/漏洞

6.服务端检测绕过(文件内容检测)

       1.文件幻数检测

       2.文件相关信息检测

          绕过方法:

            图像文件相关信息检测常用的就是 getimagesize()函数 只需要把文件头部分伪造好就 ok 了,就是在幻数的基础上还加了一些文件信息 有点像下面的结构

            GIF89a (...somebinarydataforimage...) <?phpphpinfo();?> (...skippingtherestofbinarydata...)

       3.文件加载检测

7.服务器解析漏洞的使用

posted @ 2018-04-23 19:08  G0mini  阅读(481)  评论(1编辑  收藏  举报