訪問網(wǎng)站時如果訪問路徑中缺少/,大多數(shù)中間件都會自動將路徑補(bǔ)全,返回302或301跳轉(zhuǎn)如下圖,Location位置的域名會使用Host頭的值。
這種情況實(shí)際上風(fēng)險較低,難以構(gòu)成Host頭攻擊。但是由于大多漏洞掃描器會將這種情況檢測為Host頭攻擊,為了通過上級檢查或各種審核,大多數(shù)甲方單位會要求修復(fù)漏洞,徹底解決問題。

該跳轉(zhuǎn)路徑不是web項(xiàng)目定義的,是中間件自動跳轉(zhuǎn)的,所以不能用編寫靜態(tài)變量的方法修復(fù),web項(xiàng)目中的全局過濾器也無法攔截。需要在web服務(wù)器層面配置才能修復(fù)。下面給出幾種常見服務(wù)器的參考修復(fù)方法,其中如有錯誤或不妥的地方歡迎指正。
Apache:
方法一:
修改confhttpd.conf文件
修改ServerName為應(yīng)用的域名,例如
ServerName www.domain.com:80
添加下列行
UseCanonicalName On
重啟Apache即可。
修復(fù)成功的話會看到,服務(wù)器端將會使用設(shè)定好的ServerName。

參數(shù)解釋:

方法二:
修改confhttpd.conf文件
參考以下配置添加:
NameVirtualHost 192.168.1.25
ServerName 192.168.1.25
Order Allow,Deny
Deny from all
DocumentRoot "C:www"
ServerName www.test.com
重啟Apache即可。
作用:
拒絕直接通過192.168.1.25這個IP的任何訪問請求,這時如果你用192.168.1.25訪問,會提示拒絕訪問。僅允許通過www.test.com這個域名訪問,主目錄指向C:www
方法三:
修改confhttpd.conf文件
找到"#LoadModule rewrite_module modules/mod_rewrite.so"去除前面的"#"號
添加類似以下配置:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^192.168.1.25$ [NC]
RewriteRule ^(.*)$ /error.html
重啟Apache即可。
作用:
當(dāng)HOST頭不是192.168.1.25時,重定向到錯誤頁面。
Nginx:
方法一:
修改nginx.conf
添加一個默認(rèn)server,當(dāng)host頭被修改匹配不到server時會跳到該默認(rèn)server,該默認(rèn)server直接返回403錯誤。
例子如下:
server {
listen 8888 default;
server_name _;
location / {
return 403;
}
}
重啟nginx即可。
方法二:
修改nginx.conf
在目標(biāo)server添加檢測規(guī)則,參考以下標(biāo)紅配置:
server {
server_name 192.168.1.121;
listen 8888;
if ($http_Host !~*^192.168.1.121:8888$)
{
return 403;
}
include /etc/nginx/default.d/*.conf;
location / {
root /www/dvwa;
index index.php index.html index.htm;
}
}
重啟nginx即可。

Tomcat:
修改tomcatconfserver.xml
找到如下位置:
將Host里的name修改為靜態(tài)的域名,如下:
重啟tomcat即完成修復(fù)。
IIS6.0:
使用ISAPI_Rewrite插件對請求包內(nèi)容進(jìn)行檢測并重寫URL。
插件安裝包和破解工具下載地址:https://pan.baidu.com/s/1hZVfCm7FraQWHlKMKyItFQ
下載完成后雙擊程序一直點(diǎn)擊下一步安裝即可。
破解工具解壓后如圖三個文件

將破解的這三個文件直接復(fù)制粘貼到ISAPI_Rewrite的安裝目錄,也就是覆蓋掉官方的原文件, 如果提示不能覆蓋,你可以先將官方的這個三個文件重命名其它的名字,再將這個三個破解文件復(fù)制過來。
替換完成后,必須為ISAPI_Rewrite.dll添加SERVICE用戶組,并授予讀取、讀取和運(yùn)行權(quán)限。(該步非常重要,否則后續(xù)ISAPI_Rewrite將無法工作)。
打開IIS管理工具,選擇目標(biāo)項(xiàng)目->屬性->ISAPI篩選器->添加->選擇你安裝的ISAPI_Rewrite.dll文件的路徑->確定
重啟IIS和重新打開IIS管理工具,在目標(biāo)項(xiàng)目->屬性中可以看到新增的ISAPI_Rewrite標(biāo)簽,在這里可以根據(jù)需求直接寫.htaccess規(guī)則進(jìn)行重定向。

配置Host頭白名單,可參考以下規(guī)則。
配置完成點(diǎn)擊應(yīng)用后,當(dāng)請求包中Host字段不為設(shè)定好的192.168.2.141時,會自動跳轉(zhuǎn)到報錯頁面。
IIS7.0/7.5/8.0:
微軟推出了一款URL 重寫模塊工具,可對請求URL進(jìn)行過濾處理,此工具需要自行安裝,下面提供工具下載地址:
微軟下載地址(64位): http://www.microsoft.com/zh-cn/download/details.aspx?id=7435
微軟下載地址(32位): http://www.microsoft.com/zh-cn/download/details.aspx?id=5747
下載完成后雙擊程序一直點(diǎn)擊下一步安裝即可。
然后重新啟動iis管理工具,此時可以看到IIS欄下有一個URL重寫工具。
雙擊URL重寫功能,然后在URL地址入站規(guī)則欄上添加規(guī)則。
選擇請求阻止。
參照下圖進(jìn)行配置規(guī)則,主機(jī)頭那填寫好網(wǎng)站域名或ip即可,然后點(diǎn)擊確定。
此時雙擊剛創(chuàng)建的規(guī)則。
在請求的URL選擇項(xiàng)選擇“與模式不匹配”,在使用項(xiàng)那選擇“完成匹配”,在操作類型那選擇“中止請求”,然后點(diǎn)擊右上角的應(yīng)用按鈕。
然后重新啟動網(wǎng)站,此時重新測試就會發(fā)現(xiàn)當(dāng)host不是192.168.122.139時,服務(wù)器會中止請求,從而起到防范host頭部的作用。

IIS 詳細(xì)配置
- 安裝偽靜態(tài)的工具后,重啟IIS
- 打開網(wǎng)站,雙擊URL重寫
- 添加請求 -- 請求阻止
- 配置如下:
字段 值 阻止依據(jù) 主機(jī)頭 阻止請求 與模式不匹配 模式(主機(jī)頭) 192.168.1.*** 使用 通配符 阻止方式 403
- 雙擊剛創(chuàng)建的規(guī)則 -- 模式不匹配 -- 完全匹配 -- 最下面(中止請求)
以上常見有關(guān)httphost頭技術(shù)問題要點(diǎn)由博路網(wǎng)絡(luò)收集整理,能供大家參考學(xué)習(xí)使用,以提高宜興做網(wǎng)站的安全性。
