Apache Range Exploit Detector_01.gif

近期Apache又發生了漏洞危機,可藉由Dos攻擊阻斷服務,輕鬆地讓Apache停止服務,若是採用Apache架站的朋友得特別留意囉!或是你承租的虛擬主機是使用Apache的話,也記得自己補強一下,或是通知虛擬主機廠商要求改善。

線上檢測

檢測網址:http://apache-range-exploit.com/
首先我們可以透過以上網址進行檢測,將自己的網址填入Find的右側欄位,之後點選下方的Submit按鈕開始檢測。

Apache Range Exploit Detector_02.gif

若是有風險Vulnerable的欄位則會顯示紅色的YES,若是沒有的話也可以再透過以下的php程式自行檢測一下。

php檢測
[code]function check_for_exploit($host,$port=80,$timeout=10){
$range = '0-1';
for($i=0;$i<20;$i++){
$range .= ",5-$i";
}

$error_code = null;
$error = null;

$socket = fsockopen($host,$port,$error_code,$error,$timeout);
$packet = "HEAD / HTTP/1.1\r\nHost: $host\r\nRange:bytes=$range\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";
fwrite($socket,$packet);
$result = fread($socket,2048);
//check to see if "Partial" is in the response
if(strstr($result,"Partial") !== false){
return true;
}
return false;
}[/code]

簡易處理方法
  • 利用mod_rewrite模組修復,在網站的.htaccess檔案內加入
    [code]RewriteEngine on
    RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$)
    RewriteRule .* - [F][/code]
  • 利用setenvif_module模組修復,在網站的.htaccess檔案內加入
    [code]SetEnvIf Range (,.*?){5,} bad-range=1
    RequestHeader unset Range env=bad-range
    # optional logging, uncomment and set path to log matches
    # CustomLog /var/log/range-CVE-2011-3192.log common env=bad-range[/code]
  • 利用headers_module模組修復,在網站的.htaccess檔案內加入
    [code]RequestHeader unset Range[/code]
前兩種方式是比較推薦的解決方式,也可以加入httpd.conf的全域設定,若是apache不能升級到最新版本,就用以上的方式暫時防禦一下囉!
更多資訊請參考:
最新超值旗艦機開箱
比螺旋燈泡還省電的迷你 NAS
26800mAh筆電行動電源