如何检测没有服务器头的Web服务器

后来编辑 :是不是,IIS是不区分大小写的url和Apache是​​和有人可以使用这些信息进一步增加信心因素在OS / WebServer检测?


我在这里阅读有用的UrlScan工具,并遇到了

IIS 6.0不包含RemoveServerHeaderfunction,因为此function不提供真正的安全优势。 大多数服务器攻击都不是操作系统特有的。 而且,可以通过不依赖于服务器头的机制来检测服务器的身份和关于操作系统的信息。

当然,这激起了我的好奇心,因为我不明白如何在不使用服务器头的情况下检测操作系统和/或Web服务器。 然而,扩展名(.php,.asp,.aspx,.do,.py等等)不能成为这个问题的答案,也不会在响应内容中寻找“__VIEWSTATE”或类似的隐藏input字段。

有没有一些秘密的方式,我真的不知道?

编辑1:我假设自定义的错误页面(不是默认的显示Web服务器;知道Web服务器也给你一个关于操作系统的强大线索)

与操作系统检测类似,每个Web服务器在某些可检测的条件下都有轻微的怪癖和不同的行为。 我不知道我头上的确切方法。 这通常是通过发送无效或不寻常的请求并查看错误消息或响应是什么来完成的。 Apache可能会处理与IIS稍有不同的特定无效请求。

如果在path中有反向代理或负载平衡器,则其中一些将被屏蔽。 好奇的人不会学习你的networking服务器,而是学习你使用的代理。

实际上,即使是在两者之间的代理也是非常微不足道的。 例如,这个工具给你一个很好的主意:

Net-Square的httprint

虽然这仍然是一个HTTP头检测技术,但除了服务器头以外,还有许多其他头,不同的应用程序服务器将添加到HTTP响应中,以指示它们正在运行的服务器。

来自IIS / ASP.NET / Sharepoint的一些示例:

  • X-Powered-By:ASP.NET
  • X-AspNet-Version:2.0.50727
  • MicrosoftOfficeWebServer:5.0_Pub

这不是一个有保证的方法,但在许多情况下工作。

Nmap具有发现在服务器上运行的操作系统的function。 这可能不是失败的证据,但我想它应该在围绕“网”的合理数量的服务器上工作。

这是完整的参考。