IIS 6 備忘

用IIS7久了, 回到IIS6 總被搞混,因此記錄下,以備忘記。 如下是轉載和整合了他人的資源,原出處不詳。
 
IIS Web 服務器的權限設置有兩個地方,一個是 NTFS 文件系統自己的權限設置,另外一個是 IIS 下網站->站點->屬性->主目錄(或站點下目錄->屬性->目錄)面板上。這兩個地方是密切相關的。下面我會以實例的方 式來說解如何設置權限。
IIS 下網站->站點->屬性->主目錄(或站點下目錄->屬性->目錄)面板上有:
腳本資源訪問 
讀取 
寫入 
瀏覽 
記錄訪問 
索引資源 
6 個選項。這 6 個選項中,「記錄訪問」和「索引資源」跟安全性關係不大,通常都設置。可是若是前面四個權限都沒有設置的話,這兩個權限也沒有必要設置。在設置權限時,記住這個規則便可,後面的例子中再也不特別說明這兩個權限的設置。
另外在這 6 個選項下面的執行權限下拉列表中還有:
無 
純腳本 
純腳本和可執行程序 
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 屬性面板中的「寫入」權限。
IIS 面板中的「寫入」權限其實是對 HTTP PUT 指令的處理,對於普通網站,通常狀況下這個權限是不打開的。
IIS 面板中的「腳本資源訪問」不是指能夠執行腳本的權限,而是指能夠訪問源代碼的權限,若是同時又打開「寫入」權限的話,那麼就很是危險了。
執行權限中「純腳本和可執行程序」權限能夠執行任意程序,包括 exe 可執行程序,若是目錄同時有「寫入」權限的話,那麼就很容易被人上傳並執行木馬程序了。
對 於 ASP.NET 程序的目錄,許多人喜歡在文件系統中設置成 Web 共享,實際上這是沒有必要的。只須要在 IIS 中保證該目錄爲一個應用程序便可。若是所在目錄在 IIS 中不是一個應用程序目錄,只須要在其屬性->目錄面板中應用程序設置部分點建立就能夠了。Web 共享會給其更多權限,可能會形成不安全因素。
劍 心總結:也就是說通常不要打開-主目錄-(寫入),(腳本資源訪問) 這兩項以及不要選上(純腳本和可執行程序),選(純腳本)就能夠了.須要asp.net的應用程序的若是應用程序目錄不止應用程序一個程序的能夠在應用程 序文件夾上(屬性)-目錄-點建立就能夠了.不要在文件夾上選web共享.
例2 —— 上傳目錄的權限設置:
用 戶的網站上可能會設置一個或幾個目錄容許上傳文件,上傳的方式通常是經過 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 組賬號的權限,你只要將這些用戶的權限設置爲可讀可寫就徹底能夠保證你的程序可以正確運行了。
劍心總結:Internet 來賓賬號或 IIS_WPG 組賬號的權限可讀可寫.那麼Access所在目錄(或者該文件)的「讀取」、「寫入」權限都去掉就能夠防止被人下載或篡改了

例4 —— 其它目錄的權限設置:
你的網站下可能還有純圖片目錄、純 html 模版目錄、純客戶端 js 文件目錄或者樣式表目錄等,這些目錄只須要設置「讀取」權限便可,執行權限設成「無」便可。其它權限一律不須要設置。
php

-----------------------------------------------------我是分割線------------------------------------------------------html

首先要有這樣的思路:2000對應iis5.0 ,xp對應iis5.1 ,2003對應iis6.0web

配置 Web 權限
 如下是根據發佈的材料的用途來配置 Web 權限的各類方法:
  • 啓用讀取、寫入和目錄瀏覽:啓用這些權限容許客戶端查看資源列表並進行修改(除非對這些資源沒有寫入權限)、發佈本身的資源以及處理文件。

 

  •  啓用寫入;並禁用讀取和目錄瀏覽: 若是隻想讓客戶端在目錄中發佈私人信息,而不但願別人查看所發佈的內容,能夠設置寫入權限,但不設置讀取和目錄瀏覽權限。該配置在客戶端端提交選票或性能檢查時很是有用。

 

  •  啓用讀取和寫入;並禁用目錄瀏覽:若是但願經過隱藏文件名來提升安全性,可設置該配置。然而,請注意,經過隱藏文件名來設置安全性是一種低級的安全防範措施,由於一個故意破壞 者可經過試探和錯誤信息來猜想出文件名。
  •  啓用索引資源:若是打算讓客戶端搜索目錄資源,請確保啓用了索引服務。

 

 

保護腳本代碼
若是在發佈目錄中有一些不想讓客戶端看到的腳本文件,您能夠經過不授予「腳本資源訪問」權限來拒絕訪問。可執行文件將做爲靜態 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和二次解碼漏洞的利用過程就明白了。 
    HTTP 404 - 未找到文件,那麼就說明這個目錄的執行權限沒有開。
 
寫權限 
  測試一個目錄對於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
Content-Length: 0
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND,
PROPPATCH, SEARCH, LOCK, UNLOCK
那麼就說明這個目錄的寫權限是開着的,反之,若是返回的是一個 403 錯誤,那麼寫權限就是
沒有開起來,若是須要你認證,而且返回一個 401(權限禁止) 的響應的話,說明是開了寫權限,可是匿名用戶不容許。 若是一個目錄同時開了」寫」和「腳本和可執行程序」的話,那麼web用戶就能夠上傳一個程序而且執行它,恐怖哦%^#$!~
 
純腳本執行權限
  這樣的目錄就太多了。不少不須要給執行權限的目錄也被管理員給了腳本執行權限,我記得在
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
擴展名:.ida 
請求: 
http://iis-server/foo.ida  
響應碼:200 OK 
響應: 找不到 IDQ 文件 D:\dir\foo.ida
擴展名:.htr 
請求: 
http://iis-server/foo.htr  
響應: HTTP 404 - 未找到文件 
擴展名:.htw 
請求: 
http://iis-server/foo.htw
響應碼: 200 OK 
響應: QUERY_STRING 的格式無效 
擴展名:.stm 
請求: 
http://iis-server/foo.stm  
響應: HTTP 404 - 未找到文件 
擴展名:.shtm 
請求: 
http://iis-server/foo.shtm  
響應:  HTTP 404 - 未找到文件 
擴展名:.shtml

響應: HTTP 404 - 未找到文件 
判斷操做系統是否爲我的版本(Professional/Workstation )
IIS安裝在windows上面時候,同時進行的鏈接數最大爲10個,利用這一點咱們能夠簡單判斷操做系統版本:建立10個 HTTP 1.1的持續鏈接,第11個鏈接請求將放回403錯誤信息。
相關文章
相關標籤/搜索