​​IIS文件上传漏洞绕过:深入解析与高效防御​

news2025/5/27 12:46:48

目录

​​一、IIS解析漏洞的底层逻辑​​

​​二、绕过技巧:从基础到高级​​

​​1. 分号截断与路径拼接(经典手法)​​

​​2. 目录解析漏洞利用​​

​​3. 操作系统特性与字符混淆​​

​​4. 扩展名黑名单绕过​​

​​5. 结合其他漏洞的链式攻击​​

​​三、防御方案:从代码到架构的多层防护​​

​​1. 代码层加固​​

​​2. 服务器配置优化​​

​​3. 网络层防护​​

​​4. 监控与应急响应​​

​​四、实战复现:分阶段绕过防御​​

​​五、总结与思考​​


​一、IIS解析漏洞的底层逻辑​

IIS(Internet Information Services)作为Windows Server的默认Web服务器,其历史版本(如IIS 6.0)因文件解析逻辑缺陷成为攻击者的重点目标。以下漏洞原理需重点关注:

  1. ​分号截断漏洞​

    • ​触发条件​​:当文件名包含分号(;)时,IIS 6.0会将分号前的部分作为真实扩展名解析,例如:
      shell.asp;.jpg → 解析为ASP脚本
    • ​底层逻辑​​:IIS的解析模块(asp.dll)在处理请求时,会以分号作为分隔符截断文件名,仅保留前半部分。
  2. ​目录解析漏洞​

    • ​关键路径​​:若目录名以.asp.asa等可执行后缀命名(如/upload.asp/),则该目录下的所有文件(包括静态文件)均会被IIS视为动态脚本执行。
    • ​扩展风险​​:攻击者可通过创建恶意目录(如/images/evil.asp/)将普通图片转为木马载体。
  3. ​文件内容与扩展名解耦​

    • IIS在某些配置下会忽略文件内容,仅依赖扩展名决定解析方式。攻击者可上传伪装为图片的WebShell,绕过内容校验。

​二、绕过技巧:从基础到高级​
​1. 分号截断与路径拼接(经典手法)​
  • ​Payload构造​​:
    filename="shell.asp;.jpg"  
    访问路径:/uploads/shell.asp;.jpg → 执行ASP代码
  • ​实战要点​​:
    • 使用Burp Suite拦截上传请求,修改filename字段,添加分号截断。
    • 若服务器过滤分号,可尝试shell.asp:.jpg(利用NTFS文件流特性)。
​2. 目录解析漏洞利用​
  • ​攻击流程​​:
    1. 创建目录/upload.asp/(需服务器允许目录创建)。
    2. 上传文件至该目录,如/upload.asp/1.jpg,访问时触发ASP解析。
  • ​绕过限制​​:若无法创建目录,可尝试上传路径包含.asp的URL,如:
    POST /upload.asp HTTP/1.1  # 直接上传至伪装的ASP路径
​3. 操作系统特性与字符混淆​
  • ​空格/点号截断​​:
    shell.asp.    # Windows自动去除末尾点 → 保存为shell.asp
    shell.asp     # 上传时添加空格 → shell.asp 
  • ​Unicode编码绕过​​:
    shell.asp%80.jpg  # 利用畸形Unicode字符干扰校验
​4. 扩展名黑名单绕过​
  • ​冷门扩展名​​:.asa.cer.cdx(IIS默认允许执行)。
  • ​大小写混淆​​:Shell.PhPBACKDOOR.aSpX(针对校验逻辑不严谨的系统)。
​5. 结合其他漏洞的链式攻击​
  • ​文件包含+上传绕过​​:
    1. 上传包含PHP代码的1.txt
    2. 利用本地文件包含(LFI)漏洞执行:
      http://target.com/index.php?file=./uploads/1.txt
  • ​HTTP PUT方法利用​​:
    若服务器开启WebDAV且配置不当,可直接通过PUT方法上传脚本文件:
    PUT /uploads/shell.asp HTTP/1.1  

​三、防御方案:从代码到架构的多层防护​
​1. 代码层加固​
  • ​白名单校验​​:仅允许jpgpng等静态后缀,​​禁止动态脚本后缀​​(如asp/php/jsp)。
  • ​文件重命名​​:使用哈希值或时间戳重命名文件,避免保留用户输入的文件名。
  • ​内容检测​​:通过文件头(Magic Bytes)验证文件真实性,例如检测JPEG文件的FF D8 FF标识。
​2. 服务器配置优化​
  • ​处理程序映射​​(IIS管理工具):
    移除对.asp.php等脚本文件的映射,或限制仅特定目录可执行脚本。
  • ​URL重写规则​​(web.config示例):
    <rule name="Block Dangerous Requests">
      <match url=".*\.(asp|php|asa)(;|%24|%00)" />
      <action type="AbortRequest" />
    </rule>
  • ​关闭危险功能​​:禁用WebDAV、NTFS文件流支持,限制HTTP PUT方法。
​3. 网络层防护​
  • ​WAF规则​​:拦截包含分号、%00、畸形路径的请求。
    # 示例ModSecurity规则
    SecRule REQUEST_FILENAME "@contains ;" "deny,log,status:403"
  • ​文件存储隔离​​:将上传目录设为不可执行,并使用独立域名(如static.example.com)。
​4. 监控与应急响应​
  • ​日志审计​​:监控上传目录的文件变更,重点关注.asp.php等敏感操作。
  • ​自动化扫描​​:定期使用工具(如Nessus、Xray)检测服务器解析漏洞。

​四、实战复现:分阶段绕过防御​

​目标环境​​:IIS 6.0 + ASP黑名单校验 + 内容检测
​绕过步骤​​:

  1. ​生成免杀WebShell​​:
    使用图片马工具(如ExifTool)将ASP代码插入JPEG文件的注释区:
    exiftool -Comment="<?php @eval($_POST['cmd']); ?>" shell.jpg
  2. ​分号截断绕过扩展名校验​​:
    修改上传包文件名:shell.asp;.jpg
  3. ​触发解析​​:
    访问http://target.com/uploads/shell.asp;.jpg,绕过内容检测,执行ASP代码。

​五、总结与思考​

IIS文件上传漏洞的核心在于​​解析逻辑与校验逻辑的脱节​​。防御需从以下角度入手:

  • ​纵深防御​​:结合代码校验、服务器配置、网络监控形成多层防护。
  • ​漏洞演化​​:随着IIS版本升级,新漏洞(如IIS 7.0的FastCGI解析问题)需持续关注。
  • ​红蓝对抗​​:定期模拟攻击测试(如上传绕过、路径遍历),验证防御体系有效性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2386067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【node.js】数据库与存储

个人主页&#xff1a;Guiat 归属专栏&#xff1a;node.js 文章目录 1. 数据库概述1.1 数据库在Node.js中的作用1.2 Node.js支持的数据库类型 2. 关系型数据库集成2.1 MySQL与Node.js2.1.1 安装MySQL驱动2.1.2 建立连接2.1.3 执行CRUD操作 2.2 PostgreSQL与Node.js2.2.1 安装pg驱…

leetcode2081. k 镜像数字的和-hard

1 题目&#xff1a;k 镜像数字的和 官方标定难度&#xff1a;难 一个 k 镜像数字 指的是一个在十进制和 k 进制下从前往后读和从后往前读都一样的 没有前导 0 的 正 整数。 比方说&#xff0c;9 是一个 2 镜像数字。9 在十进制下为 9 &#xff0c;二进制下为 1001 &#xff…

Halcon 单目相机标定测量

文章目录 双面相机标定链接一维测量gen_cam_par_area_scan_division -为区域扫描相机生成一个相机参数元组&#xff0c;该相机的变形由分割模型建模。(相机自带参数)create_calib_data -创建Halcon 数据标定模型set_calib_data_cam_param -设置校准数据模型中摄像机的类型和初始…

数据被泄露了怎么办?

数据泄露是严重的网络安全事件&#xff0c;需立即采取行动以降低风险。以下是关键应对步骤&#xff1a; 1. 确认泄露范围 核实泄露内容&#xff1a;确定泄露的是密码、财务信息、身份证号还是其他敏感数据。 评估来源&#xff1a;检查是个人设备被入侵、某平台漏洞&#xff0c…

绩效管理缺乏数据支持,如何提高客观性?

要提高绩效管理的客观性&#xff0c;应从建立科学的指标体系、加强数据采集手段、引入自动化绩效工具、强化过程记录机制、定期评估与反馈优化五大方面着手。其中&#xff0c;建立科学的指标体系是关键基础。没有数据支撑的绩效体系&#xff0c;往往容易陷入主观打分、个人偏见…

unity控制相机围绕物体旋转移动

记录一下控制相机围绕物体旋转与移动的脚本&#xff0c;相机操作思路分为两块&#xff0c;一部分为旋转&#xff0c;一部分为移动&#xff0c;旋转是根据当前center中心点的坐标&#xff0c;根据距离设置与默认的旋转进行位置移动&#xff0c;移动是根据相机的左右和前后进行计…

线性代数:AI大模型的数学基石

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…

简单血条于小怪攻击模板

创建一个2d正方形&#xff08;9-Sliced&#xff09;命名为Player&#xff0c;在Player下面新建一个画布&#xff08;Canvas&#xff09;命名为PlayerHealthUI&#xff0c;在画布下面新建一个滑动条&#xff08;Slider&#xff09;命名为HealthBar 把PlayerHealthUI脚本挂载到Pl…

代码随想录算法训练营第四十六四十七天

卡码网题目: 110. 字符串接龙105. 有向图的完全联通106. 岛屿的周长107. 寻找存在的路径 其他: 今日总结 往期打卡 110. 字符串接龙 跳转: 110. 字符串接龙 学习: 代码随想录公开讲解 问题: 字典 strList 中从字符串 beginStr 和 endStr 的转换序列是一个按下述规格形成的序…

华硕FL8000U加装16G+32G=48G内存条

华硕FL8000U加装16G32G48G内存条 一、华硕FL8000U加装内存条endl 一、华硕FL8000U加装内存条 相关视频链接: https://www.bilibili.com/video/BV1gw4dePED8/ endl

勇闯Chromium—— Chromium的多进程架构

问题 构建一个永不崩溃或挂起的渲染引擎几乎是不可能的,构建一个绝对安全的渲染引擎也几乎是不可能的。 从某种程度上来说,2006 年左右的网络浏览器状态与过去单用户、协作式多任务操作系统的状况类似。正如在这样的操作系统中,一个行为不端的应用程序可能导致整个系统崩溃…

软件质量保证与测试实验

课程  软件质量保证与测试 目的&#xff1a;练习软件测试中白盒测试方法 内容&#xff1a; 测试如下程序段&#xff1a; #include <stdio.h>int main() {int i 1, n1 0, n2 0;float sum 0.0;float average;float score[100];printf("请输入分…

历年华东师范大学保研上机真题

2025华东师范大学保研上机真题 2024华东师范大学保研上机真题 2023华东师范大学保研上机真题 在线测评链接&#xff1a;https://pgcode.cn/school?classification1 简单一位数代数式计算 题目描述 给一个小学生都会算的1位数与1位数运算的代数式&#xff0c;请你求出这个表…

在机器学习中,L2正则化为什么能够缓过拟合?为何正则化等机制能够使一个“过度拟合训练集”的模型展现出更优的泛化性能?正则化

在现代机器学习的发展历程中&#xff0c;过拟合&#xff08;Overfitting&#xff09;始终是亟需克服的重要挑战。其表现如同在训练数据上构建过度复杂的映射函数&#xff0c;虽能实现近乎完美的拟合&#xff0c;但其泛化能力却显著受限&#xff0c;导致模型在测试集或实际应用中…

k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件

k8s部署ELK补充篇&#xff1a;kubernetes-event-exporter收集Kubernetes集群中的事件 文章目录 k8s部署ELK补充篇&#xff1a;kubernetes-event-exporter收集Kubernetes集群中的事件一、kubernetes-event-exporter简介二、kubernetes-event-exporter实战部署1. 创建Namespace&a…

C++性能相关的部分内容

C性能相关的部分内容 与底层硬件紧密结合 大端存储和小端存储&#xff08;硬件概念&#xff09; C在不同硬件上运行的结果可能不同 比如&#xff1a;输入01234567&#xff0c;对于大端存储的硬件会先在较大地址上先进行存储&#xff0c;而对于小端存储的硬件会先在较小地址上…

AI进行提问、改写、生图、联网搜索资料,嘎嘎方便!

极客侧边栏-AI板块 目前插件内已接入DeepSeek-R1满血版、Qwen3满血版 、豆包/智谱最新发布的推理模型以及各种顶尖AI大模型&#xff0c;并且目前全都可以免费不限次数使用&#xff0c;秒回不卡顿&#xff0c;联网效果超好&#xff01; 相比于市面上很多AI产品&#xff0c;极客…

GStreamer开发笔记(四):ubuntu搭建GStreamer基础开发环境以及基础Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/147714800 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、O…

2021年认证杯SPSSPRO杯数学建模A题(第二阶段)医学图像的配准全过程文档及程序

2021年认证杯SPSSPRO杯数学建模 A题 医学图像的配准 原题再现&#xff1a; 图像的配准是图像处理领域中的一个典型问题和技术难点&#xff0c;其目的在于比较或融合同一对象在不同条件下获取的图像。例如为了更好地综合多种信息来辨识不同组织或病变&#xff0c;医生可能使用…

CV中常用Backbone-3:Clip/SAM原理以及代码操作

前面已经介绍了简单的视觉编码器&#xff0c;这里主要介绍多模态中使用比较多的两种backbone&#xff1a;1、Clip&#xff1b;2、SAM。对于这两个backbone简单介绍基本原理&#xff0c;主要是讨论使用这个backbone。 1、CV中常用Backbone-2&#xff1a;ConvNeXt模型详解 2、CV中…