IIS下web.config利用
字数 1804 2025-08-29 22:41:01
IIS下web.config利用技术详解
1. IIS配置加载流程
- IIS 7及以上版本支持web.config配置
- 除了网站根目录外,子目录也可以有自己的web.config
- 子目录的web.config有诸多功能限制
2. 根目录web.config利用技术
2.1 加载托管module
限制条件:
- 必须为集成模式
- 可上传dll到bin目录
利用方法:
- 编译恶意dll并上传到bin目录
- 在web.config中添加module配置
注意:modules不能在子目录的web.config中配置
2.2 映射扩展名为aspx
利用方法:
- 通过web.config配置buildProviders
- 将任意扩展名映射为aspx处理器
注意:buildProviders不能在子目录的web.config中配置
2.3 web.config作为aspx
利用方法:
- 通过buildProviders配置
- 使web.config文件本身被当作aspx文件执行
注意:buildProviders不能在子目录的web.config中配置
2.4 machineKey反序列化
利用方法:
- 通过web.config设置machineKey
- 利用ViewState等反序列化漏洞执行任意代码
参考链接:https://soroush.me/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/
2.5 本地module
限制条件:
- 本地模块需要先在applicationhost.config中注册
- 注册配置保存在%windir%\system32\inetsrv\config\applicationhost.config
参考文档:https://learn.microsoft.com/en-us/iis/get-started/introduction-to-iis/iis-modules-overview
3. 子目录web.config利用技术
3.1 加载托管handlers
限制条件:
- 需要上传dll到根目录下的bin目录
- 必须为集成模式
- web.config可上传到任意目录(如二级目录)
利用方法:
- 编译恶意dll并上传到bin目录
- 在子目录web.config中添加handler配置
3.2 ISAPI Handlers
限制条件:
- ISAPI处理器需要先注册/允许才会生效
- 这种方法通常不奏效
4. 防御措施
4.1 文件权限控制
- 通过文件权限防止修改/创建web.config
- 严格控制bin目录的写入权限
4.2 allowSubDirConfig配置
- 通过allowSubDirConfig配置不允许子目录配置
- 参考:https://techcommunity.microsoft.com/blog/iis-support-blog/how-to-prevent-web-config-files-to-be-overwritten-by-config-files-in-application/297627
4.3 lockItem配置
- 通过lockItem="true"锁定配置
- 防止子目录覆盖关键配置
- 参考:https://soroush.me/blog/tag/web-config/
5. 关键注意事项
- 子目录web.config的功能限制比根目录多
- 集成模式与经典模式对利用方式有重要影响
- 不同版本的IIS可能有不同的限制条件
- 防御时应综合考虑多种防护措施
6. 参考资源
- Soroush Dalili的web.config研究:https://soroush.me/blog/tag/web-config
- Microsoft IIS官方文档:https://learn.microsoft.com/en-us/iis/
- ViewState反序列化漏洞:https://soroush.me/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/
以上内容总结了IIS下web.config的各种利用技术及其防御方法,涵盖了根目录和子目录的不同利用场景,并提供了详细的限制条件和防御建议。