CNNVD编号:CNNVD-201108-440
CVE编号: CVE-2011-3192
漏洞
Apache HTTP Server是一款开源的流行的HTTPD服务程序。
当处理包含大量Ranges头的HTTP请求时,ByteRange过滤器存在一个错误,攻击者可以向服务器发送特制HTTP请求,消耗大量内存,造成应用程序崩溃。
apache 2.2.17 有一个可远程利用的 dos 漏洞,它允许消耗目标系统上的所有内存。触发内存消耗的请求包括一个大的“范围”标头,该标头从 httpd 服务的文件中请求尽可能多的不同字节。将其与 gzip“Accept-Encoding”标头相结合,假设 httpd 会压缩 Range 标头中请求的每个字节,从而分别消耗大量内存区域。压缩流时的行为是毁灭性的,最终可能导致在并行发送请求时底层操作系统不可用。症状是交换到磁盘并杀死进程,包括但不只是 httpd 进程
影响版本: Apache 低于2.2.19的2.2.x版本
解决
第一个缓解选项是配置更改
RequestHeader 未设置范围
除了从请求标头中删除“Range”之外,删除“If-Range”可能也很有用,并且回复“Accept-Ranges:none”也可能是礼貌的。这可以通过以下方式完成:
从请求头中删除“Range”和“If-Range”
RequestHeader 未设置范围
RequestHeader 未设置 If-Range
从响应头中删除所有“Accept-Ranges”
标头未设置接受范围
#将“Accept-Ranges: none”设置为响应头
标头集 Accept-Ranges none
(我不确定“标题未设置接受范围”是否是必要的。)
根据 HTTP 1.1 规范 RFC 2616:
*“不接受任何类型的资源范围请求的服务器可以发送‘Accept-Ranges: none’”(第 14.5 节);和
*“服务器可以忽略 Range 标头”(第 14.35.2 节)。
利用的payload
https://bz.apache.org/bugzilla/show_bug.cgi?id=51714
第二个方案是升级
升级到2.2.20及以上版本
Linux/Unix解决方案:屏蔽软件版本信息,并升级服务器到最新版本。
Windows解决方案:屏蔽软件版本信息,并升级服务器到最新版本。
备注:
扫描器一般通过Web服务器的banner推测您的服务器存在该漏洞,如果您手工修改过服务器的banner,可能会导致误报。
复现
可以用awvs扫描出来
https://blog.youkuaiyun.com/xiaofengdada/article/details/123015700