从 HTTP 响应中检测 Ubuntu 版本

Detect Ubuntu version from HTTP response

我有响应 HEAD / 请求以下响应的网络服务器:

HTTP/1.1 200 OK
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.26
....

是否可以使用那些 HTTP 响应 headers(Apache/PHP 版本)知道什么是 Ubuntu 版本?

“5.5.9-1ubuntu4.26”是安装的PHP包的版本。 Debian/Ubuntu 版本标注方案比较复杂,具体细节我也不清楚,但基本上是“PHP 版本 5.5.9,Debian/Ubuntu 包版本 1 / 4.26”。

首先,请注意,对于攻击者来说,这比了解基础 OS 版本 有价值 - 如果那不是最新的补丁,他们可以知道您仍然容易受到哪些安全漏洞的影响。

其次,虽然我不知道最有效的搜索方式,但所有软件包版本都列在 https://launchpad.net/ 以及它们兼容的 Ubuntu 版本中。有可能相同的软件包版本可以安装在多个基础 OSes 上,但肯定可以将其缩小到候选列表。

第三,PHP 5.5 现在非常旧 - it's last official patch was 5 and a half years ago - 它可能存在安全问题,无法在 Debian/Ubuntu 补丁中应用修复。因此,无论补丁版本如何,表明您是 运行 那个版本可能对攻击者来说都是有用的信息。

修复非常简单:PHP 有 a setting called expose_php。将其设置为 Off 并且 X-Powered-By header 将被完全删除。