繁体   English   中英

URL 中的 %2F 禁止 IIS 403

[英]IIS 403 forbidden with %2F in the URL

我让 IIS (Microsoft-IIS/7.5) 返回 403 forbidden,我不知道为什么。 我把它缩小到%2F但只有在它前面有一个字母时。 知道是什么原因造成的吗?

这些工作...

但是如果你在%2F前面放任何一个字母,它就会失败并显示 403。

这些失败...

谢谢!

更新:我已经排除了 ColdFusion 因为这给出了相同的 403: http : //example.com/mySite123/indexdotcfm? x=a% 2F

更新:

Top Level IIs:
Checked:  
  Allow unlisted file name extensions
  Allow unlisted verbs
  Allow high-bit characters
Unchecked:
  Allow double escaping

Request Limits:
Maximum allowed content length (Bytes):  30000000 Maximum URL length (Bytes):
4096 Maximum query string (Bytes):  2048

Sites
mySite123:
  Checked:  
    Allow unlisted verbs
    Allow high-bit characters
  Unchecked:
    Allow unlisted file name extensions
    Allow double escaping

  Request Limits:
    Maximum allowed content length (Bytes):  2147483647
    Maximum URL length (Bytes):  4096
    Maximum query string (Bytes):  2048

  Deny URL
    /CFIDE/Administrator
    /CFIDE/adminapi

更新:如果我更改我正在点击的目录,我可以将 403 更改为 404。示例:

这将按预期返回 404: http : //www.example.com/anything.anything? anything=x% 2Fanything

这将返回 403: http : //www.example.com/mySite123/anything.anything? anything = x% 2Fanything

那么假设 403 问题与“mySite123”虚拟目录设置有关是否安全?

我很确定您将 403 Forbidden 响应作为 IIS 的安全功能。 这是一个已知的攻击向量。 字符序列%2F只是/ (正斜杠)字符的 URL 编码表示。 显然,这对浏览器和互联网具有特殊意义。 它用于目录遍历。 在 URL 中编码特殊字符是一种绕过一些基本安全措施的黑客技巧。 请参阅来自 OWASP 的路径遍历 来自“The Web Application Hacker Handbook”的全文(大约在该页面的一半):

第10章攻击后端组件575

破解步骤

  1. 始终尝试使用正斜杠和反斜杠的路径遍历序列。 许多输入过滤器只检查其中之一,当文件系统可能支持两者时。

  2. 尝试使用以下编码对遍历序列进行简单的 URL 编码表示。 确保对输入中的每个斜杠和点进行编码:

    点 — %2e
    正斜杠 — %2f
    反斜杠 — %5c

  3. 尝试使用 1 6 位 Unicode 编码:

    点 — %u002e
    正斜杠 — %u22l5
    反斜杠 — %u22l6

  4. 尝试双 URL 编码:

    点-%252e
    正斜杠 - %252f
    反斜杠 — %255c

  5. 尝试超长的 UTF-8 Unicode 编码:

    点 — %c0%2e、%e0%40%ae、%c0ae 等等
    正斜杠 - %cO%af 、 %e0%80%af 、 %c0%2f 等等
    反斜杠 - %c0%5c、%c0%80%5c 等等

    ...

粗体是我的重点)

您可能会想出一种方法来允许这样做,但您为什么要这样做? 我不会推荐它。 您想打开您的服务器以应对潜在的攻击吗? 我认为最好同时避免这个 URL 序列。 URL 查询字符串中真的需要正斜杠字符吗? 与其找到一种方法在查询字符串中允许这个字符,也许您可​​以使用另一个不那么危险且不会暴露您的服务器的方法。 对于那个特定的 URL 变量,您可以查找这个不同的字符并将其替换为您在服务器端需要的字符。 就像是:

代替

http://example.com/index.cfm?x=a%2Fblah

http://example.com/index.cfm?x=a-blah

然后在服务器上,您知道x变量中需要- (破折号)字符,因此您在服务器上将其替换为/ (正斜杠)字符。 或者任何需要的字符。

在冷聚变中

<cfset x = Replace(URL.x,"-","/","ALL") />

请务必使用该字符串中不存在的一些唯一字符。 永远记住清理服务器上所有用户提供的输入。

以下是我发现的一些关于 URL 中易受攻击的%2f字符序列的参考资料:

包含“/”(正斜杠)字符的组件标题

IIS URL 解码漏洞

如果 %2F 是 JBOSS 中 GET URL 的一部分,则会收到 HTTP 400 错误

URL 中 URL 编码的斜杠

关于该主题的通用 Google 搜索

请注意,上述一些参考资料与 IIS 以外的 Web 服务器有关,但它们表明存在漏洞。

您可以尝试的其他方法是双重转义序列。 因此,您有%252F%25是百分号)而不是%2f 但是您还需要在 IIS 中进行更改以支持这一点。 参考 -如果我用 %2F 命名一个图像,我无法访问它,当导航到它时,我得到一个 404 我认为这将是最后的手段。 双编码

我一直与之合作的服务器管理员表示:

“在对 JAVA 进行更新后,问题停止了。

我星期六安装了 Java 1.7 的最新安全更新(更新 25 - 64 位)。

重新启动 Web 服务器后,问题就消失了。”

更新:几天前我接受了这个作为答案,但现在问题似乎又回来了。

更新(2015 年 8 月 31 日):已解决。 它与其他答案提到的无关。 数据中心防火墙人员设置了一些无效的设置/规则。 我不能再详细说明了。 调整防火墙规则是解决办法。

只是一些细节加入到这个线程%2f (这只是其中一个编码版本/如前所述)困扰微软与目录遍历漏洞,而黑客允许访问文件的web目录之外。 流行的入侵防御系统(如Snort )具有阻止此类行为的规则。这是该问题的详细记录以及攻击字符串和安全建议的历史示例。 多年来, %2f编码给 Web 服务器管理员和安全管理员带来了痛苦(并且攻击的变体今天仍然被积极利用)。

所有,我都在对 SharePoint 上的 TermStoreManager 进行故障排除,并在使用 Get-SPtaxonomySession 查看 TaxonomySession 内容后发现我的托管元数据应用程序代理很好。

但是,由于某种原因,术语库管理器页面没有显示任何术语集。

问题恰好是 termstore 管理器代码的 javascript 的 URL!

https://SharepointSite/_layouts/15/termstoremanager.js?rev=J%2Fry%2BNGddRWsDNgR25iEFA%3D%3D

J%2F 触发了在我的服务器上运行的主机入侵防御服务 (HIP),以阻止作为“标准 SQL 注入”攻击的请求。

明天我将与我的防火墙/HIP 人员交谈。 感谢这篇文章! 它帮助我找到了解决类似问题的正确方向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM