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