首先,首先,我不知道假定的攻击者想要完成什么。我不知道,也许那里有一个PHP脚本或PHP版本容易受到某些奇怪的会话ID攻击。不过,您可能不必担心。
您的服务器的行为完全符合预期。由于Apache如何解释传递给它的URL,因此在特定情况下应使用200。
首先,http://allrequestsallowed.com
它像更常见的“ Host:”头一样对待(请注意,我认为这不是在RFC中指定的,其他服务器可能无法以我错的方式解释它,这是在RFC 2616中的5.1节中指定的。 2,即使客户端似乎很少使用这种形式,对不起,我需要修复前一阵子写的HTTP服务器实现...)。
现在,大概您没有名为“ allrequestsallowed.com”的网站。那么,当Apache获得Host:
无法识别的主机名的标头(或等效名称)时,会发生什么?它选择第一个虚拟主机作为默认主机。这是Apache的明确定义和记录的行为。因此,无论您的第一个虚拟主机是什么(如果没有任何虚拟主机,则仅是主服务器配置)都可以接管,无论其名称如何。
现在,给定的URL的其余部分由两部分组成-路径/
,和GET参数(该?PHPSESSID...
位)。
现在,该路径/
应该出现在几乎所有的Web服务器上。在大多数情况下,它可以映射到类似脚本index.html
或index.php
脚本,尽管您当然可以覆盖其中的任何一个。
如果将其映射到静态HTML文件,则绝对不会发生任何异常情况-返回文件的内容,仅此参数就被忽略。(假设您没有设置某些高级配置指令,并且几乎可以肯定没有。)
另一方面,如果它是某种脚本,则该PHPSESSID
变量将传递给脚本。如果脚本实际上使用了该变量(在这种情况下,只有使用PHP的内置会话处理的PHP脚本才有可能使用),则其行为将取决于内容。
但是,即使您/
碰巧使用会话映射到PHP脚本,也绝不会发生任何异常情况。会话ID可能将始终不存在,并且将被忽略,否则脚本将显示错误。
在不太可能的情况下,如果确实存在会话ID,那么攻击者可能会劫持其他人的会话。那将是不好的,但是它本身并不是一个真正的安全漏洞–漏洞将在攻击者从中获取会话ID信息的任何地方(如果您不使用HTTPS,则嗅探无线网络是一个不错的选择)。他们实际上将无法执行其会话最初无法执行的用户所能做的任何事情。
编辑:此外,SESSIONID中的'%5C'映射为反斜杠字符。这似乎是对Windows主机上的目录遍历攻击的一种测试。
curl -v http://allrequestsallowed.com/?PHPSESSID=5gh6ncjh00043YVMWTW_B%5CFAP -x www.example.com:80
。在我们的ubuntu系统上,默认配置似乎返回了“ Welcome to nginx”页面,但没有任何有意义的内容。因此,这是一个200的响应,但这是一个简单的全部页面-我们实际上并没有在其他地方代理请求或类似的请求。