Apache Range Header DOS 攻擊讓主機資源輕易消秏待盡

标签: Secutiry | 发表时间:2011-09-16 12:01 | 作者:cross MorrisC
出处:http://ssorc.tw/

這個攻擊是八月底的消息,它是一個apache的弱點,對 header 作攻擊,好像是它本就是一個正常的規則,

只是如果分好幾個片斷去 request 的話,就會讓apache 資源慢慢的被耗光,最後 crashed。

一般對 80 的請求為

telnet 10.10.10.135 80

GET / HTTP/1.1

Host: 10.10.10.135

<enter> 

結果

HTTP/1.1 200 OK
Date: Thu, 15 Sep 2011 10:12:02 GMT
Server: Apache
X-Powered-By: PHP/4.3.9
Content-Length: 3
Connection: close
Content-Type: text/html; charset=UTF-8

wowConnection closed by foreign host.

如果帶上 range

telnet 10.10.10.135 80

GET / HTTP/1.1

Host: 10.10.10.135
Range: bytes=1-1,1-2,1-3

<enter>

結果

HTTP/1.1 206 Partial Content
Date: Thu, 15 Sep 2011 10:13:38 GMT
Server: Apache
X-Powered-By: PHP/4.3.9
Content-Length: 309
Connection: close
Content-Type: multipart/byteranges; boundary=4acf8215ee4231b04


--4acf8215ee4231b04
Content-type: text/html; charset=UTF-8
Content-range: bytes 1-1/3

o
--4acf8215ee4231b04
Content-type: text/html; charset=UTF-8
Content-range: bytes 1-2/3

ow
--4acf8215ee4231b04
Content-type: text/html; charset=UTF-8
Content-range: bytes 1-2/3

ow
--4acf8215ee4231b04--
Connection closed by foreign host.

似乎真的就比沒有range時多了幾個request。

所以這樣子就可以單台主機弄掛一個apache server ??!!

我試了發現者提供的程式 下載檔案killapache_pl.zip (918 Byte , 下載:2次) 測試,確實!!! 主機的負載慢慢的升高 (top),要再試著ssh登入主機也不行

有幾個解決方案

1。設置 httpd.conf 加入

# 要有 mod_header
RequestHeader unset Range

RequestHeader unset Request-Range

      再用攻擊程式時它就說  " Host does not seem vulnerable"

      不過
不知影響程度到如何 ??? 對於正常的瀏覽時 。

      可能影響到串流 server、或下載用的server

2。一樣在 httpd.conf加入

LimitRequestFieldSize 200

      不過可能影響到cookie,因為某些cookie要的大小可能大些

3。一樣是 httpd.conf

SetEnvIf Range (,.*?){5,} bad-range=1 RequestHeader unset Range env=bad-range

      讓apache偵測header多大時就自動忽略掉它,數值5就是要視情況調整

4。搭配mod_security 的設定 下載檔案mod_security_apache_header.conf.txt.zip (583 Byte , 下載:0次)

5。最後方式就是update apache 到 2.2.21

      https://lwn.net/Articles/458901/

SECURITY: CVE-2011-3192 (cve.mitre.org)
       core: Further fixes to the handling of byte-range requests to use
       less memory, to avoid denial of service. This patch includes fixes
       to the patch introduced in release 2.2.20 for protocol compliance,
       as well as the MaxRanges directive.


參考
http://seclists.org/fulldisclosure/2011/Aug/175
https://www.infosecisland.com/blogview/16131-Mitigating-the-Apache-Range-Header-DoS-Vulnerability.html
http://hi.baidu.com/rayh4c/blog/item/d264df1b196610ceac6e7543.html
http://www.blogjava.net/stone2083/archive/2011/08/29/357475.html
http://software.solidot.org/article.pl?sid=11%2F09%2F15%2F0510229&from=rss

相关 [apache range header] 推荐:

Apache Range Header DOS 攻擊讓主機資源輕易消秏待盡

- MorrisC - SSORC.tw
這個攻擊是八月底的消息,它是一個apache的弱點,對 header 作攻擊,好像是它本就是一個正常的規則,. 只是如果分好幾個片斷去 request 的話,就會讓apache 資源慢慢的被耗光,最後 crashed. 似乎真的就比沒有range時多了幾個request. 所以這樣子就可以單台主機弄掛一個apache server ??!!.

Apache 針對 Header 的安全性設定

- - SSORC.tw
Clickjacking 就是讓使用者在瀏覽網頁的點擊動作進行綁架,讓點擊動作產生非使用者所預期的行為,防禦方式就是設定 X-Frame-Options ,讓表頭回應時不受嵌入式網站影響,比方說自已的網站有放廣告的話,這麼設定就可以保護瀏覽 ssorc.tw 的人. OWASP 列出幾個 Header 需要安全性設定及描述,而 這裡 有設定參考.

HTTP Header 详解

- - 博客园_Ruby's Louvre
HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议. HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应. 就整个网络资源传输而言,包括message-header和message-body两部分. 首先传递message- header,即 http header消息.

easy Html5 - Jquery Mobile之ToolBars(Header and Footer)

- - 博客园_首页
jquery 在web js框架上的风暴还在继续却也随着移动终端走向了mobile;那么jquery mobile到底包括些什么呢. 页面Header是一个data-role为header的div,当然我们可以在这个div里定义其他任何内容,比如常用的后退按钮等;. 一般在header里添加的button不要太多,添加在header里的按钮带有自动定位功能;.

html的header结构和实例

- - 博客园_iTech's Blog
来自: http://www.cnblogs.com/FlyCat/archive/2012/06/27/2566325.html. HTML header结构.              base标签为页面上的所有链接规定默认地址或默认目标.              通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来构造新的相对 URL .

Google出品:开源Web App漏洞测试环境 – Firing Range

- - FreeBuf.COM | 关注黑客与极客
Google于周二发布了一个名为Firing Range的安全漏洞测试环境,旨在通过评估Web应用在XSS和其他方面的安全性,提高自动化扫描器的效率. Firing Range是由Google与米兰理工大学的安全研究员合作开发的,目的是为自动化扫描器建造一个“试验场”. Google公司自己也在使用Firing Range,目的“一是帮助我们测试,二是定义尽可能多的漏洞类型,包括一些我们目前尚且不能检测的”.

增加Apache2和Nginx的header长度限制

- - haohtml's blog
nginx默认的header长度上限是4k,如果超过了这个值. nginx会直接返回400错误. 可以通过以下2个参数来调整header上限. 看起来是,nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取.

SQL Server 中的事务和锁(三)-Range S-U,X-X 以及死锁

- Bloger - 博客园-首页原创精华区
Range T-K 到底代表了什么. Range T-K Lock 代表了在 SERIALIZABLE 隔离级别中,为了保护范围内的数据不被并发的事务影响而使用的一类锁模式(避免幻读). 第一个部分代表了他锁定了一个索引范围,在这个范围内,所有索引使用 T 锁进行锁定;. 第二个部分是而这个范围内已经命中的Key,这些 Key 将使用 K 锁进行锁定.

Apache Shiro 介绍

- - CSDN博客推荐文章
什么是Apache Shiro?. Apache shiro 是一个强大而灵活的开源安全框架,可清晰地处理身份认证、授权、会话(session)和加密. Apache Shiro最主要的初衷是为了易用和易理解,处理安全问题可能非常复杂甚至非常痛苦,但并非一定要如此. 一个框架应该尽可能地将复杂的问题隐藏起来,提供清晰直观的API使开发者可以很轻松地开发自己的程序安全代码.

Apache防止攻击

- - 小彰
为了防止恶意用户对Apache进行攻击,我们需要安装mod_security这个安全模块. mod_security 1.9.x模块的下载与安装. 下载地址: http://www.modsecurity.org/download/index.html. 建议使用1.9.x,因为2.x的配置指令与1.x完全不同,解压后进入解压目录,执行:.