我正在使用IIS(Microsoft-IIS / 7.5)返回禁止的403,我不知道为什么。我已经将其范围缩小到%2F
,但仅当它后面有单个字母时。知道是什么原因造成的吗?
这些工作...
但是如果您在%2F
前面加上任何单个字母,它将失败并显示403。
这些失败...
谢谢!
UPDATE:我已经排除了ColdFusion,因为它给出了相同的403:http://example.com/mySite123/indexdotcfm?x=a%2F
UPDATE:
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
UPDATE:如果更改目录,则可以将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禁止响应作为IIS的安全功能。这是已知的攻击媒介。字符序列%2F
只是/
(正斜杠)字符的URL编码表示。显然,这对于浏览器和互联网具有特殊意义。它用于目录遍历。在URL中编码特殊字符是一种绕过一些基本安全措施的黑客技巧。请参阅OWASP中的Path Traversal。从Full text of "The Web Application Hacker Handbook"(大约在该页面的中途):
是我的重点)第10章攻击后端组件575
黑客步骤
总是尝试使用正斜杠和反斜杠同时遍历路径斜线。当文件系统可能同时支持两种输入过滤器时,许多输入过滤器只会检查其中一种。
尝试使用遍历序列的简单URL编码表示形式,以下编码。确保对其中的每个斜杠和点进行编码您的输入:
Dot-%2e正斜杠-%2f反斜杠—%5c
尝试使用1种6位Unicode编码:
点-%u002e正斜杠—%u22l5反斜杠—%u22l6
尝试使用双URL编码:
Dot-%252e正斜杠—%252f反斜杠—%255c
尝试使用超长UTF-8 Unicode编码:
Dot –%c0%2e,%e0%40%ae,%c0ae,依此类推正斜杠—%cO%af,%e0%80%af,%c0%2f等反斜杠—%c0%5c,%c0%80%5c等)>
...
([bold
您可能会想出一种方法来允许这样做,但是为什么呢?我不推荐它。您是否想对服务器开放以进行潜在的攻击?我认为最好避免一起使用此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") />
只需确保使用该字符串中将不存在的某些唯一字符。 始终记住清除服务器上所有用户提供的输入。
这里有一些关于%2f
字符序列在URL中容易受到攻击的参考:
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
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
只是在此线程上添加一些细节,%2f
(如前所述只是/
的编码版本)使Microsoft遭受了目录遍历漏洞的困扰,使黑客能够访问Web目录之外的文件。流行的入侵防御系统(如Snort)具有阻止此类行为的规则。 Here is a detailed write up of the issue以及攻击字符串和安全建议的历史示例。 %2f
编码引起了Web服务器管理员和安全管理员多年的痛苦(并且今天仍然看到攻击的变种仍在被积极利用)。
我一直在使用的服务器管理员说:
全部,我全神贯注地对SharePoint上的TermStoreManager进行故障排除,然后在查看了以下内容后,发现我的Managed MetaData Application代理很好使用Get-SPTaxonomySession的TaxonomySession内容。