服务器标头形式的信息泄露是真正的漏洞吗?

信息安全 Web应用程序 http
2021-08-20 07:33:55

我在很多地方看到人们说以下类型的标头是一个漏洞:

Server:Microsoft-IIS/7.5
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET

我可以看到这为攻击者提供了额外的信息,以便他可以验证这些平台上的已知错误,然后滥用它们。但在我看来,删除这些标题只能保护您免受非常简单的脚本小子的攻击,任何严重的攻击都会很容易地发现这些信息。例如

  • 与其他服务器相比,当向其发送复杂的随机垃圾时,IIS 必须有一种不同的响应或不同的失败方式
  • ASP.NET中的已知漏洞列表可以一一尝试,看看有没有apply + 同点同样适用于ASP.NET本身
  • 其他一些类似的操作

所以总而言之,任何严重的对手似乎真的能够相当简单地发现这些信息。

毕竟,除了非常简单的脚本小子保护之外,删除标头会给您带来任何好处,脚本小子将首先针对具有漏洞的站点,例如流行的引用:

“你不必跑得比熊还快就可以逃跑。你只需要比你旁边的人跑得快。”

PS 如果此信息泄露可能导致真正的漏洞,您可能会遇到更严重的问题。

PPS 无论如何都有这个标题是没有意义的,因为它甚至会提高性能(虽然可以忽略不计),所以摆脱它们是个好主意,但我仍然对这里的整个“安全”论点感到好奇

4个回答

OWASP 将Information Leakage定义为漏洞,因此争论的焦点是具体版本信息是否应归类为“Information Leakage”。

正如@Oasiscircle 所提到的,此信息可用作了解与特定版本相关的特定漏洞的攻击者的起点。我们知道攻击者使用僵尸网络扫描服务器以寻找版本指纹,并使用这些信息来维护应用程序版本和服务器地址的数据库。 Shodan提供了一个广泛使用的数据库。当引入针对特定版本的新漏洞利用时,或者如果攻击者针对某个版本开发了 0day 漏洞利用,这些攻击者会对其数据库进行简单的选择并迅速发动攻击,希望在修补之前捕获其中的一些机器。

这是否会使知道特定版本号成为漏洞?不是直接的,但它会让你成为狙击手的十字准线,每个人都有一个扳机和先发制人的动机。如果您认为这是一个漏洞,我将由您自己确定。

我通常对这些好处持怀疑态度 - 正如@MarkBuffalo 所说,许多攻击者会在他们发现的每台服务器上尝试他们知道的每一次攻击,无论它是否可能有效(甚至尝试针对报告的系统进行 Windows 特定攻击)他们正在运行 RHEL)。

但是,这不是您需要提供的信息,所以我通常赞成删除它,这可以用最少的努力完成。这有时意味着将输出减少为仅服务器的名称(例如 Apache、IIS),而不是完全删除 Server 标头,因为完全删除标头可能需要将新的软件元素引入服务器堆栈。

例如,需要在 apache.conf 中将一个 httpd 服务器标头减少为“Apache”,但添加一个代理以进一步减少它。在这种情况下,坚持使用最小线似乎更安全,而不是添加额外的元素,这可能会引入其自身的缺陷。

同样,很容易看到网站何时运行 Wordpress,但我仍然建议删除自述文件 - 它只是不需要,并且有点像一些摇滚乐队臭名昭著使用的棕色 M&Ms 骑手碗:你可以检查一下很容易,它显示是否可能已经采取了其他步骤。

假设今天发布了一个漏洞,适用于所有带有小范围 ASP Net 版本的 Microsoft IIS 7.5 服务器。我是一名恶意攻击者,我想在系统管理员修补漏洞之前找出我可以利用的尽可能多的服务器。如果我可以询问每个单独的服务器是否易受攻击,而不是必须在每台服务器上尝试该漏洞,这不是一个更容易的问题吗?另外,我可以在每台服务器的基础上记录所有这些信息,并在发现任何类型的服务器的漏洞时准确地知道我想攻击谁。

隐藏您的版本信息不会阻止攻击的发生,但如果攻击者正在寻找特定版本的硬件或软件,它将使您不再成为目标。默默无闻的安全并不意味着你是安全的,但它有时会减慢人们的速度,而这正是零日漏洞所需要的。

可以说在 ASP.NET 4.0.30319 中发现了一个新的严重漏洞。

攻击者可以通过使用 Shodan 等搜索引擎轻松找到易受攻击的服务器:https ://www.shodan.io/search?query=X-AspNet-Version%3A4.0.30319

当攻击者只想让某些服务器妥协以添加到他们的僵尸网络时,隐藏信息横幅可以保护您免受非目标攻击。