文件上传漏洞绕过

文件上传漏洞绕过

工具

    burpsuite--代理工具

    weevely----linux的中国菜刀

此处不详细讲述burpsuite如何做代理,weevely首先生成一句话木马(weevely会对一句话进行编码处理,也有免杀的效果)

weevely generate admin admin.php  //admin为一句话密码,admin.php为一句话文件

1.Javascript突破

  绕过概念:文件上传也许会使用后缀名验证文件,这种验证可分为客户端验证和服务端验证。

  绕过方法:可在浏览器中禁用javascript,删除可控制的js文件,也可以进行抓包对文件后缀进行修改。

  首先尽行上传查看是否允许

  

   对一句话文件进行修改后缀名

  

  点击上传的时候对其进行抓包对filename进行修改为admin.php这时候即可绕过客户端绕过

  

   连接成功

  

2.MIME类型检测

  绕过概念:MIME类型检测实际上就是客户端在上传文件到服务端的时候,服务端对客户端上传的文件的content-type类型进行进行检测,如果是白名单所允许的,则可以正常上传,否则上传失败。

  绕过方法:通过抓包对上传文件的content-type字段进行修改如image/gif,从而绕过服务端验证

  首先上传查看是否允许

  

   点击上传进行抓包

  

  显示上传成功并可以查看文件路径

  

3.文件内容检测

   绕过概念:一般文件内容检测使用getimagesize()函数检测,通过文件头部内容来判断合法性,会判断文件是否是一个有效的图片文件,如果是,则允许上传,否则的话,不允许上传。

  绕过方法:通过人为添加合法文件进行绕过

       JPG:FF D8 FF E0 00 10 4A 46 49 46

       GIF:47 49 46 38 39 61(GIF89a)

       PNG:89 50 4E 47

  上传抓包,为文件内容增加头部

  

4.0x00截断检测

  绕过概念:0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当作结束符,遇见这个字符后,就不会解析后面的字符。

  绕过方法:假设上传文件为admin.php#.png,当上传文件时进行抓包将#替换为0x00,检测程序在进行检测时发现该文件后缀为.png,检测无误。但是当程序执行写入操作的时候遇见0x00就不会理会后面的.png最终保存至服务器的文件为admin.php。

  条件:PHP<5.3.29,且GPC关闭。

  首先将文件名改为admin.php#.png

  

   上传抓包,对此处#对应的23该为00,则#消失不见。

  

5.分布式配置文件(文件重写)绕过

  绕过概念:.htaccess文件(或者“分布式配置文件”)提供了针对目录改变配置的方法,即,在一个特定的文档中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。用户可以利用此文件定义解析文件的后缀,从而进行恶意利用。

  绕过方法:建立文件名为.htaccess文件,将其上传,当这个文件上传后会修改服务端解析文件的配置文件,会将jpg文件以php文件进行解析。

  首先制作.htaccess文件

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

  

   如果文件前面不能加点号可对其抓包后加点

   

   此处修改文件后缀为jpg

  

  上传成功后服务端会把jpg文件解析成php。这时候直接将admin.jpg当成admin.php文件进行连接。

  连接成功

  

6.黑名单-文件名绕过

  绕过概念:文件名黑名单就是对用户上传文件的后缀进行限制,当操作系统为linux时,系统对大小写敏感。

  绕过方法:

        PHP:php5、php6、php后加空格、pHp(大小写混合)

        ASP:aspx、cer、cdx、asa、aSp(大小写混合)

        JSP:jspx、jspf、jSp(大小写混合)

        如果遇见直接消除文件后缀的可在后缀中间再写一个后缀名,例:pphphp...

  将文件名进行大小写混合

  

  

7.白名单-扩展名绕过

  IIS解析漏洞:

        目录解析

        原理:服务器默认会把.asp,*.asp目录下的文件都当成asp文件解析。

        形式:www.xxx.com/xx.asp/xx.jpg

        文件解析

        原理:服务器默认不解析;后面的内容,因此xx.asp;.jpg便被解析成asp文件。

        形式:www.xxx.com/xx.asp;.jpg

  apache解析漏洞:

        原理:Apache解析文件的规则是从右向左开始解析,如果后缀名为不可识别文件,就会往左判断,如果Apache的conf里有这一行配置AddHandler php5-script.php这时只要文件名中包含.php即使文件名是admin.php.jpg也会以php来执行。

        比如:admin.php.qwe.asd=>php后面的两种后缀是apache不可识别解析,apache就解析成admin.php。

        形式:www.xxx.xxx.com/admin.php.php222

  nginx解析漏洞:

        原理:Nginx中php配置错误导致的解析漏洞,当Nginx拿到文件路径/admin.jpg/admin.php后,会认为该文件是php文件,转交给php处理,php处理时发现/admin.jpg/admin.php不存在,便删去最后的/test.php,又看/test.jpg存在,如果这时候php配置文件的cgi.fix_pathinfo值为真,则php就会执行/test.jpg文件。

        形式:www.xx.com/admin.jpg/admin.php

posted @ 2020-05-21 09:42  mydpkg  阅读(266)  评论(0)    收藏  举报