IIS Web 服務器的權限設置有兩個地方,一個是 NTFS 文件系統本身的權限設置,另一個是 IIS 下網站->站點->屬性->主目錄(或站點下目錄->屬性->目錄)面板上。這兩個地方是密切相關的。下面我會以實例的方式來講解如何設置權限。
IIS 下網站->站點->屬性->主目錄(或站點下目錄->屬性->目錄)面板上有:
腳本資源訪問
讀取
寫入
瀏覽
記錄訪問
索引資源
6 個選項。這 6 個選項中,“記錄訪問”和“索引資源”跟安全性關系不大,一般都設置。但是如果前面四個權限都沒有設置的話,這兩個權限也沒有必要設置。在設置權限時,記住這個規則即可,后面的例子中不再特別說明這兩個權限的設置。
讀取
寫入
瀏覽
記錄訪問
索引資源
6 個選項。這 6 個選項中,“記錄訪問”和“索引資源”跟安全性關系不大,一般都設置。但是如果前面四個權限都沒有設置的話,這兩個權限也沒有必要設置。在設置權限時,記住這個規則即可,后面的例子中不再特別說明這兩個權限的設置。
另外在這 6 個選項下面的執行權限下拉列表中還有:
無
純腳本
純腳本和可執行程序
3 個選項。
純腳本
純腳本和可執行程序
3 個選項。
而網站目錄如果在 NTFS 分區(推薦用這種)的話,還需要對 NTFS 分區上的這個目錄設置相應權限,許多地方都介紹設置 everyone 的權限,實際上這是不好的,其實只要設置好 Internet 來賓帳號(IUSR_xxxxxxx)或 IIS_WPG 組的帳號權限就可以了。如果是設置 ASP、PHP 程序的目錄權限,那么設置 Internet 來賓帳號的權限,而對於 ASP.NET 程序,則需要設置 IIS_WPG 組的帳號權限。在后面提到 NTFS 權限設置時會明確指出,沒有明確指出的都是指設置 IIS 屬性面板上的權限。
例1 —— ASP、PHP、ASP.NET 程序所在目錄的權限設置:
如果這些程序是要執行的,那么需要設置“讀取”權限,並且設置執行權限為“純腳本”。不要設置“寫入”和“腳本資源訪問”,更不要設置執行權限為“純腳本和可執行程序”。NTFS 權限中不要給 IIS_WPG 用戶組和 Internet 來賓帳號設置寫和修改權限。如果有一些特殊的配置文件(而且配置文件本身也是 ASP、PHP 程序),則需要給這些特定的文件配置 NTFS 權限中的 Internet 來賓帳號(ASP.NET 程序是 IIS_WPG 組)的寫權限,而不要配置 IIS 屬性面板中的“寫入”權限。
如果這些程序是要執行的,那么需要設置“讀取”權限,並且設置執行權限為“純腳本”。不要設置“寫入”和“腳本資源訪問”,更不要設置執行權限為“純腳本和可執行程序”。NTFS 權限中不要給 IIS_WPG 用戶組和 Internet 來賓帳號設置寫和修改權限。如果有一些特殊的配置文件(而且配置文件本身也是 ASP、PHP 程序),則需要給這些特定的文件配置 NTFS 權限中的 Internet 來賓帳號(ASP.NET 程序是 IIS_WPG 組)的寫權限,而不要配置 IIS 屬性面板中的“寫入”權限。
IIS 面板中的“寫入”權限實際上是對 HTTP PUT 指令的處理,對於普通網站,一般情況下這個權限是不打開的。
IIS 面板中的“腳本資源訪問”不是指可以執行腳本的權限,而是指可以訪問源代碼的權限,如果同時又打開“寫入”權限的話,那么就非常危險了。
執行權限中“純腳本和可執行程序”權限可以執行任意程序,包括 exe 可執行程序,如果目錄同時有“寫入”權限的話,那么就很容易被人上傳並執行木馬程序了。
對於 ASP.NET 程序的目錄,許多人喜歡在文件系統中設置成 Web 共享,實際上這是沒有必要的。只需要在 IIS 中保證該目錄為一個應用程序即可。如果所在目錄在 IIS 中不是一個應用程序目錄,只需要在其屬性->目錄面板中應用程序設置部分點創建就可以了。Web 共享會給其更多權限,可能會造成不安全因素。
也就是說一般不要打開-主目錄-(寫入),(腳本資源訪問) 這兩項以及不要選上(純腳本和可執行程序),選(純腳本)就可以了.需要asp.net的應用程序的如果應用程序目錄不止應用程序一個程序的可以在應用程序文件夾上(屬性)-目錄-點創建就可以了.不要在文件夾上選web共享.
例2 —— 上傳目錄的權限設置:
用戶的網站上可能會設置一個或幾個目錄允許上傳文件,上傳的方式一般是通過 ASP、PHP、ASP.NET 等程序來完成。這時需要注意,一定要將上傳目錄的執行權限設為“無”,這樣即使上傳了 ASP、PHP 等腳本程序或者 exe 程序,也不會在用戶瀏覽器里就觸發執行。
用戶的網站上可能會設置一個或幾個目錄允許上傳文件,上傳的方式一般是通過 ASP、PHP、ASP.NET 等程序來完成。這時需要注意,一定要將上傳目錄的執行權限設為“無”,這樣即使上傳了 ASP、PHP 等腳本程序或者 exe 程序,也不會在用戶瀏覽器里就觸發執行。
同樣,如果不需要用戶用 PUT 指令上傳,那么不要打開該上傳目錄的“寫入”權限。而應該設置 NTFS 權限中的 Internet 來賓帳號(ASP.NET 程序的上傳目錄是 IIS_WPG 組)的寫權限。
如果下載時,是通過程序讀取文件內容然后再轉發給用戶的話,那么連“讀取”權限也不要設置。這樣可以保證用戶上傳的文件只能被程序中已授權的用戶所下載。而不是知道文件存放目錄的用戶所下載。“瀏覽”權限也不要打開,除非你就是希望用戶可以瀏覽你的上傳目錄,並可以選擇自己想要下載的東西。
一般的一些asp.php等程序都有一個上傳目錄.比如論壇.他們繼承了上面的屬性可以運行腳本的.我們應該將這些目錄從新設置一下屬性.將(純腳本)改成(無).
例3 —— Access 數據庫所在目錄的權限設置:
許多 IIS 用戶常常采用將 Access 數據庫改名(改為 asp 或者 aspx 后綴等)或者放在發布目錄之外的方法來避免瀏覽者下載它們的 Access 數據庫。而實際上,這是不必要的。其實只需要將 Access 所在目錄(或者該文件)的“讀取”、“寫入”權限都去掉就可以防止被人下載或篡改了。你不必擔心這樣你的程序會無法讀取和寫入你的 Access 數據庫。你的程序需要的是 NTFS 上 Internet 來賓帳號或 IIS_WPG 組帳號的權限,你只要將這些用戶的權限設置為可讀可寫就完全可以保證你的程序能夠正確運行了。
許多 IIS 用戶常常采用將 Access 數據庫改名(改為 asp 或者 aspx 后綴等)或者放在發布目錄之外的方法來避免瀏覽者下載它們的 Access 數據庫。而實際上,這是不必要的。其實只需要將 Access 所在目錄(或者該文件)的“讀取”、“寫入”權限都去掉就可以防止被人下載或篡改了。你不必擔心這樣你的程序會無法讀取和寫入你的 Access 數據庫。你的程序需要的是 NTFS 上 Internet 來賓帳號或 IIS_WPG 組帳號的權限,你只要將這些用戶的權限設置為可讀可寫就完全可以保證你的程序能夠正確運行了。
Internet 來賓帳號或 IIS_WPG 組帳號的權限可讀可寫.那么Access所在目錄(或者該文件)的“讀取”、“寫入”權限都去掉就可以防止被人下載或篡改了
例4 —— 其它目錄的權限設置:
你的網站下可能還有純圖片目錄、純 html 模版目錄、純客戶端 js 文件目錄或者樣式表目錄等,這些目錄只需要設置“讀取”權限即可,執行權限設成“無”即可。其它權限一概不需要設置。
-----------------------------------------------------我是分割線------------------------------------------------------
首先要有這樣的思路:2000對應iis5.0 ,xp對應iis5.1 ,2003對應iis6.0
配置 Web 權限
以下是根據發布的材料的用途來配置 Web 權限的各種方法:
以下是根據發布的材料的用途來配置 Web 權限的各種方法:
啟用讀取、寫入和目錄瀏覽:啟用這些權限允許客戶端查看資源列表並進行修改(除非對這些資源沒有寫入權限)、發布自己的資源以及處理文件。
啟用寫入;並禁用讀取和目錄瀏覽: 如果只想讓客戶端在目錄中發布私人信息,而不希望別人查看所發布的內容,可以設置寫入權限,但不設置讀取和目錄瀏覽權限。該配置在客戶端端提交選票或性能檢查時非常有用。
啟用寫入;並禁用讀取和目錄瀏覽: 如果只想讓客戶端在目錄中發布私人信息,而不希望別人查看所發布的內容,可以設置寫入權限,但不設置讀取和目錄瀏覽權限。該配置在客戶端端提交選票或性能檢查時非常有用。
啟用讀取和寫入;並禁用目錄瀏覽:如果希望通過隱藏文件名來提高安全性,可設置該配置。然而,請注意,通過隱藏文件名來設置安全性是一種低級的安全防范措施,因為一個故意破壞者可通過試探和錯誤信息來猜測出文件名。
啟用索引資源:如果打算讓客戶端搜索目錄資源,請確保啟用了索引服務。
啟用索引資源:如果打算讓客戶端搜索目錄資源,請確保啟用了索引服務。
保護腳本代碼
如果在發布目錄中有一些不想讓客戶端看到的腳本文件,您可以通過不授予“腳本資源訪問”權限來拒絕訪問。可執行文件將作為靜態 HTML 文件處理,除非為該目錄啟用了“腳本和可執行文件”。
如果在發布目錄中有一些不想讓客戶端看到的腳本文件,您可以通過不授予“腳本資源訪問”權限來拒絕訪問。可執行文件將作為靜態 HTML 文件處理,除非為該目錄啟用了“腳本和可執行文件”。
要阻止 .exe 文件下載並作為 HTML 文件來查看,但允許其運行,可在發布目錄的“虛擬目錄”屬性頁中,將執行權限更改為“腳本和可執行文件”。
這一權限級別使所有可執行文件受“腳本資源訪問”設置的影響。換句話說,如果選中了“腳本資源訪問”,有讀取權限的客戶端可以看到所有的可執行文件;有寫入權限的客戶端既可運行它們,也可以編輯它們。
使用下面的權限,客戶端可以在未出現在應用程序映射中的可執行文件中寫入信息:
已授予寫入權限。
執行權限設置為“純腳本”。
執行權限設置為“純腳本”。
使用下面的權限,客戶端可以向任何可執行文件中寫入信息,不論它們是否出現在應用程序映射中:
已授予“腳本資源訪問”權限。
執行權限設置為“腳本和可執行文件”。
執行權限設置為“腳本和可執行文件”。
讓我們打開一個IIS服務器來看看。在IIS 服務管理器中,選擇一個目錄,看他的屬性,在目錄屬性項有有這么一些選項(日志訪問和索引此資源不計):
腳本資源訪問: 對網站的腳本可以讀取原文件。
讀取 讀取目錄里面的靜態資源。
寫入 用戶可以建立以及刪除資源
目錄瀏覽 用戶可以瀏覽目錄內容。
應用程序設置的執行許可中有三個選項:
無 只能訪問靜態頁面
純腳本 只允許允許腳本 如ASP腳本
腳本和可執行程序 可以訪問和執行各種文件類型
那么,如何確定服務器上面的這些開關設置呢? 別着急,一個一個來。
執行權限
如何確定某個目錄是否開了執行權限呢?很簡單,向服務器發送一個下面得請求:
http://iis-server/dir/no-such-file.dll /dir/為要判斷得目錄,no-such-file.dll是隨便取得一個名字,服務器上面沒有這個文件。
服務器對我們得請求會返回一個信息。如果返回的是一個500錯誤:
HTTP 500 - 內部服務器錯誤 (Internal Server error)
那么就說明這個目錄的執行權限是開着的。 對於服務器,能不開執行權限的就不要開。特別是虛擬目錄的執行權限,大家想一想UNICODE和二次解碼漏洞的利用過程就明白了。
如果服務器返回的是一個 404 錯誤:HTTP 404 - 未找到文件,那么就說明這個目錄的執行權限沒有開。
http://iis-server/dir/no-such-file.dll /dir/為要判斷得目錄,no-such-file.dll是隨便取得一個名字,服務器上面沒有這個文件。
服務器對我們得請求會返回一個信息。如果返回的是一個500錯誤:
HTTP 500 - 內部服務器錯誤 (Internal Server error)
那么就說明這個目錄的執行權限是開着的。 對於服務器,能不開執行權限的就不要開。特別是虛擬目錄的執行權限,大家想一想UNICODE和二次解碼漏洞的利用過程就明白了。
如果服務器返回的是一個 404 錯誤:HTTP 404 - 未找到文件,那么就說明這個目錄的執行權限沒有開。
寫權限
測試一個目錄對於web用戶是否具有寫權限,采用如下方法:
telnet 到服務器的web端口(80)並發送一個如下請求:
測試一個目錄對於web用戶是否具有寫權限,采用如下方法:
telnet 到服務器的web端口(80)並發送一個如下請求:
PUT /dir/my_file.txt HTTP/1.1
Host: iis-server
Content-Length: 10 <enter><enter>
這時服務器會返回一個100( 繼續)的信息:
HTTP/1.1 100 Continue
Server: Microsoft-IIS/5.0
Date: Thu, 28 Feb 2002 15:56:00 GMT
接着,我們輸入10個字母:
AAAAAAAAAA
送出這個請求后,看服務器的返回信息,如果是一個 201 Created響應:
HTTP/1.1 201 Created
Server: Microsoft-IIS/5.0
Date: Thu, 28 Feb 2002 15:56:08 GMT
Location:
http://iis-server/dir/my_file.txt
Content-Length: 0
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND,
PROPPATCH, SEARCH, LOCK, UNLOCK
那么就說明這個目錄的寫權限是開着的,反之,如果返回的是一個 403 錯誤,那么寫權限就是
沒有開起來,如果需要你認證,並且返回一個 401(權限禁止) 的響應的話,說明是開了寫權限,但是匿名用戶不允許。 如果一個目錄同時開了”寫”和“腳本和可執行程序”的話,那么web用戶就可以上傳一個程序並且執行它,恐怖哦%^#$!~
沒有開起來,如果需要你認證,並且返回一個 401(權限禁止) 的響應的話,說明是開了寫權限,但是匿名用戶不允許。 如果一個目錄同時開了”寫”和“腳本和可執行程序”的話,那么web用戶就可以上傳一個程序並且執行它,恐怖哦%^#$!~
純腳本執行權限
這樣的目錄就太多了。很多不需要給執行權限的目錄也被管理員給了腳本執行權限,我記得在
shotgun的一篇文章里面他說過:最小的權限+最少的服務= 最大的安全 ; 一點也沒有錯。給目錄任何多余的權限都是沒有必要的。判斷一個目錄是否可以執行純腳本文件也很簡單,發送一個如下一個請求:
http://iis-server/dir/no-such-file.asp 返回404文件不存在說明有執行權限,返回403則是沒有開。
shotgun的一篇文章里面他說過:最小的權限+最少的服務= 最大的安全 ; 一點也沒有錯。給目錄任何多余的權限都是沒有必要的。判斷一個目錄是否可以執行純腳本文件也很簡單,發送一個如下一個請求:
http://iis-server/dir/no-such-file.asp 返回404文件不存在說明有執行權限,返回403則是沒有開。
瀏覽目錄權限
判斷一個目錄是否允許瀏覽可能需要一點點小技巧,但是,在網站的默認首頁(如:default.asp)不存在的話,那么就再簡單不過了。 在瀏覽器里面輸入:
如果權限開着的,那么會返回200響應,並且列出當前目錄里面的內容,反之,沒有列出目錄的話就是關了。 但是,如果默認頁面default.asp存在呢?敲入上面的地址就直接打開這個頁面了。別急,
WebDAV 里面有一個請求方法叫:PROFIND。這個方法使得我們可以從服務器資源里面得到一些如文件名,創建時間,最后修改時間等等的信息。利用它我們也可以繞過 default.asp 來判斷目錄瀏覽權限的情況, telnet到IIS-server的web端口,發送如下請求:
PROPFIND /dir/ HTTP/1.1
Host: iis-server
Content-Length: 0
這時,服務器會送回一個207 Multi Status的響應,如果目錄是允許瀏覽的,那么同時會列出目錄里面的資源以及他們的屬性。如果目錄瀏覽不允許,返回的信息就會少的多。目錄瀏覽一般來說只能算是一個低危險等級的漏洞,比如一個images目錄,里面除了圖片沒有別的東西了,那對於服務器的安全就沒有什么危害,但是,如果目錄里面放了一個管理頁面adminpage.asp或者一些數據庫連接信息文件,可能會導致你的服務器拱手相讓給入侵者。
讀權限
判斷這點很容易,發一個帶 txt文件的請求就可以:
http://iis-server/dir/no-such-file.txt
如果返回一個 404 文件不存在的響應,就說明讀權限是開着的,反正,返回403錯誤則說明都權限沒有開。早幾年接觸安全的人一定知道 ::$DATA泄露ASP源代碼的漏洞,其實如果一個目錄里面權勢asp腳本的話,那么讀權限也可以不用開的,ASP只需要腳本執行權限就可以了。
默認應用程序映射判斷
判斷默認映射是否存在比較簡單,這里只簡單的給出了在映射存在的情況下對於相應請求的響應:
擴展名: .printer
請求: http://iis-server/foo.printer
響應: HTTP 500 - 內部服務器錯誤
擴展名:.idc
請求: http://iis-server/foo.idc
響應: code 500 Internal Server Error
擴展名:.idq
請求: http://iis-server/foo.idq
響應碼:200 OK
響應: 找不到 IDQ 文件 D:\dir\\foo.idq
判斷默認映射是否存在比較簡單,這里只簡單的給出了在映射存在的情況下對於相應請求的響應:
擴展名: .printer
請求: http://iis-server/foo.printer
響應: HTTP 500 - 內部服務器錯誤
擴展名:.idc
請求: http://iis-server/foo.idc
響應: code 500 Internal Server Error
擴展名:.idq
請求: http://iis-server/foo.idq
響應碼:200 OK
響應: 找不到 IDQ 文件 D:\dir\\foo.idq
響應碼: 200 OK
響應: QUERY_STRING 的格式無效
擴展名:.stm
請求: http://iis-server/foo.stm
響應: HTTP 404 - 未找到文件
擴展名:.shtm
請求: http://iis-server/foo.shtm
響應: HTTP 404 - 未找到文件
擴展名:.shtml
響應: QUERY_STRING 的格式無效
擴展名:.stm
請求: http://iis-server/foo.stm
響應: HTTP 404 - 未找到文件
擴展名:.shtm
請求: http://iis-server/foo.shtm
響應: HTTP 404 - 未找到文件
擴展名:.shtml
響應: HTTP 404 - 未找到文件
判斷操作系統是否為個人版本(Professional/Workstation )
IIS安裝在windows2000專業版和NT workstation上面時候,同時進行的連接數最大為10個,利用這一點我們可以簡單判斷操作系統版本:創建10個 HTTP 1.1的持續連接,第11個連接請求將放回403錯誤信息。