DotNet安全-IIS请求流程及渗透测试中的应用
字数 1786 2025-08-12 11:34:39

IIS请求流程及渗透测试应用详解

1. IIS请求处理流程概述

IIS处理请求的完整流程如下:

  1. HTTP.sys:网络请求首先到达HTTP.sys内核驱动进行处理
  2. W3wp.exe:请求进入IIS的请求队列后,交由对应的W3wp.exe工作进程处理
  3. ISAPI扩展:根据文件后缀判断类型,交由不同逻辑处理(ASP、ISAPI、CGI等)
  4. Module和Handler:请求经过多个module处理,最后交由一个handler进行最终处理

2. 核心组件详解

2.1 HTTP.sys

  • 工作在内核层,性能极高
  • 负责接收和初步处理所有HTTP请求
  • 可实现端口复用功能
  • 常见漏洞:HTTP.sys远程代码执行漏洞(CVE-2015-1635)

2.2 W3wp.exe

  • IIS工作进程,负责实际处理Web请求
  • 配置文件路径:C:\Windows\System32\inetsrv\config\applicationHost.config
  • 处理流程包括匿名请求处理、日志记录等

2.3 ISAPI扩展

  • 配置文件路径:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
  • 示例配置:
<add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="true"/>
  • 负责将特定后缀的请求映射到对应的处理程序

2.4 Module和Handler

区别

  • 每个请求会经过多个module处理
  • 最后只由一个handler进行最终处理

Module特点

  • 主要用于修饰请求、预检请求
  • 也可以修改响应包
  • 配置格式:
<httpModules>
  <add type="[COM+ Class], [Assembly]" name="[ModuleName]" />
  <remove type="[COM+ Class], [Assembly]" name="[ModuleName]" />
  <clear />
</httpModules>

Handler特点

  • 负责最终处理特定类型的请求
  • 常见示例:ashx文件通过继承handler实现
  • 配置格式:
<httpHandlers>
  <add verb="[verb list]" path="[path/wildcard]" type="[COM+ Class], [Assembly]" validate="[true/false]" />
  <remove verb="[verb list]" path="[path/wildcard]" />
  <clear />
</httpHandlers>

3. 渗透测试中的应用技术

3.1 HTTP.sys后门(端口复用)

实现方式

  1. 修改WinRM默认端口为443与IIS端口复用
    winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"}
    
  2. 通过C#反序列化漏洞植入listener内存后门
  3. DotNet core端口复用

检测当前注册的URL前缀

netsh http show servicestate | findstr /r "Server\ Session HTTP"

3.2 IIS模块后门(T1505.004)

特点

  • 由C++实现,可hook所有到达IIS的请求
  • 高度隐蔽,可定制化功能(如基于UA或IP的条件触发)

部署方法

  1. 修改applicationHost.config文件
  2. 使用appcmd命令:
    C:\Windows\system32\inetsrv\APPCMD.EXE install module /name:Module /image:"c:\IIS-Backdoor.dll" /add:true
    

工具推荐

功能

  • 命令执行
  • 密码记录(存储于C:\Windows\Temp\creds.db)

3.3 .NET ISAPI后门(T1505.004)

实现方式

  • 修改某后缀处理的handler
  • 配置文件路径:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config

工具推荐

示例利用

  1. 在Exchange的OWA目录下创建bin文件夹并放入恶意dll
  2. 修改web.config添加handler映射
  3. 通过特定URL触发后门功能

3.4 .NET Module后门

部署方法

  1. 将恶意dll放入web应用的bin目录
  2. 修改应用的web.config添加module配置

工具推荐

适配哥斯拉webshell

  1. 在module代码中插入哥斯拉的payload逻辑
  2. 确保Context变量名称统一
  3. 编译为dll并部署

4. 防御建议

  1. 监控配置变更

    • 监控applicationHost.config和web.config的修改
    • 特别关注module和handler的添加操作
  2. 文件完整性检查

    • 定期校验系统关键dll文件的完整性
    • 监控bin目录下新增的dll文件
  3. 网络流量分析

    • 检测异常URL模式和参数
    • 特别关注不常见文件后缀的请求
  4. 权限控制

    • 限制对IIS配置文件的写入权限
    • 遵循最小权限原则配置应用池账户
  5. 日志审计

    • 确保启用完整的IIS日志记录
    • 定期审计日志中的异常行为

5. 总结

理解IIS请求处理流程对于渗透测试和防御都至关重要。攻击者可以利用不同阶段的处理特性实现多种后门技术,而防御者则需要针对每个环节部署相应的检测和防护措施。从Http.sys的端口复用,到IIS模块、ISAPI扩展和.NET模块的后门技术,攻击面广泛且隐蔽性强,需要全面的安全防护策略。

IIS请求流程及渗透测试应用详解 1. IIS请求处理流程概述 IIS处理请求的完整流程如下: HTTP.sys :网络请求首先到达HTTP.sys内核驱动进行处理 W3wp.exe :请求进入IIS的请求队列后,交由对应的W3wp.exe工作进程处理 ISAPI扩展 :根据文件后缀判断类型,交由不同逻辑处理(ASP、ISAPI、CGI等) Module和Handler :请求经过多个module处理,最后交由一个handler进行最终处理 2. 核心组件详解 2.1 HTTP.sys 工作在内核层,性能极高 负责接收和初步处理所有HTTP请求 可实现端口复用功能 常见漏洞:HTTP.sys远程代码执行漏洞(CVE-2015-1635) 2.2 W3wp.exe IIS工作进程,负责实际处理Web请求 配置文件路径: C:\Windows\System32\inetsrv\config\applicationHost.config 处理流程包括匿名请求处理、日志记录等 2.3 ISAPI扩展 配置文件路径: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config 示例配置: 负责将特定后缀的请求映射到对应的处理程序 2.4 Module和Handler 区别 : 每个请求会经过多个module处理 最后只由一个handler进行最终处理 Module特点 : 主要用于修饰请求、预检请求 也可以修改响应包 配置格式: Handler特点 : 负责最终处理特定类型的请求 常见示例:ashx文件通过继承handler实现 配置格式: 3. 渗透测试中的应用技术 3.1 HTTP.sys后门(端口复用) 实现方式 : 修改WinRM默认端口为443与IIS端口复用 通过C#反序列化漏洞植入listener内存后门 DotNet core端口复用 检测当前注册的URL前缀 : 3.2 IIS模块后门(T1505.004) 特点 : 由C++实现,可hook所有到达IIS的请求 高度隐蔽,可定制化功能(如基于UA或IP的条件触发) 部署方法 : 修改 applicationHost.config 文件 使用appcmd命令: 工具推荐 : IIS-Raid 功能 : 命令执行 密码记录(存储于 C:\Windows\Temp\creds.db ) 3.3 .NET ISAPI后门(T1505.004) 实现方式 : 修改某后缀处理的handler 配置文件路径: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config 工具推荐 : NetDLLSpy 示例利用 : 在Exchange的OWA目录下创建bin文件夹并放入恶意dll 修改web.config添加handler映射 通过特定URL触发后门功能 3.4 .NET Module后门 部署方法 : 将恶意dll放入web应用的bin目录 修改应用的web.config添加module配置 工具推荐 : IIS_ backdoor 适配哥斯拉webshell : 在module代码中插入哥斯拉的payload逻辑 确保Context变量名称统一 编译为dll并部署 4. 防御建议 监控配置变更 : 监控applicationHost.config和web.config的修改 特别关注module和handler的添加操作 文件完整性检查 : 定期校验系统关键dll文件的完整性 监控bin目录下新增的dll文件 网络流量分析 : 检测异常URL模式和参数 特别关注不常见文件后缀的请求 权限控制 : 限制对IIS配置文件的写入权限 遵循最小权限原则配置应用池账户 日志审计 : 确保启用完整的IIS日志记录 定期审计日志中的异常行为 5. 总结 理解IIS请求处理流程对于渗透测试和防御都至关重要。攻击者可以利用不同阶段的处理特性实现多种后门技术,而防御者则需要针对每个环节部署相应的检测和防护措施。从Http.sys的端口复用,到IIS模块、ISAPI扩展和.NET模块的后门技术,攻击面广泛且隐蔽性强,需要全面的安全防护策略。