从响应 header 服务器 (Self-hosted Http.Sys) 中删除 Microsoft-HTTPAPI/2.0

Remove Microsoft-HTTPAPI/2.0 from the response header Server (Self-hosted Http.Sys)

如何抑制或删除 HTTP 响应 header 'Server: Microsoft-HTTPAPI/2.0'? 渗透测试发现,泄露服务器平台是一个安全漏洞。

我在 Windows Server 2019 上有一个 self-hosted asp.net 核心 Web 应用程序 运行,我使用 Http.Sys 而不是 Kestrel,因为我需要 NTML 身份验证.

根据 Microsoft 的说法,可以通过注册表关闭响应 header,但它对我不起作用。我已经在注册表中将 DisableServerHeader 设置为 2 HTTP.SYS registry settings 并重新启动了服务器。

  1. 如果我没有添加回复header,它会自动添加。 服务器:Microsoft-HTTPAPI/2.0
  2. 如果我添加响应 header,该值将自动添加。 服务器:my-dumy-valueMicrosoft-HTTPAPI/2.0

更新,我发现问题了! 我没有正确输入参数名称,导出密钥时出现拖尾space。删除 space 并重新启动服务器后,它按预期工作。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters]
"DisableServerHeader "=dword:00000002

您是否尝试过在 IIS

中使用 removeServerHeader 配置 requestFilter

参考:RequestFilter

默认设置为 false ,您可以设置为 true refer for more

似乎没有从主机上的服务器中删除 HTTP header 的代码解决方案。一种解决方案是编辑 Windows 注册表。

您可以添加一个注册表值,这样 HTTP.sys 就不会包含 header。

1.Open 注册表

2.Navigate 至:Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters

3.If DisableServerHeader 不存在,创建它(DWORD 32 位)并给它一个值 2。如果它确实存在,并且值不是 2,则将它设置为 2。

4.Reboot 服务器或通过调用“net stop http”然后“net start http”重新启动 HTTP 服务

参考:https://docs.microsoft.com/ru-ru/archive/blogs/dsnotes/wswcf-remove-server-header

我通过在注册表中输入正确的参数名称解​​决了这个问题。这是一个复制粘贴错误,键名有尾随 space.

密钥不再以 space 结尾,一切正常。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters]
"DisableServerHeader"=dword:00000002