論攻擊Web應用的常見技術
攻擊目標:
應用HTTP協議的服務器和客戶端、以及運行在服務器上的Web應用等。
攻擊基礎:
HTTP是一種通用的單純協議機制。在Web應用中,從瀏覽器那接受到的HTTP請求的全部內容,都可以在客戶端自由地變更、篡改,Web應用可能會接收到和服務器完全不相同的、被刻意篡改的內容。
攻擊對象:
URL查詢字段或表單、HTTP首部、Cookit等。
在HTTP的請求報文內加載攻擊代碼,就能發起Web應用的攻擊,通過URL查詢字段或表單、HTTP首部、Cookit等途徑把攻擊代碼傳入,若代碼存在安全漏洞,則會被攻擊者拿到管理權限,然后請求內容被更改或獲取。
攻擊方式:
主動攻擊和被動攻擊
主動攻擊:以服務器為目標的主動攻擊
主動攻擊是指攻擊者通過直接訪問Web應用,把攻擊代碼傳入的攻擊模式。由于該模式是直接針對服務器上的資源進行攻擊的,因此攻擊者需要能夠訪問到那些資源。
主動攻擊模式里具有代表性的攻擊是SQL注入攻擊和OS命令注入攻擊。
SQL注入攻擊
該攻擊主要是針對Web應用使用的數據庫,通過運行非法的SQL而產生的攻擊。
攻擊模式:當Web應用對數據庫表內的數據進行檢索、添加或刪除等操作時,會使用SQL語句連接數據庫進行相應的操作,所以如果在調用 SQL語句的時候存在漏洞的話,將會被惡意注入非法的SQL語句。所以可以在Web的地址欄部分進行相應的攻擊處理。如:在URL中,加--,在SQL語句中--表示注釋的意思,會將一部分內容注釋掉,達到攻擊者的攻擊目的。
攻擊影響:非法查看或篡改數據庫內的數據、規避認證、執行和數據庫服務器業務關聯的程序
OS命令注入攻擊
該攻擊是通過Web應用,執行非法的操作系統命令達到攻擊目的,只要在能調用Shell函數的地方就存在被攻擊的風險。
攻擊模式:從Web應用中通過Shell來調用操作系統命令,如果在Shell調用時存在漏洞,就可以執行攻擊者的非法OS命令,也就是說,可以通過OS注入攻擊執行OS上安裝的各種程序。如發送咨詢郵件來注入攻擊。
被動攻擊:以服務器為目標的被動攻擊
被動攻擊時指利用圈套策略執行攻擊代碼的攻擊模式,在被動攻擊的過程中,攻擊者不直接對目標Web應用程序發起攻擊,一般的攻擊手法是設置陷阱讓用戶去觸發,中招后的用戶瀏覽器會把含有攻擊代碼的HTTP請求發送給作為攻擊目標的Web應用,運行攻擊代碼。攻擊者借助這個攻擊代碼為基礎,可以竊取用戶個人信息、篡改濫用用戶的信息等。該攻擊模式連企業內網都同樣會受到攻擊。
被動攻擊中具有代表性的攻擊是跨站腳本攻擊和跨站點請求偽造、HTTP首部注入攻擊等。
跨站腳本攻擊
XSS,Cross-Site Scripting,是通過安全漏洞的Web網站注冊用戶的瀏覽器內運行非法的HTML代碼或者JavaScript進行的一種攻擊。
攻擊模式:攻擊者編寫腳本設下陷阱,用戶在自己的瀏覽器上運行時,一不小心就會受到被動攻擊。
攻擊影響:利用虛假輸入表單騙取用戶個人信息、利用腳本竊取用戶的Cookit值,被攻擊者在不知情的情況下,幫助攻擊者發送惡意請求、顯示偽造的文章或圖片
XSS是攻擊者利用預先設置好的陷阱觸發的被動攻擊。如:在URL中加入特定的script代碼來獲取登錄者的個人登陸信息、對用戶Cookit的竊取攻擊(通過Js獲取)。
跨站點請求偽造
CSRF,是指攻擊者通過設置好的陷阱,強制對已完成認證的用戶進行非預期的個人信息或設定信息等某種狀態更新,屬于被動攻擊。影響:利用已通過認證的用戶權限更新設定信息、利用已通過認證的用戶權限購買商品、利用已通過認證的用戶權限在留言板上發表言論。等
HTTP首部注入攻擊
該攻擊模式是指攻擊者通過響應首部字段被插入換行、添加任意響應首部或主體的一種攻擊。屬于被動攻擊模式。向首部主體添加內容的攻擊稱為HTTP響應截斷攻擊。
攻擊模式:Web應用有時會將從外部接收到的數值,賦給響應首部字段Location和Set-Cookit。HTTP首部注入通過在某些響應首部字段需要處理輸出值的時候,插入換行發動攻擊。
攻擊影響:設置任何Cookit信息、重定向至任意URL、顯示任意的主體(HTTP響應截斷攻擊)
攻擊案例:
1、在URL后添加以%0D%0A(HTTP報文中的換行符),后緊接著攻擊者自己編寫的首部攻擊字段進行信息獲取,如Set-Cookit來獲取相應Cookit的值。
2、HTTP響應截斷攻擊:將兩個%0D%0A并排插入字符串后發送,利用兩個連續的換行就可做出HTTP首部和主體分隔所需的空行類,這樣就能顯示偽造的主體,達到攻擊目的。利用這種攻擊方式,已觸發陷阱的用戶將看到偽造的Web頁面,再讓用戶輸入個人信息等,達到跨站腳本攻擊相同的效果。
3、緩存污染:濫用HTTP/1.1中匯集多響應返回功能,會導致緩存服務器對任何內容進行緩存操作,使用該緩存服務器的用戶,在瀏覽遭到攻擊的網站,會不斷地瀏覽被替換掉的Web網頁。
其他攻擊方式:
郵件首部注入攻擊
該攻擊模式是指Web應用中的郵件發送功能,攻擊者通過對郵件首部To或Subject內任意添加非法內容發起的攻擊。利用存在安全漏洞的Web網站,可對任意郵件地址發送廣告郵件或病毒郵件。
攻擊案例:攻擊者將以下數據作為郵件地址發起請求,然后在后面加上%0D%0A在郵件報文中表示換行符,使用了之后,可以對郵件地址進行追加發送,使用連續兩個換行符就有可能篡改郵件文本內容并發送。再以相同的方法,就有可能改寫To和Subject等任意郵件首部,向文本添加附件等動作。
目錄遍歷攻擊
目錄遍歷攻擊是指對本無意公開的文件目錄,通過非法截斷其目錄路徑后,達成訪問目的的一種攻擊。
攻擊模式:通過Web應用對文件操作處理時,由外部指定文件名的處理存在漏洞的情況下,用戶可用../../etc/passed等相對路徑定位到絕對路徑上面,因此服務器上任意的文件或文件目錄皆有可能被訪問到。就可以去非法瀏覽、篡改或刪除Web服務器上的文件。
遠程文件包含漏洞
該攻擊模式是指當部分腳本內容需要從其他文件讀取時,攻擊者利用指定外部服務器的URL充當依賴文件,讓腳本讀取后,就可運行任意腳本的一種攻擊。這是PHP存在的主要安全漏洞,對PHP的include或require來說,這個功能是一種可通過設定、指定外部服務器的URL作為文件名的功能,但是由于它十分的危險,所以PHP5.2.0后默認此功能無效。
怎樣會造成安全漏洞?
因設置或設計上的缺陷引發的安全漏洞
錯誤設置Web服務器,或是由設計上的一些問題引起的安全漏洞。
1、強制瀏覽
從安置在Web服務器的公開目錄下的文件中,瀏覽那些原本非自愿公開的文件。可能會泄露顧客的個人信息、泄露原本需要具有訪問權限的用戶才能查閱的信息內容、泄露未外連到外界的文件。比較好的做法是:隱蔽其URL。因為直接顯示易推測的文件名或文件目錄索引時,通過某些方法可能會使URL產生泄露。
2、不正確的錯誤消息處理
Web應用的錯誤信息內包含對攻擊者有用的信息,主要有:Web應用拋出的錯誤信息、數據庫等系統拋出的錯誤信息等。
Web應用拋出的錯誤信息:以認證功能的認證錯誤信息為例,講解不正確的錯誤消息處理方式。類似于當用戶登陸失敗的時候具體提醒用戶為注冊等信息,攻擊者可利用這些信息確認用戶是否注冊。建議將提醒消息的內容僅保留在“認證錯誤”這種程度。
數據庫等系統拋出的錯誤信息:輸入未預料的錯誤消息時,提醒數據庫的錯誤。攻擊者從提醒消息可讀出數據庫選用的是MySQL等數據庫信息,可能給SQL注入攻擊提供啟發。
3、開放重定向
對指定的任意URL做重定向跳轉的功能,加入指定的重定向URL到某個具有惡意的Web網站,那么用戶就會被誘導到那個網站。如 http://example/?redirect=***.攻擊者指定重定向參數就可以改寫成已設定好的Web 網站對應的連接。可能用來作為釣魚攻擊的跳板。
因會話管理疏忽引發的安全漏洞
如果在會話管理上有所疏忽,就會導致用戶的認證狀態被竊取等后果。如會話劫持(通過一些手段拿到用戶的會話ID,偽裝用戶達到攻擊的效果)、會話固定攻擊(強制用戶使用攻擊者指定的會話ID,屬于被動攻擊)等方式。