gpt4 book ai didi

java - IIS 403 禁止在 URL 中使用 %2F

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:38:33 35 4
gpt4 key购买 nike

我正在让 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 中编码特殊字符是一种绕过一些基本安全措施的黑客技巧。参见 Path Traversal来自 OWASP。来自Full text of "The Web Application Hacker Handbook" (大约该页面的一半):

Chapter 10 Attacking Back-End Components 575

HACK STEPS

  1. Always try path traversal sequences using both forward slashes and back slashes. Many input filters check for only one of these, when the filesystem may support both.

  2. Try simple URL-encoded representations of traversal sequences using the following encodings. Be sure to encode every single slash and dot within your input:

    Dot — %2e
    Forward slash — %2f
    Backslash — %5c

  3. Try using 1 6-bit Unicode encoding:

    Dot — %u002e
    Forward slash — %u22l5
    Backslash — %u22l6

  4. Try double URL encoding:

    Dot-%252e
    Forward slash — %252f
    Backslash — %255c

  5. Try overlong UTF-8 Unicode encoding:

    Dot — %c0%2e, %e0%40%ae, %c0ae, and so on
    Forward slash — %cO%af , %e0%80%af , %c0%2f , and so on
    Backslash — %c0%5c, %c0%80%5c, and so on

    ...

(粗体是我的重点)

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

代替

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

使用

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

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

在 ColdFusion 中

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

请务必使用该字符串中不存在的一些独特字符。 始终记得清理服务器上所有用户提供的输入。

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

Component titles containing '/' (forward slash) characters

IIS URL Decoding Vulnerability

Receive an HTTP 400 error if %2F is part of the GET URL in JBOSS

URL-encoded slash in URL

Generic Google search about the topic

请注意,上述部分引用资料与 IIS 以外的 Web 服务器相关,但它们表明存在漏洞。

您可以尝试的其他方法是对序列进行双重转义。因此,您使用的不是 %2f %252F(%25 是百分号)。但是您也需要在 IIS 中进行更改以支持此功能。引用 - if I name an image with a %2F, I cannot access it and when navigating to it, I get a 404 .我认为这是最后的手段。 Double Encoding

关于java - IIS 403 禁止在 URL 中使用 %2F,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829537/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com