我正在运行 Ubuntu 20.04 LEMP(Linux、Nginx、MariaDb、PHP)网络服务器。我还在从我的 MacOS 客户端机器上进行一些 nmap 漏洞测试。在 MacOS 上,我使用哦我的天啊!启用nmap
插件后。为了从我的 MacOS 客户端机器上对我的 Ubuntu Server 进行一些漏洞测试,我发出了以下命令:
nmap_check_for_vulns my.server.ip.address
这是
nmap --script=vuln
在使用我的服务器的 IP 地址发出命令后,nmap 报告了以下内容:
| http-vuln-cve2011-3192:
| VULNERABLE:
| Apache byterange filter DoS
| State: VULNERABLE
| IDs: CVE:CVE-2011-3192 BID:49303
| The Apache web server is vulnerable to a denial of service attack when numerous
| overlapping byte ranges are requested.
| Disclosure date: 2011-08-19
| References:
| https://www.tenable.com/plugins/nessus/55976
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-3192
| https://www.securityfocus.com/bid/49303
|_ https://seclists.org/fulldisclosure/2011/Aug/175
在 Ubuntu Server 上,输出为ss -lnpt
:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 100 0.0.0.0:25 0.0.0.0:*
LISTEN 0 511 0.0.0.0:443 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:8125 0.0.0.0:*
LISTEN 0 100 0.0.0.0:4190 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:19999 0.0.0.0:*
LISTEN 0 100 0.0.0.0:993 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:10023 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:10024 0.0.0.0:*
LISTEN 0 100 127.0.0.1:10025 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:10026 0.0.0.0:*
LISTEN 0 80 127.0.0.1:3306 0.0.0.0:*
LISTEN 0 100 0.0.0.0:587 0.0.0.0:*
LISTEN 0 128 0.0.0.0:43211 0.0.0.0:*
LISTEN 0 511 127.0.0.1:6379 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:783 0.0.0.0:*
LISTEN 0 100 0.0.0.0:143 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:10000 0.0.0.0:*
LISTEN 0 100 0.0.0.0:465 0.0.0.0:*
LISTEN 0 128 0.0.0.0:43219 0.0.0.0:*
LISTEN 0 256 0.0.0.0:53 0.0.0.0:*
我正在尝试关闭服务器上的这个漏洞,但是,我没有在服务器上安装 apache,所以我不知道为什么会出现这个漏洞!
我的问题是,如何找到存在漏洞的程序,以及如何关闭服务器上的漏洞?
答案1
检查ss -lnpt
哪个进程正在监听端口 80 或 443,这很可能是目标。
答案2
这古老的 查看并非特定于 apache2,它仅特定于缓解 apache2 上的此类 DoS 表面的一种特定方法。Nginx 不采用它:它默认满足大量单独范围的请求,但仅受标头大小限制。理论上,它(或任何按原样转发标头的内容)可能容易受到奇怪请求的过度资源使用的影响。
max_ranges number; Default: — Context: http, server, location
该指令出现在1.1.2版本中。
限制字节范围请求中允许的最大范围数。超出限制的请求将被视为未指定字节范围。默认情况下,范围数不受限制。零值将完全禁用字节范围支持。
它的问题远没有那个可以用来使 Apache 服务器过载的特定技巧那么严重。只要您的 nginx 没有在其他地方进行代理(或依赖于从缓存而不是代理来处理大多数请求),您可能不需要做任何事情,即使您没有使用该设置专门添加限制。
如今,网络服务器(2011 年之后维护的)漠视请求的范围大小总和超出了总内容长度- 一些在现实世界中很少应用的东西,所以比限制更好的缓解措施数字的范围。
无论如何……您可以从命令行手动编写这种烦人的请求。整个漏洞利用过程是发送一个请求,请求的标头包含数百个重叠范围,例如Range: bytes=1-1337,1-1338,1-1339
等等。观察响应(状态为 206;如果您看到 200,则 nginx 刚刚忽略了您的标头并返回了所有内容)是否明显变慢,然后您就会知道答案。