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

限制条件

  1. 必须为集成模式
  2. 可上传dll到bin目录

利用方法

  1. 编译恶意dll并上传到bin目录
  2. 在web.config中添加module配置

注意:modules不能在子目录的web.config中配置

2.2 映射扩展名为aspx

利用方法

  1. 通过web.config配置buildProviders
  2. 将任意扩展名映射为aspx处理器

注意:buildProviders不能在子目录的web.config中配置

2.3 web.config作为aspx

利用方法

  1. 通过buildProviders配置
  2. 使web.config文件本身被当作aspx文件执行

注意:buildProviders不能在子目录的web.config中配置

2.4 machineKey反序列化

利用方法

  1. 通过web.config设置machineKey
  2. 利用ViewState等反序列化漏洞执行任意代码

参考链接:https://soroush.me/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/

2.5 本地module

限制条件

  1. 本地模块需要先在applicationhost.config中注册
  2. 注册配置保存在%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

限制条件

  1. 需要上传dll到根目录下的bin目录
  2. 必须为集成模式
  3. web.config可上传到任意目录(如二级目录)

利用方法

  1. 编译恶意dll并上传到bin目录
  2. 在子目录web.config中添加handler配置

3.2 ISAPI Handlers

限制条件

  1. ISAPI处理器需要先注册/允许才会生效
  2. 这种方法通常不奏效

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. 关键注意事项

  1. 子目录web.config的功能限制比根目录多
  2. 集成模式与经典模式对利用方式有重要影响
  3. 不同版本的IIS可能有不同的限制条件
  4. 防御时应综合考虑多种防护措施

6. 参考资源

  1. Soroush Dalili的web.config研究:https://soroush.me/blog/tag/web-config
  2. Microsoft IIS官方文档:https://learn.microsoft.com/en-us/iis/
  3. ViewState反序列化漏洞:https://soroush.me/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/

以上内容总结了IIS下web.config的各种利用技术及其防御方法,涵盖了根目录和子目录的不同利用场景,并提供了详细的限制条件和防御建议。

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的各种利用技术及其防御方法,涵盖了根目录和子目录的不同利用场景,并提供了详细的限制条件和防御建议。