當訪問IIS網站上的靜態HTML文件時,比如index.htm,IIS響應中會包含一個Content-Location文件頭。如果IIS配置不當,Content-Location文件頭中將包含服務器的IP地址內容,這樣就導致了隱藏在NAT防火墻或者代理服務器后面的內部網IP地址信息的泄漏,給攻擊者有漏可乘。
下面我就介紹2種解決辦法,實現將IP地址信息替換為域名信息的目的,幫助系統管理員消除內部網的IP地址泄漏隱患。
什么是IIS對頁面文件的響應信息
當我們使用瀏覽器訪問IIS網站Web服務器上的頁面內容時,IIS將返回給用戶一個完整的響應信息。簡單情況下,我們可以認為這個響應信息包含2部分內容:
1、系統信息:
諸如訪問狀態、服務器信息、文件類型、正文長度等內容。
2、正文信息:
通常情況下就是我們在瀏覽器中看到的頁面內容,也就是在瀏覽器中可以查看到的頁面源代碼內容。
當我們使用高級語言中的相關Internet控件訪問一個頁面內容時,比如使用VB的InternetControl控件來編寫自己的瀏覽器或者下載程序,最終就會得到包含上述2部分內容的完整響應信息。
首先我們來看看一個例子,它顯示了默認安裝情況下IIS對HTML文件的響應信息:
HTTP/1.1 200OK
Server:Microsoft-IIS/5.0
Content-Location:http://192.168.1.1/index.htm
Date:Wed, 31Oct200104:19:40GMT
Content-Type:text/html
Accept-Ranges:bytes
Last-Modified:Fri, 12Oct200107:48:06GMT
ETag:"03f7e3af252c11:9a2 "
Content-Length:7141
上面響應信息的第3行內容包含了內部網的IP地址信息,這是我們不希望的。我們希望IIS響應如下的內容:
HTTP/1.1 200OK
Server:Microsoft-IIS/5.0
Content-Location:http://www.mywebsite.com/index.htm
Date:Wed, 31Oct200104:19:40GMT
Content-Type:text/html
Accept-Ranges:bytes
Last-Modified:Fri, 12Oct200107:48:06GMT
ETag:"03f7e3af252c11:9a2 "
Content-Length:7141
也就是說,將第3行內容中的IP地址信息替換為域名信息。下面來看看解決辦法。
解決方法一:執行腳本程序Adsutil.vbs
通過修改IIS數據庫中的一個數值,就可以達到將Content-Location文件頭中的IP地址信息轉換為域名信息的目的。
第一種方法是通過執行一個VBS腳本程序完成IIS數據庫的相關修改工作,這個腳本程序叫做Adsutil.vbs,它隨IIS安裝后生成。
注意:由于實際的應用環境不同,微軟公司沒有擔保這個軟件的使用安全性。所以,我建議在執行這個腳本程序前,做好服務器上的重要數據備份。
對于IIS4.0服務器,執行步驟如下:
1、點擊“開始/運行”,輸入“cmd”,點擊“確定”,進入命令行狀態窗口。
2、切換到IIS4.0系統程序安裝目錄,一般是c:\winnt\system32\inetsrv\adminsamples 。
3、執行以下命令,修改IIS數據庫相關數值,設置Content-Location文件頭使用域名信息:
adsutilsetw3svc/UseHostNameTrue
4、執行以下命令,關閉Internet服務程序:netstopiisadmin/y
5、執行以下命令,重新啟動相關Internet應用程序:netstartw3svc
注意:在執行完第4步后,要觀察一下都有哪些Internet應用程序被停止,然后在第5步中依次重新啟動它們。
對于IIS5.0服務器,執行步驟如下:
1、點擊“開始/運行”,輸入“cmd”,點擊“確定”,進入命令行狀態窗口。
2、切換到IIS5.0系統程序安裝目錄,一般是c:\inetpub\adminscripts 。
3、執行以下命令,修改IIS數據庫相關數值,設置Content-Location文件頭使用域名信息:adsutilsetw3svc/UseHostNameTrue
4、執行以下命令,關閉Internet服務程序:netstopiisadmin/y
5、執行以下命令,重新啟動相關Internet應用程序:netstartw3svc
同樣請注意:在執行完第4步后,要觀察一下都有哪些Internet應用程序被停止,然后在第5步中依次重新啟動它們。
解決方法二:將.htm文件改名為.ASP文件,并定制文件頭信息
我要介紹的第二種方法采取了一種間接處理的方式:
1、首先將.HTM文件改名為.ASP文件。
2、因為IIS對ASP文件的響應中,并不包含Content-Location'>文件頭內容,所以接著要在IIS管理器中為之創建一個定制文件頭,以返回特殊的Content-Location文件頭內容。
下面我們來看看具體的操作步驟:
1、將靜態頁面文件(比如 .htm,.html)改名為.asp文件。注意,經過這樣的文件改名后,當訪問原來的.htm文件時,將啟動ASP引擎,從性能上來看,是稍稍有些降低的。
2、啟動Internet服務管理器
3、雙擊“Internet信息服務”,擴展下屬內容
4、點擊要處理服務器名字左邊的+號,擴展下屬內容
5、右鍵點擊“默認Web站點”,選擇“屬性”
6、點擊“頭”選項卡
7、在“自定義頭”部分,點擊“添加”
8、在“自定義頭名稱”處輸入“Content-Location”,在“自定義頭值”處輸入你期望的域名信息,比如“ttp://www.mywebsite.com”:
9、依次點擊“確定”,完成全部修改工作