不安全部署:路径规范化冲突(Fortify)——IIS服务器web.config配置求助
修复IIS中「不安全部署:路径规范化冲突」问题
核心原因
这类问题源于IIS与应用程序对URL路径的规范化逻辑不一致——攻击者可通过构造编码或变形的路径(如../、%2e%2e/、./等),绕过IIS或应用的访问控制规则,访问未授权的目录或文件。
具体修复配置(web.config)
通过以下web.config设置强制统一路径解析逻辑,拦截恶意路径请求:
- 启用IIS严格路径检查与请求过滤
在<system.webServer>节点下添加或修改请求过滤规则,禁用双重转义并开启严格路径校验:
<system.webServer> <security> <requestFiltering allowDoubleEscaping="false" enableStrictChecking="true"> <hiddenSegments> <!-- 可添加需要隐藏的敏感目录,比如bin、App_Code等 --> <add segment="bin" /> <add segment="App_Code" /> </hiddenSegments> </requestFiltering> </security> </system.webServer>
- 配置URL重写拦截恶意路径
若你的服务器已安装URL重写模块,添加规则拦截包含路径遍历特征的请求:
<system.webServer> <rewrite> <rules> <rule name="Block Path Traversal" stopProcessing="true"> <match url="^(.*)(\.\./|\%2e\%2e/|\./|\%2e/)(.*)$" ignoreCase="true" /> <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Invalid path" /> </rule> </rules> </rewrite> </system.webServer>
- 限制ASP.NET请求路径非法字符
在<system.web>节点下配置httpRuntime,强化路径字符校验:
<system.web> <httpRuntime requestPathInvalidCharacters="<,>,*,%,&,\,?" /> </system.web>
额外防护措施
- 应用层二次校验:不要完全依赖IIS的过滤,在应用代码中对用户传入的路径参数做规范化处理(比如使用
Path.GetFullPath()后对比允许的根目录),确保请求路径在授权范围内。 - 更新组件:确保IIS、.NET Framework(或ASP.NET Core)及应用依赖的框架处于最新版本,修复已知的路径解析漏洞。
- 权限控制:给IIS应用池用户设置最小权限,仅允许访问应用所需的目录,即使路径绕过成功也无法读取或执行敏感文件。
验证方法
- 手动构造测试请求,比如
http://your-app-domain/%2e%2e/web.config或http://your-app-domain/../secret/file.aspx,确认服务器返回403 Forbidden。 - 重新运行Fortify WebInspect扫描,确认该漏洞项已被修复。
内容的提问来源于stack exchange,提问作者Gopi
相关产品推荐
相关产品推荐

