(Win)文件上传数据流绕过-面试常考

之前一篇文章已经对简单的文件上传绕过做出总结:

文件上传绕过保姆篇,这篇主要是一些更高级的绕过,算是平时未涉及的一些补充

文件上传数据流绕过

利用 Windows NTFS 文件系统的备用数据流(Alternate Data Streams,ADS)特性

在 NTFS 文件系统中,一个文件除了默认的主数据流($DATA)外,还可以附加多个命名数据流 。这些流可以独立存储数据 ,但在常规操作(如 dir、文件大小查看、文本编辑器)中通常不可见。

关键的语法是:

复制代码
# 写入文件备用数据流:此时文件为空
Echo 111 > test.txt:1.txt	 	 
# 写入默认的主数据流:此时相当于写入文件内容
Echo test > test.txt
# 显示写入主数据流,文件存在内容
Echo 222  > test.txt::$data	 	

其中 ::$DATA 代表默认的主数据流。例如:test.php 实际等价于 test.php::$DATA

文件名后缀 ::$DATA 绕过扩展名检查

很多上传过滤逻辑是用正则、字符串函数来提取文件后缀的。例如后端代码:

如果攻击者上传的文件名是 shell.php::$DATA(也就是前篇文章提出的)

  • Windows 在创建文件时会自动去掉末尾的 ::$DATA ,最终落盘的文件名还是 shell.php

  • 但上面的 pathinfo 可能提取到 ::$DATA 作为扩展名,或者认为后缀是空,从而通过校验。

利用 ADS 隐藏 Webshell 并包含执行

攻击者可以上传一个完全合法的图片文件(例如 pic.jpg),但将 Webshell 代码写到它的 ADS 中:pic.jpg:shell.php

如果服务器存在文件包含漏洞 ,并且 include 函数能处理 ADS 路径(某些 PHP 版本 + Windows 环境),就可以这样执行:include 'uploads/pic.jpg:shell.php';

此时 PHP 会读取 ADS 中的 shell.php 内容并解析,从而在不破坏主文件(图片)的情况下执行恶意代码。

绕过内容检测(配合 NTFS 流)

一些上传接口会检查文件头(如 getimagesize)。攻击者可以:

  • 上传一个正常的图片,其 ADS 中嵌入 PHP 代码。

  • 或者利用文件名 test.php:image.jpg 上传,一些解析库可能只读取默认流(图片)内容来判断类型,从而放过 PHP 代码。

相关推荐
云水一下12 小时前
零基础玩转bWAPP靶场(七十一):Slow HTTP DoS(慢速HTTP拒绝服务)
web安全·bwapp·slowhttptest
虎头金猫13 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
龙亘川15 小时前
一网统管AI平台民生业务实践:基于城市数字底座赋能公积金业务服务升级
大数据·安全·智慧城市·开源软件·数据可视化·政务
wuyk55515 小时前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
kybs199115 小时前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
XUEYUAN521217 小时前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
LorryJovens17 小时前
【LAAP科研】双系统具身AGI范式研究——基于LAAP认知架构与Jev概率决策模型的系统性技术调研与范式验证
人工智能·gpt·安全·架构
其实防守也摸鱼17 小时前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
TechEdu20260617 小时前
[人工智能]人工智能时代的零日漏洞与零日攻击
人工智能·网络安全·ai·信息安全