后续编辑:会不会是因为 IIS 对 URL 不区分大小写而 Apache 区分大小写,有人可以利用此信息进一步增加 OS/WebServer 检测的可信度?
我正在阅读有关有用的 UrlScan 工具这里并发现
IIS 6.0 不包含 RemoveServerHeader 功能,因为该功能并没有提供任何真正的安全优势。大多数服务器攻击都与操作系统无关。此外,可以通过不依赖于服务器标头的机制来检测服务器的身份和有关操作系统的信息。
当然,这激起了我的好奇心,因为我不明白如何在不使用服务器标头的情况下检测操作系统和/或 Web 服务器。但是扩展名(.php、.asp、.aspx、.do、.py 等)不能回答这个问题,也不能在响应内容中查找“__VIEWSTATE”或类似的隐藏输入字段。
是不是有什么我不知道的秘密方法?
编辑 1:我假设自定义错误页面(不是清楚地显示 Web 服务器的默认页面;了解 Web 服务器也会为您提供有关操作系统的有力线索)
答案1
如同操作系统检测,每个 Web 服务器都有一些细微的怪癖,并且在某些情况下会表现出不同的行为,这些行为是可以检测到的。我不知道具体的方法是什么。这通常是通过发送无效或不寻常的请求并查看错误消息或响应来实现的。Apache 处理特定无效请求的方式可能与 IIS 略有不同。
如果您的路径中有反向代理或负载平衡器,其中一些信息将被屏蔽。好奇的人不会了解您的 Web 服务器,而是会了解您使用的代理。
答案2
实际上,即使中间有代理,这也相当简单。例如,这个工具可以给你一个很好的想法:
答案3
虽然这仍然是一种 HTTP 标头检查技术,但是除了服务器标头之外,不同的应用程序服务器还会将许多其他标头添加到 HTTP 响应中,以表明它们正在运行什么服务器。
来自 IIS/ASP.NET/Sharepoint 的一些示例:
- X-Powered-By:ASP.NET
- X-AspNet-版本:2.0.50727
- MicrosoftOfficeWeb服务器:5.0_Pub
这不是一个万无一失的方法,但在很多情况下却有效。