DotNet安全-IIS请求流程及渗透测试中的应用
字数 1786 2025-08-12 11:34:39
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 - 示例配置:
<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后门(端口复用)
实现方式:
- 修改WinRM默认端口为443与IIS端口复用
winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"} - 通过C#反序列化漏洞植入listener内存后门
- DotNet core端口复用
检测当前注册的URL前缀:
netsh http show servicestate | findstr /r "Server\ Session HTTP"
3.2 IIS模块后门(T1505.004)
特点:
- 由C++实现,可hook所有到达IIS的请求
- 高度隐蔽,可定制化功能(如基于UA或IP的条件触发)
部署方法:
- 修改
applicationHost.config文件 - 使用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
工具推荐:
示例利用:
- 在Exchange的OWA目录下创建bin文件夹并放入恶意dll
- 修改web.config添加handler映射
- 通过特定URL触发后门功能
3.4 .NET Module后门
部署方法:
- 将恶意dll放入web应用的bin目录
- 修改应用的web.config添加module配置
工具推荐:
适配哥斯拉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模块的后门技术,攻击面广泛且隐蔽性强,需要全面的安全防护策略。