Web安全漏洞

2021-07-02 02:48:51 字數 4695 閱讀 2721

**:

web的大多數安全問題都屬於下面三種型別之一:

1、伺服器向公眾提供了不應該提供的服務。

2、伺服器把本應私有的資料放到了公開訪問的區域。

3、伺服器信賴了來自不可信賴資料來源的資料。

顯然,許多伺服器管理員從來沒有從另乙個角度來看看他們的伺服器,例如使用埠掃瞄程式。如果他們曾經這樣做了,就不會在自己的系統上執行那麼多的服務,而這些服務原本無需在正式提供web服務的機器上執行,或者這些服務原本無需面向公眾開放。

與這種錯誤經常相伴的是,為了進行維護而執行某些不安全的、可用於竊取資訊的協議。例如,有些web伺服器常常為了收集訂單而提供pop3服務,或者為了上載新的頁面內容而提供ftp服務甚至資料庫服務。在某些地方這些協議可能提供安全認證(比如apop)甚至安全傳輸(比如pop或者ftp的ssl版本),但更多的時候,人們使用的是這些協議的非安全版本。有些協議,比如msql資料庫服務,則幾乎沒有提供任何驗證機制。

從公司外面訪問自己的網路,完整地檢測、模擬攻擊自己的**看看會發生些什麼,這對於web管理者來說是乙個很好的建議。有些服務在機器安裝之後的預設配置中已經啟動,或者由於安裝以及初始設定的需要而啟動了某些服務,這些服務可能還沒有正確地關閉。例如,有些系統提供的web伺服器會在非標準的埠上提供程式設計示範以及系統手冊,它們往往包含錯誤的程式**並成為安全隱患所在。正式執行的、可從internet訪問的web伺服器不應該執行這些服務,請務必關閉這些服務。

9.1web伺服器常見漏洞介紹

我們的目的就是向大家介紹web伺服器的常見漏洞,相信看了自己也能試著發現一些web伺服器的漏洞了。不過需要記住的是,不要為了尋找漏洞而尋找漏洞。另外,即使你找到了漏洞,是否能夠利用還是另外一回事。

web伺服器存在的主要漏洞包括物理路徑洩露,cgi源**洩露,目錄遍歷,執行任意命令,緩衝區溢位,拒絕服務,條件競爭和跨站指令碼執行漏洞,和cgi漏洞有些相似的地方,但是更多的地方還是有著本質的不同。不過無論是什麼漏洞,都體現著安全是乙個整體的真理,考慮web伺服器的安全性,必須要考慮到與之相配合的作業系統。

9.1.1物理路徑洩露

物理路徑洩露一般是由於web伺服器處理使用者請求出錯導致的,如通過提交乙個超長的請求,或者是某個精心構造的特殊請求,亦或是請求乙個web伺服器上不存在的檔案。這些請求都有乙個共同特點,那就是被請求的檔案肯定屬於cgi指令碼,而不是靜態html頁面。

還有一種情況,就是web伺服器的某些顯示環境變數的程式錯誤的輸出了web伺服器的物理路徑,這應該算是設計上的問題。

9.1.2目錄遍歷

目錄遍歷對於web伺服器來說並不多見,通過對任意目錄附加「../」,或者是在有特殊意義的目錄附加「../」,或者是附加「../」的一些變形,如「..」或「..//」甚至其編碼,都可能導致目錄遍歷。前一種情況並不多見,但是後面的幾種情況就常見得多,去年非常流行的iis二次解碼漏洞和unicode解碼漏洞都可以看作是變形後的編碼。

9.1.3執行任意命令

執行任意命令即執行任意作業系統命令,主要包括兩種情況。一是通過遍歷目錄,如前面提到的二次解碼和unicode解碼漏洞,來執行系統命令。另外一種就是web伺服器把使用者提交的請求作為ssi指令解析,因此導致執行任意命令。

9.1.4緩衝區溢位

緩衝區溢位漏洞想必大家都很熟悉,無非是web伺服器沒有對使用者提交的超長請求沒有進行合適的處理,這種請求可能包括超長url,超長httpheader域,或者是其它超長的資料。這種漏洞可能導致執行任意命令或者是拒絕服務,這一般取決於構造的資料。

9.1.5拒絕服務

拒絕服務產生的原因多種多樣,主要包括超長url,特殊目錄,超長httpheader域,畸形httpheader域或者是dos裝置檔案等。由於web伺服器在處理這些特殊請求時不知所措或者是處理方式不當,因此出錯終止或掛起。

9.1.6條件競爭

這裡的條件競爭主要針對一些管理伺服器而言,這類伺服器一般是以system或root身份執行的。當它們需要使用一些臨時檔案,而在對這些檔案進行寫操作之前,卻沒有對檔案的屬性進行檢查,一般可能導致重要系統檔案被重寫,甚至獲得系統控制權。

9.2cgi的安全性

cgi是一種共用閘道器介面,它可以稱之為一種機制.因此您可以使用不同的程式編寫適合的cgi程式,這些程式語言包括visualbasic、delphi或c/c++等,您將已經寫好的程式放在web伺服器的計算機上執行,再將其執行結果通過web伺服器傳輸到客戶端的瀏覽器上。事實上,這樣的編制方式比較困難而且效率低下,因為你每一次修改程式都必須重新將cgi程式編譯成可執行檔案。

9.2.1為什麼使用cgi

cgi可以為我們提供許多html無法做到的功能,比如:

1、乙個記數器

2、顧客資訊**的提交以及統計

3、搜尋程式

4、web資料庫

用html是沒有辦法記住客戶的任何資訊的,就算使用者願意讓你知道。用html也是無法把資訊記錄到某乙個特定檔案裡的。要把客戶段的資訊記錄在伺服器的硬碟上,就要用到cgi。這是cgi最重要的作用,它補充了html的不足。是的,僅僅是補充,不是替代。

9.2.2cgi安全問題

在計算機領域——尤其在internet上——儘管大部分web伺服器所編的程式都盡可能保護自己的內容不受侵害,但只要cgi指令碼中有一點安全方面的失誤——口令檔案、私有資料、以及任何東西,就能使入侵者能訪問計算機。遵循一些簡單的規則並保持警惕能使自己的cgi指令碼免受侵害,從而可以保護自己的權益。這裡所說的cgi安全,主要包括兩個方面,一是web伺服器的安全,一是cgi語言的安全

先從cgi問題的分類開始談起,一般來說,cgi問題主要有以下幾類:

1、暴露敏感或不敏感資訊;

2、預設提供的某些正常服務未關閉;

3、利用某些服務漏洞執行命令;

4、應用程式存在遠端溢位;

5、非通用cgi程式的程式設計漏洞。

下面我們就來詳細介紹一下關於cgi的漏洞:

●配置錯誤

這裡所說的配置錯誤主要指cgi程式和資料檔案的許可權設定不當,這可能導致cgi源**或敏感資訊洩露。還有乙個經常犯的錯誤就是安裝完cgi程式後沒有刪除安裝指令碼,這樣攻擊者就可能遠端重置資料。前些日子「xx大聯盟」論壇多次被黑就是這個低階錯誤所致。

●邊界條件錯誤

這個錯誤主要針對c語言編寫的cgi,利用這個錯誤,攻擊者可能發起緩衝區溢位攻擊,從而提公升許可權。

●訪問驗證錯誤

這個問題主要是因為用於驗證的條件不足以確定使用者的身份而造成的,經常會導致未經授權訪問,修改甚至刪除沒有訪問許可權的內容。用於確定使用者身份的方法一般有兩種,一是賬號和密碼,一是session認證。而不安全的認證方法包括userid認證,cookie認證等等。

●**驗證錯誤

比較常見的利用這種錯誤進行攻擊的方法就是dos,也就是拒絕服務攻擊,如我們知道的灌水機,就是利用cgi程式沒有對文章的**進行驗證,從而不間斷的發文章,最後導致伺服器硬碟充滿而掛起。

●輸入驗證錯誤

這種錯誤導致的安全問題最多,主要是因為沒有過濾特殊字元。比如說,沒有過濾「%20」造成的畸形註冊,沒有過濾「../」經常造成洩露系統檔案,沒有過濾「$」經常導致洩露網頁中的敏感資訊,沒有過濾「;」經常導致執行任意系統指令,沒有過濾「|」或「t」經常導致文字檔案攻擊,沒有過濾「』」和「#」經常導致sql資料庫攻擊,沒有過濾「<」和「>」導致的cross-sitescripting攻擊等。

●意外情況處理失敗

這種錯誤也很常見,如沒有檢查檔案是否存在就直接開啟裝置檔案導致拒絕服務,沒有檢查檔案是否存在就開啟檔案提取內容進行比較而繞過驗證,上下文攻擊導致執行任意**等。

●策略錯誤

●習慣問題

程式設計師的習慣也可能導致安全問題,如使用某些文字編輯器修改cgi程式時,經常會生成「.bak」檔案,如果程式設計師編輯完後沒有刪除這些備份檔案,則可能導致cgi源**洩露。另外,如果程式設計師總喜歡把一些敏感資訊(如賬號密碼)放在cgi檔案中的話,只要攻擊者對該cgi檔案有讀許可權(或者利用前面介紹的一些攻擊方法)就可能導致敏感資訊洩露。

●使用錯誤

主要是一些函式的使用錯誤,如perl中的「die」函式,如果沒有在錯誤資訊後面加上「n」的話,就極可能導致物理路徑洩露。

●其它錯誤

此外,還有一些其它難以歸類的錯誤,如「非1即0」導致繞過認證的問題。

9.2.3常用的的cgi漏洞檢測工具

1.twwwscan

這個工具速度比較快,而且可以利用引數把windows系統和unix系統分開掃瞄,不使用圖形介面,比較簡單些;

2.cis

是個圖形化的小巧掃瞄工具,主要是針對windows系統設計,對檢查出來的cgi問題有比較詳細的描述,利於使用、分析和解決漏洞;

3.voideye

圖形介面做的比較花哨,可以檢查的cgi問題比較多些,但不太準確。

4.webscan

檢查種類特多,好象有300來條,能提供html格式報告,集合了一些跟隨攻擊方式,這些工具只是檢查一下伺服器有沒有這個鏈結存在,如果有,就會報出存在漏洞,這當然會有很多誤報,工具是死的,人是活的,熟練應用這些輔助工具需要點時間熟悉一下就行了。

9.2.4如何讓你的cgi更安全

了解了cgi的安全問題,我們也該知道怎麼加強cgi的安全了吧?下面簡單總結一下作為參考:

1、使用最新版本的web伺服器,安裝最新的補丁程式,正確配置伺服器;

2、按照幫助檔案正確安裝cgi程式,刪除不必要的安裝檔案和臨時檔案;

3、使用c編寫cgi程式時,使用安全的函式;

4、使用安全有效的驗證使用者身份的方法;

5、驗證使用者的**,防止使用者短時間內過多動作;

6、推薦過濾;

7、注意處理好意外情況;

8、實現功能時制定安全合理的策略;

9、培養良好的程式設計習慣;

10、科學嚴謹的治學態度,避免「想當然」的錯誤;

常見Web安全漏洞

不同許可權賬戶之間的存在越權訪問 檢測防範 1伺服器端必須對每個頁面鏈結進行許可權判斷。2使用者登陸後,伺服器端不應再以客戶端提交的使用者身份資訊為依據,而應以會話中服務端儲存的已登陸的使用者身份資訊為準。3頁面提交的資源標誌與已登陸的使用者身份進行匹配比對,然後判斷其對當前鏈結是否有許可權。4必須...

WEB服務的安全漏洞

隨著網路的飛速發展,如今很多系統都是基於 b s的模式提供 web服務,web系統很方便但也很危險,傳輸的資料很容易被截獲,從而給使用者造成損失,如果部署了 ssl數字證書的話,在很大程度上能保證資料的安全,尤其是在傳輸過程中。ssl secure sockets layer 安全套接層 其繼任者傳...

Web安全漏洞 檔案上傳(fileupload)

1.原理 上傳的檔案能夠被web容器解釋執行,所以檔案上傳後所在的目錄要是web容器所覆蓋到的路徑。使用者能夠從web上訪問這個檔案。使用者上傳的檔案如果被安全檢查 格式化 壓縮等功能改變了內容,則可能導致攻擊不成功 檔案包含漏洞 file include 有次面試問我檔案包含,我回答的檔案上傳 嚴...