22 個常見的 Web 應用程序漏洞
已發表: 2021-10-14企業不斷“左移”並利用雲驅動應用程序提供的創新客戶和員工體驗。 與此同時,惡意攻擊者也在不斷地修改他們的攻擊策略以適應這種轉變。
為了保護數據隱私和安全,企業必須尋求針對這 22 個常見Web 應用程序漏洞的保護。
損壞的訪問控制
訪問控制負責用戶如何與資源和數據交互,以及他們可以編輯和/或閱讀的內容。 當用戶能夠以真正不必要的方式使用數據時,可能會出現錯誤的訪問控制漏洞。 例如,如果用戶應該只能閱讀支付細節,但實際上有能力編輯它們,那麼這種情況就是訪問控制被破壞的例證。 惡意攻擊者利用此漏洞獲得對軟件、網絡和系統的未經授權的訪問。 然後,他們可以利用這種情況,授予用戶 ID 在基礎架構內的更多訪問權限,從而損害數據的可用性、機密性或完整性。
損壞的認證
與損壞或損壞的身份驗證相關的Web 應用程序漏洞也源於用戶訪問。 然而,在這種情況下,惡意攻擊者會對確認用戶身份的數據產生負面影響,例如通過劫持會話令牌、密鑰或密碼。 惡意攻擊者獲得對軟件、系統和網絡的未經授權的訪問,因為組織無法正確設置適當的身份和訪問管理控制。
回車換行 (CRLF) 注入
回車用作表示代碼行開頭的命令,通常表示為 /r。 另一方面,換行是表示代碼行結束的命令,通常表示為 /n。 與其他幾個軟件一樣,每個操作系統都使用不同的回車和換行組合。 當惡意攻擊者參與 CRLF 注入時,輸入的代碼會改變 Web 應用程序對命令做出反應的方式。 這可用於洩露敏感數據或執行代碼。
密碼轉換不安全
Cipher 是“加密算法”的標準術語,實際上是加密或解密過程背後的數學。 轉換是指對輸入執行的操作大綱,以提供預期的輸出。 因此,密碼轉換是指將不可讀的加密數據轉換回可讀的解密數據的操作數。 密碼轉換不安全漏洞描述了加密算法很容易被破解,最終破壞了加密的本質。
具有明顯漏洞的組件
每個 Web 應用程序都依賴於其他組件來運行。 例如,如果您在未打補丁的 Web 或應用服務器上運行應用程序,那麼服務器就是存在明顯漏洞的部分。 常見漏洞和披露 (CVE) 列表包含所有已知的安全漏洞。 由於惡意攻擊者知道該列表,他們經常尋找沒有足夠安全補丁更新的組件。 當他們可以滲透到 Web 應用程序的一個組件時,他們也可以獲得對應用程序數據的訪問權限。
跨域資源共享 (CORS) 政策
所有基於 Web 的應用程序都使用 URL 作為將用戶瀏覽器連接到其服務器的媒介。 同源策略是一種常見的保護措施。 與此一致,服務器將僅響應具有相同協議、路徑架構和頂級域名的 URL。 這意味著您可以訪問 http://organization.com/page1 和 http://organization.com/page2 因為它們都共享以下內容:
- 協議:HTTP
- 域名:Company.com
- 路徑架構:/page#
雖然它是安全的,但同源策略在處理需要訪問連接到第三方或子域的資源的基於 Web 的應用程序時具有限制性。
CORS 策略通過建立一些被視為“可信”的允許 HTTP 標頭授予瀏覽器查看這些相互關聯的資源的權限。 例如,應用程序可能必須從不同 Web 服務器上的兩個數據庫中提取數據。 當您包含額外的服務器時,起草一個特定的“允許”列表變得過度工作。 由於兩台服務器都在“共享”應用程序,因此該公司編寫了一個 CORS 策略,允許瀏覽器連接到兩者。 但是,如果未正確定義 CORS 策略,則該策略可能會讓服務器在惡意攻擊者請求時授予訪問權限。
憑證管理
用戶憑證包括用戶 ID 和密碼。 在獲得對應用程序的訪問權之前,用戶必須將這兩項信息提供到登錄頁面中。 但是,數據庫傾向於使用弱加密或以明文形式保存信息。 糟糕的憑據管理允許攻擊者輕鬆竊取憑據並利用它們獲取對 Web 應用程序的訪問權限。
跨站請求偽造 (CSRF)
CSRF 攻擊使用社會工程方法來驅使用戶修改應用程序中的信息,例如密碼或用戶名。 與跨站點腳本 (XXS) 攻擊或惡意軟件不同,CSRF 要求用戶登錄到僅使用會話 cookie 來驗證用戶請求或跟踪會話的應用程序。 在用戶執行預期操作的那一刻,惡意行為者使用瀏覽器執行攻擊的剩餘部分,例如轉移資金,而用戶不知道發生了什麼。
跨站點腳本 (XXS)
與要求用戶登錄應用程序以被欺騙更改某些信息的 CSRF 不同,XXS 攻擊需要惡意攻擊者將代碼輸入網頁,通常在頁面的某些組件中,例如圖像。 一旦用戶在瀏覽器上啟動網頁,不良代碼就會開始下載並在瀏覽器中運行。 例如,惡意代碼可能會將用戶從可信站點重定向到非法站點。
目錄索引
通常,Web 服務器將保存在它們上的所有文件概述在一個目錄中。 當用戶想要在 Web 應用程序中定位特定文件時,他們通常在請求中添加文件名。 在文件不可用的情況下,應用程序將向用戶顯示所有索引文件的列表,以便用戶可以選擇其他內容。
但是,這些文件會由 Web 服務器自動索引。 當應用程序顯示所有存儲文件的列表時,惡意攻擊者利用目錄索引中的漏洞可以獲得對數據的訪問權限,從而為他們提供有關係統的更多信息。 例如,他們可以了解個人用戶帳戶或命名約定。 這兩個數據點可被用來執行憑證盜竊攻擊或解開敏感信息。
目錄遍歷
也稱為回溯攻擊、點-點-斜線和目錄爬升,目錄遍歷漏洞利用應用程序從網絡服務器接收數據的方式。 訪問控制列表 (ACL) 通常限制用戶訪問根目錄內的某些給定文件。 使用目錄遍歷漏洞模式的惡意攻擊者會找出應用程序在請求文件時使用的 URL 格式。
封裝
與列表中的其他一些常見Web 應用程序漏洞不同,封裝漏洞利用了開發人員編寫應用程序的方式中的缺陷。 封裝是一個編程術語,指將數據和可以對該數據執行的操作捆綁到一個單元中。 封裝通過隱藏有關代碼如何運行的信息來保護數據,從而提供更好的用戶界面。 用戶不必知道應用程序如何向他們傳遞數據; 他們所需要的只是訪問它。
例如,應用程序開發人員可以在應用程序檢索數據的能力中包含訪問控制,例如讀取或寫入權限。 如果用戶在應用程序中請求信息,它只會提供他們被允許訪問的數據。
但是,如果開發人員未能在數據和跨應用程序各個方面執行的操作之間設置明確定義的邊界,那麼應用程序就會遭受封裝漏洞。 攻擊者通過向應用程序發送請求來利用這一點,因為他們知道這樣的操作會導致錯誤消息。 此錯誤消息隨後提供有關應用程序結構的信息,有助於更多的攻擊策略,例如 DOS – 拒絕服務。
不安全的直接對象引用 (IDOR)
Web 應用程序 URL 能夠公開用於將用戶引導到後端存儲位置的模式或格式。 例如,URL 可能會顯示存儲系統(如文件系統或數據庫)中記錄標識符的模式/格式。
單獨的 IDOR 可能是一個低風險的問題。 但是,當 IDOR 與失敗的訪問控制檢查相結合時,攻擊者就有機會成功實施攻擊。
您應該知道的其他常見Web 應用程序漏洞包括:
HTTP 響應拆分
這是一種 CRLF 注入攻擊。 HTTP 是瀏覽器發送查詢和服務器發迴響應的過程。 在此 Web 應用程序漏洞中,惡意攻擊者利用 CR 和 LR 符號來操縱瀏覽器和服務器之間的通信方式,從而傳遞請求,但告訴服務器將響應“劃分”為各個部分。 將響應分成兩個不同的部分使惡意行為者能夠控制服務器為響應請求的另一部分而提供的信息。 當此類請求的數據是用戶 ID 數據或敏感信息時,惡意行為者已成功執行攻擊。
注入缺陷
注入漏洞允許使用多種攻擊技術。 任何允許用戶更新 shell 命令、操作系統調用或數據庫的應用程序都可能遭受注入漏洞。 惡意攻擊者利用注入漏洞來改變命令,這些命令在應用程序中發展為新的和意外的操作。 通過利用這些漏洞,惡意行為者能夠創建、更新、讀取甚至刪除數據。
不安全的消息摘要漏洞
這是一個限制加密有效性的加密漏洞。 消息摘要應包含密碼散列函數。 與加密相反,散列函數不需要發送者和用戶使用密鑰。
因此,惡意攻擊者利用不安全的摘要漏洞來維持“哈希衝突攻擊”。 攻擊的目的是查明發送輸入是否會導致重複哈希的生成。 如果惡意行為強行生成一個共享散列,那麼他們可以使用該散列呈現惡意文件以供下載。 這反過來讓最終用戶假設文件是合法的。
傳輸層保護不足
傳輸層安全性 (TLS) 是指計算機應用程序能夠在 Internet 上安全地相互“通信”的過程。 許多應用程序僅在身份驗證過程中使用 TLS,這使得數據和 ID 會話信息在人們使用應用程序時容易受到攻擊。
當數據在用戶設備和應用服務器之間通過互聯網移動時,攻擊者可以利用此漏洞轉移數據。
遠程代碼執行 (RCE)
遠程代碼執行漏洞是 Web 應用程序中的編碼錯誤,使惡意攻擊者能夠插入代碼,而不管其地理位置如何。 RCE 屬於更廣泛的 Web 應用程序注入漏洞類別,攻擊者將自己的代碼輸入到不會確認用戶輸入的應用程序中,從而使服務器將其視為真正的應用程序代碼。 通常,惡意攻擊者會利用未修補的常見漏洞並將其代碼插入應用程序。
遠程文件包含 (RFI)
要將公共目錄鏈接到應用程序,開發人員在他們的代碼中添加“包含”語句。 例如,應用程序可能必須從數據庫中提取數據。 與其手動編寫代碼來獲取每個文件,“include”語句有助於鏈接整個源目錄,以便可以使用存儲在那裡的所有內容。
當 Web 應用程序遭受 RFI 漏洞時,攻擊者可以操縱該應用程序將惡意代碼或惡意軟件上傳到數據庫、服務器或網站。
安全配置錯誤
安全配置錯誤的可能性確實是當今最常見的Web 應用程序漏洞之一。 此漏洞通常由於組織未能修改默認安全設置而發生。 常見的安全錯誤配置是:
- 使用默認密碼或帳戶
- 未打補丁的軟件
- 無加密
- 防火牆策略不足
- 忽略未使用的資源、功能和其他組件
SQL注入
SQL,意思是結構化查詢語言,是一種用於數據庫的編程語言。 它允許檢索和操作關係數據庫的數據。 SQL 注入漏洞存在於一大群未經驗證的用戶輸入之下。 當惡意行為者故意發送虛假請求時,Web 應用程序會以錯誤消息進行響應,向他們提供有關數據庫結構和保護的信息。
未經驗證的自動庫激活
為了節省編碼時間,開發人員傾向於使用第三方庫。 在大多數情況下,這使他們能夠利用預先測試的代碼來加速應用程序開發過程。 然而,使用公開可用的開源代碼會增加安全風險,包括:
- 沒有記錄所有權會增加添加惡意代碼的風險
- 不再更新的被忽視項目
考慮到多個應用程序涉及第三方庫依賴項,此特定漏洞越來越普遍。
我們希望這篇博文的內容確實對您有用且富有洞察力。 確保找到適用於您案例的任何 Web 應用程序漏洞的解決方案,這將改變您的員工和客戶體驗。