標籤:

WEB應用中的信息泄漏以及攻擊方法

下面內容介紹了在web應用程序中的一些信息泄漏問題,當然也會舉例分析,介紹如何發現這些信息泄漏。

Banner收集/主動偵查

Banner收集或主動偵察是一種攻擊類型,攻擊者在此期間向他們的目標系統發送請求,以收集有關它的更多信息。如果系統配置不當,可能會泄漏自己的信息,如伺服器版本,PHP或者ASP.NET版本,OpenSSH版本等。

在大多數情況下,Banner收集並不會涉及關鍵信息泄漏,不過可以讓攻擊者收集到開發過程中使用環境版本的信息。例如:如果目標在伺服器上面使用的是php舊版本,由於沒有更新,所以攻擊者可以利用已知的漏洞攻擊,也許會出現遠程命令執行/代碼執行的漏洞。

Banner信息收集舉例:

Nmap scan report for example.com (x.x.x.x)nHost is up (0.037s latency).nNot shown: 999 filtered portsnPORT STATE SERVICE VERSIONn22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.3 (Ubuntu Linux; protocol 2.0)nService Info: OS: Linux; CPE: cpe:/o:linux:linux_kerneln

在上面例子中,我們使用Nmap掃描器對目標進行埠掃描。結果表明目標開啟了22埠,並且OpenSSH版本號是5.9p1。也許這個版本就存在可以被攻擊者利用的漏洞。

源碼泄漏

當Web應用程序的後端環境代碼暴露給不涉及應用程序開發的用戶時,會發生源代碼泄露問題。源代碼泄露使攻擊者能夠通過讀取代碼和檢查邏輯缺陷,以及查看硬編碼的用戶名/密碼對或者API密鑰來發現這個應用程序的不足以及漏洞。

漏洞的嚴重性取決於泄漏源碼的多少,以及代碼在應用程序中的重要性。總而言之,因為攻擊者可以查看源代碼,所以很大程度上將滲透測試由黑盒轉向白盒。事實上,有很多錯誤能夠導致源碼泄漏的漏洞發生,下面這幾種錯誤就包含在其中:

代碼庫未受保護

為了更加方便的管理站點,大多數站點都會把他們源碼上傳到雲端。這些項目有時會管理不當,攻擊者能夠直接訪問網站源碼和網站信息。並且,有些公司將他們的開源軟體項目放到了github上面,這樣公共用戶可以對這個項目作出改進。這種情況下,源碼已經是公開的,但是這種情況下泄漏公司重要信息已經是很常見了。

實例:

有些源碼庫只允許使用第三方帳號進行登錄並且符合身份認證的用戶查看源碼代碼。這些源碼庫有時候配置錯誤,沒有嚴格控制查看內容的許可權,導致任何人都可以查看源碼內容。

源代碼中存在敏感信息

另一個例子是當公共代碼具有硬編碼的敏感信息時,例如用戶憑證或API密鑰。攻擊者可以輕鬆地使用這些信息來破壞這些服務,或者可以使用合法賬戶進行登錄。在信息披露期間通常泄漏的另一條信息是內部IP地址,允許攻擊者識別和了解內部網路拓撲,然後可以將這樣的信息用於攻擊內部服務中,例如伺服器端請求偽造(SSRF)攻擊來攻擊多個系統。

MIME類型不正確

瀏覽器通過HTTP包頭中的Content-Type內容來確定如何解析HTTP伺服器響應返回的內容。舉個例子,我們想讓瀏覽器將html文件解析,而不是只是純文本文件。再比如我們想讓瀏覽器下載一個zip,而不是解析這個zip文件。

如果web伺服器的配置錯誤,那麼就會出現這樣的錯誤:當我們訪問html時候,Conten-Type會是:text/plain,而不是text/html,並且html文件會以純文檔的形式展現給瀏覽器。因此</>還有一些其他字元都會在頁面上顯示出來。下面圖片是展示當頁面訪問時伺服器設置的Content-Type響應頭。

當Web應用程序無法為其中包含源代碼的網頁發送適當的Content-Type頭部時,可能會發生信息泄露問題,並且最終以純文本形式呈現信息,並披露有關Web應用程序的有價值信息。

實例:

我們假設一個Web伺服器用於運行一個PHP

Web應用程序,但現在運行一個ASP.NET。以前由舊的Web應用程序使用並具有敏感信息(如MySQL資料庫憑據)的PHP腳本正在被用戶訪問。如果PHP沒有在Web伺服器上運行和配置,則Content-Type將從HTTP響應中省略,並且PHP腳本將被解釋為純文本或HTML標記,具體取決於Web瀏覽器,然後就會泄露裡面包含的所有信息。

下面屏幕截圖就展示了即使伺服器返回頭沒有設置Content-Type,火狐瀏覽器還是將php腳本解析成了HTML。我們需要在查看源代碼中看到腳本信息。

下面截圖展示了chrome瀏覽器直接返回了純文本的文件,所以我們可以直接看到源碼。

處理敏感信息不當

另一種常見的信息泄漏是由硬編碼的賬戶名和密碼以及內部ip在代碼的注釋中泄漏。在大多數情況下,這些敏感信息在訪問web頁面時會展現出來。這些敏感信息的泄漏也可能會導致web應用程序遭受攻擊。攻擊者只需要右鍵頁面查看網頁源代碼,就可以找到這些注釋。如果在發現web應用程序存在這種問題,Netsparker將會提醒您。

缺少認證機制或者認證機制配置不當

在Web應用程序許可權設置不正確,不完整或甚至缺少授權檢查可能會允許攻擊者訪問敏感信息或未授權訪問登錄用戶的信息。這些問題很常見,它們也列在OWASP十大最常見和利用漏洞的列表中。

示例:Missing Function Level Access Control Vulnerabilities in Maian Support Helpdesk Allow Complete Take Over of the System

一個真實的許可權控制不當,導致被拿shell的案例。

文件名或者文件路徑泄漏

在某些情況下,Web應用程序可以公開文件名或文件路徑,從而顯示關於底層系統結構的信息。這可能是由於用戶輸入的不正確處理,後端的異常或Web伺服器的不當配置。有時可以在Web應用程序,錯誤頁面,調試信息等的響應中找到或標識這些信息。

示例:

攻擊者可以通過發送訪問請求來檢查Web應用程序是否公開任何文件名或路徑。例如,當發送以下請求時,Web應用程序返回403(禁止)響應:

https://www.example.com/%5C../%5C../%5C../%5C../%5C../%5C../etc/passwdn

但是當攻擊者發送下面請求時,web應用程序返回404(沒有文件)的響應:

https://www.example.com/%5C../%5C../%5C../%5C../%5C../%5C../etc/doesntexistn

由於第一次請求,攻擊者得到了403 Forbidden錯誤,而對於第二個請求,他得到了404 Not Found,他知道在第一種情況下,該文件存在。因此,攻擊者可以利用Web應用程序的行為,了解伺服器的結構以及驗證系統上是否存在某個文件夾或文件。

目錄遍歷

文件名和路徑公開相關的是Web伺服器中的目錄顯示功能。此功能在Web伺服器上默認提供。當沒有默認網頁時,在網站上顯示Web伺服器顯示用戶列表中的文件和目錄。

因此,在apahce伺服器上面默認文件名為Index.php,當沒有上傳index.php時,伺服器就會將文件夾中的內容全部展示出來。如下圖:

使用這樣一個模塊會使伺服器產生很大的安全隱患。

實例:

現在很多人都知道這樣的功能應該被禁用,所以看到它並不常見。雖然我們假設掃描Web伺服器的埠後,攻擊者發現在8081埠運行的Web伺服器的默認啟動此功能。

這樣的「默認值」通常被Web伺服器管理員忽略,這也意味著它們不太安全。它會允許攻擊者瀏覽目錄並訪問Web應用程序的源代碼,備份和可能的資料庫文件。

防止信息泄漏應該注意的事項

信息泄漏問題似乎是一件小事情,但對攻擊者來說是非常有價值的。它們允許攻擊者通過執行基本測試,有時只需在公共頁面中查找信息,獲得有關攻擊目標的非常有用的信息。

事實上,Netsparker在掃描目標網站時會報告知識庫節點中可能的信息披露和其他類似的安全問題。你應該解決這些問題,特別是當你認為它們很容易修復時。以下是遵循的一些指導方針,以便您可以確保您的Web應用程序受到良好保護:

1. 確保您的Web伺服器不發送顯示有關後端技術類型或版本信息的響應頭。

2. 確保伺服器打開的埠上運行的所有服務都不會顯示有關其構建和版本的信息。

3. 確保所有目錄的訪問許可權正確,保證不會讓攻擊者訪問到你的所有文件。

4. 不要在代碼中將賬戶密碼硬編碼進去。也不要在注釋中寫入相關信息。

5. 在web伺服器中為所有類型的應用程序配置MIME信息

6. 不需要上傳到網站上的敏感信息永遠都不要上傳

7. 始終檢查每個創建/編輯/查看/刪除資源的請求是否具有適當的訪問控制,防止越權訪問,並確保所有機密信息保密。

8. 確保您的Web應用程序正確處理用戶輸入,並且始終為所有不存在/不允許的資源返回通用響應,以便混淆攻擊者。

9. 後端代碼應該考慮到所有情況,並且當異常發生時,能夠保證信息不被泄漏。

10. 配置Web伺服器以禁止目錄遍歷,並確保Web應用程序始終顯示默認網頁。

本文參考來源於netsparker,如若轉載,請註明來源於嘶吼: WEB應用中的信息泄漏以及攻擊方法 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

「全家桶」的安全軟體還想再用嗎?不如試下這個!
酷站推薦 - censys.io - 聯網設備信息搜索引擎
卡巴斯基發布2018年威脅預測,威脅情報共享成網路安全新趨勢
為何網路安全法影響如此巨大沒有得到足夠的關注?
是否開源軟體比閉源軟體更安全?

TAG:网络安全 |