(一)、軟體的下載與安裝
URLScan可以在微軟的網站上下載,地址如下:
.URLScan微軟下載
1 http://download.microsoft.com/download/iis50/Utility/2.1/NT45XP/EN-US/iislockd.exe(
2 URLScan Filter v3.1可以在微軟的網站上下載,地址如下:
http://download.microsoft.com/download/c/7/a/c7a411ed-1c0f-48c1-90e5-6d3a1ca054c1/urlscan_v31_x86.msi
和一般軟體一樣安裝,但是,此軟體不能選擇安裝路徑,安裝完成以後,我們可以在System32/InetSvr/URLScan目錄下找到以下檔案:
urlscan.dll:動態串連庫檔案;
urlscan.inf:安裝資訊檔;
urlscan.txt:軟體說明檔案;
urlscan.ini:軟體設定檔,這個檔案很只要,因為對URLScan的所有配置,均有這個檔案來完成。
(二)、軟體的配置
軟體的配置由urlscan.ini檔案來完成,在配置此檔案以前,我們需要瞭解一些基本知識。
1、urlscan設定檔的構造形式
urlscan設定檔必須遵從以下規則:
(1)此檔案名稱必須為urlscan.ini;
(2)設定檔必須和urlscan.dll在同一目錄;
(3)設定檔必須是標準ini檔案結構,也就是由節,串和值組成;
(4)設定檔修改以後,必須重新啟動IIS,使配置生效;
(5)設定檔由以下各節組成:
[Option]節,主要設定節;
[AllowVerbs]節,配置認定為合法URL規則設定,此設定與Option節有關;
[DenyVerbs]節,配置認定為非法URL規則設定,此設定與Option節有關;
[DenyHeaders]節,配置認定為非法的header在設立設定;
[AllowExtensions]節,配置認定為合法的副檔名在這裡設定,此設定與Option節有關;
[DenyExtensions]節,配置認定為非法的副檔名在這裡設定,此設定與Option節有關;
2、具體配置
(1)Option節的配置,因為Option節的設定直接影響到以後的配置,因此,這一節的設定特別重要。此節主要進行以下屬性的設定:
UseAllowVerbs:使用允許模式檢查URL請求,如果設定為1,所有沒有在[AllowVerbs]節設定的請求都被拒絕;如果設定為0,所有沒有在[DenyVerbs]設定的URL請求都認為合法;預設為1;
UseAllowExtensions:使用允許模式檢測副檔名;如果設定為 1,所有沒在[AllowExtensions]節設定的副檔名均認為是非法請求;如果設定為0,所有沒在[DenyExtensions]節設定的副檔名均被認為是合法請求;預設為0;
EnableLogging:是否允許使用Log檔案,如果為1,將在urlscan.dll的相同目錄設定名為urlscan.log的檔案記錄所有過濾;
AllowLateScanning:允許其他URL過濾在URLScan過濾之前進行,系統預設為不允許0;
AlternateServerName:使用服務名代替;如果此節存在而且[RemoveServerHeader]節設定為0,IIS將在這裡設定的伺服器名代替預設的“Server”;
NormalizeUrlBeforeScan:在檢測URL之前規格化URL;如果為1,URLScan將在IIS編碼URL之前URL進行檢測;需要提醒的是,只有管理員對URL解析非常熟悉的情況下才可以將其設定為0;預設為1;
VerifyNormalization:如果設定為1,UrlScan將校正URL規則,預設為1;此節設定與NormalizeUrlBeforeScan有關;
AllowHighBitCharacters:如果設定為1,將允許URL中存在所有位元組,如果為0,含有非ASCII字元的URL將拒絕;預設為1;
AllowDotInPath:如果設定為1,將拒絕所有含有多個“.”的URL請求,由於URL檢測在IIS解析URL之前,所以,對這一檢測的準確性不能保證,預設為0;
RemoveServerHeader:如果設定為1,將把所有應答的服務頭清除,預設為0;
(2)[AllowVerbs]節配置
如果UseAllowVerbs設定為1,此節設定的所有請求將被允許,一般設定以下請求:
GET、HEAD、POST
(3)[DenyVerbs]節配置
如果UseAllowVerbs設定為0,此節設定的所有請求將拒絕,一般設定以下請求:
PROPFIND、PROPPATCH、MKCOL、Delete、PUT、COPY、MOVE、LOCK、UNLOCK
(4)[AllowExtensions]節設定
在這一節設定的所有副檔名檔案將被允許請求,一般設定以下請求:
.asp、.htm、.html、.txt、.jpg、.jpeg、.gif,如果需要提供檔案下載服務,需要增加.rar、.zip
(5)[DenyExtensions]節設定
在這一節設定的所有副檔名檔案請求將被拒絕,根據已經發現的漏洞,我們可以在這一節增加內容,一般為以下設定:
.asa、可執行檔、批次檔、記錄檔、罕見擴充如:shtml、.printer等。
具體設定,應當視具體應用情況而定,否則會造成應用服務無法運行。譬如禁掉shtml,某些仿新浪的文章系統就無法運行了。另安上ASP.NET 2.0,然後資料庫副檔名改成MDB,就不用怕被下載了
微軟官方說明
修改 URLScan.ini 檔案
URLScan 的所有配置都是通過 URLScan.ini 檔案執行的,此檔案位於 %WINDIR%/System32/Inetsrv/URLscan 檔案夾中。要配置 URLScan,請在文字編輯器(如記事本)中開啟此檔案,進行相應的更改,然後儲存此檔案。
注意:要使更改生效,必須重新啟動 Internet 資訊服務 (IIS)。一種快速的實現方法是在命令提示字元處運行 IISRESET。
URLScan.ini 檔案包含以下幾節:
[Options]:此節描述常規 URLScan 選項。
[AllowVerbs] 和 [DenyVerbs]:此節定義 URLScan 允許的謂詞(又稱作 HTTP 方法)。
[DenyHeaders]:此節列出 HTTP 要求中不允許的 HTTP 標題。如果 HTTP 要求中包含此節中列出的 HTTP 標題之一,URLScan 將拒絕該請求。
[AllowExtensions] 和 [DenyExtensions]:此節定義 URLScan 允許的副檔名。
[DenyURLSequences]:此節列出 HTTP 要求中不允許的字串。URLScan 拒絕那些包含此節中出現的字串的 HTTP 要求。
本文將更詳細地介紹每一節。
[Options] 節
在 [Options] 節中,可以配置許多 URLScan 選項。此節中的每一行都具有以下格式:
OptionName=OptionValue
可用選項及其預設值如下所示:
UseAllowVerbs=1
預設情況下,此選項設定為 1。如果將此選項設定為 1,則 URLScan 僅允許那些使用 [AllowVerbs] 節中列出的謂詞的 HTTP 要求。URLScan 禁止任何不使用這些謂詞的請求。如果將此選項設定為 0,則 URLScan 忽略 [AllowVerbs] 節,相反僅禁止那些使用 [DenyVerbs] 節中列出的謂詞的請求。
UseAllowExtensions=0
預設情況下,此選項設定為 0。如果將此選項設定為 0,則 URLScan 禁止對 [DenyExtensions] 節中列出的副檔名的請求,但允許對任何其他副檔名的請求。如果將此選項設定為 1,則 URLScan 僅允許對帶 [AllowExtensions] 節中列出的副檔名的檔案的請求,而禁止對任何其他檔案的請求。
NormalizeUrlBeforeScan=1
IIS 收到用 URL 編碼的請求。這表示某些字元可能被替換為百分比符號 (%) 後跟特定的數字。例如,%20 對應於一個空格,因此,對 http://myserver/My%20Dir/My%20File.htm 的請求與對 http://myserver/My Dir/My File.htm 的請求是相同的。標準化就是對 URL 編碼請求進行解碼的過程。預設情況下,此選項設定為 1。如果將 NormalizeUrlBeforeScan 選項設定為 1,則 URLScan 分析已解碼的請求。如果將此選項設定為 0,則 URLScan 分析未解碼的請求。將此選項設定為 0 會影響 URLScan 禁止某種攻擊的能力。
VerifyNormalization=1
由於百分比符號 (%) 本身可以是 URL 編碼的,所以攻擊者可以向伺服器提交一個精心製作的、基本上是雙重編碼的請求。如果發生這種情況,IIS 可能會接受本應視作無效而拒絕的請求。預設情況下,此選項設定為 1。如果將 VerifyNormalization 選項設定為 1,則 URLScan 將對 URL 執行兩次標準化。如果第一次標準化後的 URL 與第二次標準化後的 URL 不同,URLScan 將拒絕該請求。這樣就可以防止那些依賴雙重編碼請求的攻擊。
AllowHighBitCharacters=0
預設情況下,此選項設定為 0。如果將此選項設定為 0,則 URLScan 拒絕任何包含非 ASCII 字元的請求。這樣可以防止某些類型的攻擊,但同時可能也會禁止對某些合法檔案的請求,如帶有非英文名的檔案。
AllowDotInPath=0
預設情況下,此選項設定為 0。如果將此選項設定為 0,則 URLScan 拒絕所有包含多個句點 (.) 的請求。這樣可以防止通過將安全的副檔名放入 URL 的路徑資訊或查詢字串部分,以達到偽裝請求中的危險副檔名的企圖。例如,如果將此選項設定為 1,則 URLScan 可能允許對 http://servername/BadFile.exe/SafeFile.htm 的請求,因為它認為這是對 HTML 頁的請求,但實際上這是一個對可執行 (.exe) 檔案的請求,而該檔案的名稱在 PATH_INFO 地區中顯示為 HTML 頁的名稱。如果將此選項設定為 0,URLScan 可能還會拒絕對包含句點的目錄的請求。
RemoveServerHeader=0
預設情況下,Web 服務器返回一個標題,其中指出了 Web 服務器在所有響應中啟動並執行 Web 服務器軟體。這會增加伺服器遭受攻擊的可能性,因為攻擊者可以確定伺服器正在運行 IIS,於是便攻擊已知的 IIS 問題,而不是試圖使用為其他 Web 服務器設計的攻擊手段來攻擊 IIS 伺服器。預設情況下,此選項設定為 0。如果將 RemoveServerHeader 選項設定為 1,可以防止您的伺服器發送將其標識為 IIS 伺服器的標題。如果將 RemoveServerHeader 設定為 0,則仍發送此標題。
AlternateServerName=(預設情況下不指定)
如果將 RemoveServerHeader 設定為 0,可以在 AlternateServerName 選項中指定一個字串以指定將在伺服器標題中傳回的內容。如果將 RemoveServerHeader 設定為 1,則此選項將被忽略。
EnableLogging=1
預設情況下,URLScan 在 %WINDIR%/System32/Inetsrv/URLScan 中保留所有被禁止的請求的完整日誌。如果不希望保留此日誌,可將 EnableLogging 設定為 0。
PerProcessLogging=0
預設情況下,此選項設定為 0。如果將此選項設定為 1,URLScan 將為承載 URLScan.dll 的每個進程建立一個單獨的日誌。如果將此選項設定為 0,所有進程將記錄到同一個檔案中。
PerDayLogging=1
預設情況下,此選項設定為 1。如果將該值設定為 1,則 URLScan 每天建立一個新的記錄檔。每個記錄檔的名稱都是 Urlscan.MMDDYY.log,其中 MMDDYY 是記錄檔的日期。如果將該值設定為 0,則所有日誌記錄都儲存在同一個檔案中,與日期無關。
AllowLateScanning=0
預設情況下,此選項設定為 0。如果將此選項設定為 0,則 URLScan 作為高優先順序篩選器運行,這表示它先於伺服器上安裝的所有其他 網際網路服務器API (ISAPI) 篩選器執行。如果將此選項設定為 1,則 URLScan 作為低優先順序篩選器運行,以便其他篩選器可以在 URLScan 進行任何分析之前修改 URL。FrontPage Server Extensions (FPSE) 要求將此選項設定為 1。
RejectResponseUrl=(預設情況下不指定)
此選項指定在 URLScan 禁止請求時啟動並執行檔案的虛擬路徑。這允許您自訂針對被禁止的請求發送給客戶機的響應。必須將 RejectResponseUrl 指定為相應檔案的虛擬路徑,如 /Path/To/RejectResponseHandler.asp。可以指定 URLScan 通常禁止的檔案,如 Active Server Pages (ASP) 頁。還可以從該頁指定以下伺服器變數:
HTTP_URLSCAN_STATUS_HEADER:此變數指定請求被禁止的原因。
HTTP_URLSCAN_ORIGINAL_VERB:此變數指定被禁止的請求中的原始謂詞(例如 GET、POST、HEAD 或 DEBUG)。
HTTP_URLSCAN_ORIGINAL_URL:此變數指定被禁止的請求中的原始 URL。
如果將 RejectResponseUrl 設定為特殊值 /~*,則 URLScan 使用“僅日誌記錄”模式。這允許 IIS 為所有請求提供服務,但它會在 URLScan 日誌中為所有通常被禁止的請求添加相應的項。這在需要測試 URLScan.ini 檔案時很有用。
如果沒有指定 RejectResponseUrl 的值,則 URLScan 使用預設值 /<Rejected-By-UrlScan>。
UseFastPathReject=0
預設情況下,此選項設定為 0。如果將此選項設定為 1,則 URLScan 忽略 RejectResponseUrl 設定並立即向瀏覽器返回 404 錯誤資訊。這比處理 RejectResponseUrl 要快,但它允許的日誌記錄選項沒有那麼多。如果將此選項設定為 0,則 URLScan 使用 RejectResponseUrl 設定來處理請求。
[AllowVerbs] 節和 [DenyVerbs] 節
[AllowVerbs] 節和 [DenyVerbs] 節定義 URLScan 允許的 HTTP 謂詞(又稱作方法)。常用的 HTTP 謂詞包括 GET、POST、HEAD 和 PUT。其他應用程式(如 FPSE 和 Web 分布式創作和版本控制 (WebDAV))使用更多的謂詞。
[AllowVerbs] 節和 [DenyVerbs] 節的文法相同。它們由 HTTP 謂詞列表組成,每個謂詞佔一行。
URLScan 根據 [Options] 節中 UseAllowVerbs 選項的值來決定使用哪一節。預設情況下,此選項設定為 1。如果將 UseAllowVerbs 設定為 1,則 URLScan 僅允許那些使用 [AllowVerbs] 節中列出的謂詞的請求。不使用任何這些謂詞的請求將被拒絕。在這種情況下,[DenyVerbs] 節被忽略。
如果將 UseAllowVerbs 設定為 0,則 URLScan 拒絕那些使用 [DenyVerbs] 節中明確列出的謂詞的請求。允許任何使用未在此節中出現的謂詞的請求。在這種情況下,URLScan 忽略 [AllowVerbs] 節。
[DenyHeaders] 節
當客戶機向 Web 服務器請求頁面時,它通常會發送一些包含有關此請求的其他資訊的 HTTP 標題。常見的 HTTP 標題包括:
Host:
此標題包含 Web 服務器的名稱。
Accept:
此標題定義客戶機可以處理的檔案類型。
User-Agent:
此標題包含請求頁面的瀏覽器的名稱。
Authorization:
此標題定義客戶機支援的驗證方法。
客戶機可能會向伺服器發送其他標題以指定其他資訊。
在 [DenyHeaders] 節中,您定義 URLScan 將拒絕的 HTTP 標題。如果 URLScan 收到的請求中包含此節中列出的任何標題,它將拒絕該請求。此節由 HTTP 標題列表組成,每個標題佔一行。標題名後面必須跟一個冒號 (:)(例如 Header-Name:)。
[AllowExtensions] 節和 [DenyExtensions] 節
大多數檔案都有一個標識其檔案類型的副檔名。例如,Word 文檔的檔案名稱一般以 .doc 結束,HTML 檔案名一般以 .htm 或 .html 結束,純文字檔案名稱一般以 .txt 結束。[AllowExtensions] 節和 [DenyExtensions] 節允許您定義 URLScan 將禁止的副檔名。例如,您可以配置 URLScan 以拒絕對 .exe 檔的請求,防止 Web 使用者在您的系統上執行應用程式。
[AllowExtensions] 節和 [DenyExtensions] 節的文法相同。它們由副檔名列表組成,每個副檔名佔一行。副檔名以句點 (.) 開頭(例如 .ext)。
URLScan 根據 [Options] 節中 UseAllowExtensions 的值來決定使用哪一節。預設情況下,此選項設定為 0。如果將 UseAllowExtensions 設定為 0,則 URLScan 僅拒絕對 [DenyExtensions] 節中列出的副檔名的請求。允許此節中未列出的任何副檔名。[AllowExtensions] 節被忽略。
如果將 UseAllowExtensions 設定為 1,則 URLScan 拒絕對 [AllowExtensions] 節中未明確列出的任何副檔名的請求。僅允許對此節中列出的副檔名的請求。[DenyExtensions] 節被忽略。
有關如何配置 URLScan 以允許對沒有副檔名的檔案的請求的其他資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
312376 (http://support.microsoft.com/kb/312376/ ) 如何配置 URLScan 以在 IIS 中允許使用空副檔名的請求
[DenyUrlSequences] 節
可以配置 URLScan 以禁止那些 URL 中包含某些字元序列的請求。例如,可以禁止那些包含兩個連續句點 (..) 的請求,利用目錄遍曆漏洞的攻擊中經常採用這種手段。要指定一個想要禁止的字元序列,請將此序列單獨放在 [DenyUrlSequences] 節中的一行上。
請注意,添加字元序列可能會對 Microsoft Exchange 的 Outlook Web Access (OWA) 產生負面影響。當您從 OWA 開啟一個郵件時,該郵件的主旨列包含在伺服器所請求的 URL 中。由於 URLScan.ini 檔案禁止任何包含百分比符號 (%) 和連字號 (&) 的請求,因此,當使用者嘗試開啟主旨列為“Sales increase by 100%”或“Bob & Sue are coming to town”的郵件時,會收到 404 錯誤資訊。要解決此問題,可以從 [DenyUrlSequences] 節中刪除這些序列。請注意,這樣做會降低安全性,因為它有可能允許危險的請求到達伺服器。
------------------
• 在不運行 IISLockdown 的情況下安裝 URLScan 2.0:要在不運行 IISLockdown 的情況下安裝 URLScan,需要手動從 IIS Lockdown 工具中提取它。首先,需要將 IISLockd.exe 儲存到一個目錄下。然後,要提取 URLScan 安裝檔案,請從安裝 IISLockd.exe 的目錄處的命令列運行以下命令:
iislockd.exe /q /c
這會解包 URLScan.exe,即 URLScan 安裝程式。
和一般軟體一樣安裝,但是,此軟體不能選擇安裝路徑,安裝完成以後,我們可以在System32/InetSvr/URLScan目錄下找到以下檔案:
------------------