web伺服器怎麼做好上傳漏洞安全

199cloud發表於2020-06-01

web伺服器怎麼做好上傳漏洞安全【199cloud-艾娜】

Web應用程式通常會有檔案上傳的功能,例如,在BBS釋出圖片、在個人網站釋出Zip壓縮包、在招聘網站上釋出DOC格式簡歷等。只要Web應用程式允許上傳檔案,就有可能存在檔案上傳漏洞。

1. 解析漏洞

攻擊者在利用上傳漏洞時,通常會與Web容器(IIS、Nginx、Apache、Tomc等at)的解析漏洞配合在一起

  • IIS解析漏洞:當建立 *.asa、*.asp格式的資料夾時,其目錄下的任意檔案都將被IIS當作asp檔案來解析,在瀏覽器開啟檔案時,內容就會直接暴漏在瀏覽器裡,上傳的話,危險指令碼就會執行起來,達到攻擊的目的;
    如:

  • Apache解析漏洞;

  • PHP CGI解析漏洞;

2. 繞過上傳漏洞

程式設計師在防止上傳漏洞時可以分為以下兩種:

  • 客戶端檢測:客戶端使用JavaScript檢測,在檔案未上傳時,就對檔案進行驗證;
    因此,繞過客戶端的檢測來達到攻擊的方式有以下兩種:

(1)使用FireBug:找到html原始碼裡面的Form表單,將onsubmit事件刪除,JavaScript上傳驗證將會失效。
(2)中間人攻擊:使用Burb Suite則是按照正常的流程透過JavaScript驗證,然後在傳輸中的HTTP層做手腳。( 在上傳時使用Burb Suite攔截上傳資料,修改副檔名,就可以繞過客戶端驗證)。

注意:任何客戶端驗證都是不安全的。客戶端驗證是防止使用者輸入錯誤,減少伺服器開銷,而伺服器端驗證才可以真正防禦攻擊者。

  • 服務端檢測:服務端指令碼一般會檢測檔案的MIME型別,檢測副檔名是否合法,甚至有些程式設計師檢測檔案中是否嵌入惡意程式碼。
    主要有以下幾種,但也有存在漏洞的可能:

(1)白名單與黑名單驗證
在上傳檔案時,大多數程式設計師會對副檔名檢測,驗證副檔名通常有兩種方式:白名單與黑名單。

黑名單過濾方式:是一種不安全的過濾方式,黑名單定義了一系列不允許上傳的檔案的副檔名,伺服器端接收檔案後,與黑名單副檔名對比,如果發現副檔名與黑名單裡的副檔名匹配,則認為檔案不合法。舉例子:

$BlackList = array('asp', 'php', 'jsp', 'php5', 'asa', 'aspx'); // 黑名單//然而並不能很好的防禦: .cer檔案並沒有在黑名單裡,則,可以透過驗證,因此是無法防禦上傳漏洞的。

白名單過濾方式:與黑名單恰恰相反,定義一系列允許上傳的副檔名,白名單擁有比黑名單更好的防禦機制。舉例子:

$WhiteList = array('rar', 'jpg', 'png', 'bmp', 'gif', 'doc'); // 白名單// 然而並不能很好的防禦:// 例如:Web容器為IIS 6.0,攻擊者把木馬檔案改名為pentest.asp;1.jpg上傳,此時的檔案為jpg格式,從而可以順利透過驗證,而IIS 6.0卻會把pentest.asp;1.jpg當作asp指令碼程式來執行,最終攻擊者可以繞過白名單的檢測,並且執行木馬程式。// 白名單機制僅僅是防禦上傳漏洞的第一步。

(2)MIME驗證
MIME型別用來設定某種副檔名檔案的開啟方式,當具有該副檔名的檔案被訪問時,瀏覽器會自動使用指定的應用程式來開啟。如GIF圖片MIME為image/gif,css檔案MIME型別為text/css。

// 開發人員經常會對檔案MIME型別做驗證,PHP程式碼如下:if ($_FILES['file']['type'] == 'image/jpg'){ // 判斷是否是jpg格式
    // ...}

因此,如果上傳PHP檔案時,並使用Burp Suite攔截檢視MIME型別,可以發現PHP檔案的MIME型別為 application/php,而上面程式碼中會判斷檔案型別是否為image/jpg,顯然這裡無法透過驗證。
但是在攔截的時候可以將HTTP請求中的content-Type更改為image/jpg型別,這樣即可透過程式驗證,達到攻擊的目的。

(3)目錄驗證
再檔案上傳時,程式設計師通常允許使用者將檔案放到指定的目錄中,然而有些Web開發人員為了讓程式碼更“健壯”,通常會做一個動作,如果指定的目錄存在,就將檔案寫入目錄中,不存在則先建立目錄,然後再寫入檔案。

攻擊方式:透過使用工具將普通的資料夾名稱改為 .asp格式的目錄,稱為 畸形資料夾,然後提交 一句話圖片木馬檔案,即上傳成功後,這個網頁木馬就會被解析,從而使下攻擊。

(4)截斷上傳攻擊
也是使用工具進行攔截更改。
截斷上傳攻擊在ASP程式中最常見,在PHP、JSP也會存在這樣的攻擊問題。

3. 文字編輯器上傳漏洞

常見的文字編輯器有CKEditor、Ewebeditor、UEditor、KindEditor、XHeditor等。這類編輯器的功能都是非常類似的,比如都有圖片上傳、影片上傳、遠端下載等功能,這類文字編輯器也稱為副文字編輯器。

使用此類編輯器減少了程式開發的時間,但是卻增加了許多安全隱患,比如: 使用CKEditor編輯器的有10萬個網站,如果CKEditor爆出一個GetShell漏洞,那麼著10萬個網站都因此受到牽連。主要的漏洞體現在以下幾種:
(1)敏感資訊暴露。
(2)黑名單策略錯誤:黑名單有漏掉的副檔名。
(3)使用Burp Suite攔截修改,達到任意檔案都可以上傳。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69975301/viewspace-2695390/,如需轉載,請註明出處,否則將追究法律責任。

相關文章