被廣泛用於非法獲取網站控制權的SQL註入攻擊(簡稱SQL註入)是應用程序數據庫層的安全漏洞。在設計程序時,忽略了對輸入字符串中攜帶的SQL指令的檢查,數據庫誤以為是正常的SQL指令並運行,從而導致數據庫被攻擊,可能導致數據被竊取、更改、刪除,進壹步導致惡意代碼、後門程序嵌入網站的危害。
通常,SQL註入的位置包括:
(1)表單提交,主要是POST請求和GET請求;
(2)URL參數提交,主要用於獲取請求參數;
(3)Cookie參數提交;
(4)HTTP請求頭中的壹些可修改值,如Referer、User_Agent等。
(5)壹些邊緣輸入點,比如. mp3文件的壹些文件信息。
常見的預防方法
(1)所有查詢語句都使用數據庫提供的參數化查詢接口,參數化語句使用參數,而不是在SQL語句中嵌入用戶輸入變量。目前,幾乎所有的數據庫系統都提供了參數化的SQL語句執行接口,可以有效防止SQL註入攻擊。
(2)對於特殊字符(')
(3)確認每個數據的類型。比如數字數據必須是數字的,數據庫中的存儲字段必須對應int。
(4)應該嚴格規定數據長度,這在壹定程度上可以防止相對較長的SQL註入語句被正確執行。
(5)網站各數據層編碼統壹,建議使用UTF-8編碼。上層和下層之間的不壹致可能導致壹些過濾模型被繞過。
(6)嚴格限制網站用戶對數據庫的操作權限,為該用戶提供只能滿足其工作的權限,將註入攻擊對數據庫的危害降到最低。
(7)避免在網站上顯示SQL錯誤信息,如類型錯誤、字段不匹配等,防止攻擊者利用這些錯誤信息做出壹些判斷。
(8)在網站發布之前,建議使用壹些專業的SQL註入檢測工具及時檢測並修復這些SQL註入漏洞。
第二,跨站腳本漏洞
跨站點腳本(XSS)發生在客戶端,可用於竊取隱私、網絡釣魚、竊取密碼、傳播惡意代碼和其他攻擊。
XSS攻擊中使用的技術主要是HTML和Javascript,但也有VBScript和ActionScript。XSS攻擊雖然不直接危害WEB服務器,但它通過網站傳播,使網站用戶受到攻擊,導致網站用戶賬號被盜,也對網站造成了嚴重危害。
XSS類型包括:
(1)非持久性跨站:即反射性跨站腳本漏洞,是目前最常見的跨站類型。跨站點代碼壹般存在於鏈接中。當請求這種鏈接時,跨站點代碼通過服務器反射回來,並且這種跨站點代碼不存儲在服務器中(例如數據庫)。上壹章給出的例子就是這樣的情況。
(2)持久跨站:這是最直接的跨站類型,跨站代碼存儲在服務器(如數據庫)中。用戶在論壇上發帖是很常見的。如果論壇沒有對用戶輸入的Javascript代碼數據進行過濾,就會導致瀏覽這篇帖子的其他用戶執行發帖人嵌入的Javascript代碼。
(3) DOM XSS (Domxss)是壹個跨站點的漏洞,發生在客戶端3) DOM(文檔對象模型),很大程度上是因為客戶端腳本邏輯導致的安全問題。
預防XSS的常見技術包括:
(1)和SQL註入保護的建議壹樣,假設所有輸入都是可疑的,所有輸入中的script、iframe等字眼都要嚴格檢查。這裏的輸入不僅是用戶可以直接交互的輸入接口,還包括HTTP請求中Cookie中的變量和HTTP請求頭中的變量。
(2)不僅要核實數據的類型,還要核實數據的格式、長度、範圍和內容。
(3)不要只在客戶端驗證和過濾數據,關鍵的過濾步驟在服務器端。
(4)還應檢查輸出數據。數據庫中的值可能會在大型網站的許多地方輸出。即使輸入是編碼的,也要在各處的輸出點進行安全檢查。
(5)在發布應用程序之前,測試所有已知的威脅。
第三,弱密碼漏洞
弱密碼沒有嚴格準確的定義。壹般認為容易被別人(可能很了解妳的人)猜到或者被破解工具破解的密碼都是弱密碼。設置密碼通常遵循以下原則:
(1)不要使用空白密碼或系統默認密碼,這是眾所周知的典型弱密碼。
(2)密碼長度不少於8個字符。
(3)密碼不應是連續字符(例如AAAAAAAA)或重復字符的組合(例如tzf.tzf)。
(4)密碼應該是以下四類字符的組合:大寫字母(a-z)、小寫字母(A-Z)、數字(0-9)和特殊字符。每種類型的字符至少包含壹個。如果某個字符只包含壹個字符,它不應該是第壹個或最後壹個字符。
(5)密碼不應包括姓名及出生日期、註冊日期、登入名稱、電郵地址及其他與本人有關的資料,以及字典中的詞語。
(6)密碼不應該是帶有數字或符號的文字,而不是某些字母。
(7)密碼要好記,能快速輸入,防止別人從背後輕易看到妳的輸入。
(8)90天內至少更改壹次密碼,防止未被發現的入侵者繼續使用密碼。
第四,HTTP頭跟蹤漏洞
HTTP/1.1(RFC 2616)定義了HTTP跟蹤方法,主要用於客戶端通過向Web服務器提交跟蹤請求來測試或獲取診斷信息。當Web服務器上啟用跟蹤時,提交的請求頭將在服務器響應的正文中完整返回,其中HTTP頭可能包括會話令牌、Cookies或其他身份驗證信息。攻擊者可以利用該漏洞欺騙合法用戶,獲取他們的隱私信息。這種漏洞經常與其他方式結合起來進行有效的攻擊。由於HTTP跟蹤請求可以通過客戶端瀏覽器腳本(如XMLHttpRequest)發起,並且可以通過DOM接口訪問,因此很容易被攻擊者利用。
防禦HTTP頭跟蹤漏洞的方法通常會禁用HTTP跟蹤方法。
動詞 (verb的縮寫)Struts2遠程命令執行漏洞
ApacheStruts是壹個用於構建Java web應用程序的開源架構。Apache Struts有壹個輸入過濾錯誤,如果遇到轉換錯誤,該錯誤可用於註入和執行任意Java代碼。
網站出現遠程代碼執行漏洞的原因大多是網站采用Apache Struts Xwork作為網站的應用框架。由於該軟件存在遠程執行代碼的高危漏洞,網站面臨安全風險。CNVD處理過很多這樣的漏洞,比如“GPS車載衛星定位系統”(CNVD-2012-13934)網站存在遠程執行命令的漏洞;Aspcms留言簿的遠程代碼執行漏洞(CNVD-2012-11590)等。
要修復這種漏洞,只要去Apache官網,把Apache Struts升級到最新版本:blogs.com/hyddd/archive/2009/04/09/1432744.html.就可以了
Web應用是指采用B/S架構,通過HTTP/HTTPS協議提供服務的總稱。隨著互聯網的廣泛使用,Web應用已經融入到日常生活的方方面面:網上購物、網上銀行應用、證券股票交易、政府行政審批等等。在這些web訪問中,大多數應用程序都不是靜態的Web瀏覽,而是涉及到服務器端的動態處理。這時,如果Java、PHP、ASP等編程語言的程序員沒有安全意識,對程序參數的輸入檢查不嚴,就會導致層出不窮的Web應用安全問題。
根據當前Web應用的安全現狀,列舉了Web應用常見的攻擊原理和危害,並給出了壹些如何避免Web攻擊的建議。
Web應用程序漏洞原理
Web應用程序攻擊是指攻擊者通過瀏覽器或攻擊工具在URL或其他輸入區域(如表單)向Web服務器發送特殊請求,從而找到Web應用程序的漏洞,進而操縱和控制網站,查看和修改未授權信息。
1.1 Web應用的漏洞分類
1,信息泄露漏洞
信息泄露漏洞是由於Web服務器或應用程序沒有正確處理壹些特殊的請求,泄露了Web服務器的壹些敏感信息,如用戶名、密碼、源代碼、服務器信息、配置信息等。
信息泄露主要有三個原因:
–Web服務器配置有問題,導致部分系統文件或配置文件暴露在互聯網中;
–Web服務器本身存在漏洞。在瀏覽器中輸入壹些特殊字符,訪問未經授權的文件或動態腳本文件;
——網站的編程存在問題,沒有正確過濾用戶提交的請求,直接使用用戶提交的數據。
2.目錄遍歷漏洞
目錄遍歷漏洞是攻擊者向Web服務器發送請求,並通過附加“../"或其壹些變體"../(如“...“或者”../”或甚至它們的代碼),攻擊者就可以訪問未經授權的目錄,並在Web服務器的根目錄之外執行命令。
3、命令執行漏洞
命令執行漏洞是通過URL發起請求,在Web服務器上執行未經授權的命令,獲取系統信息,篡改系統配置,控制整個系統,使系統癱瘓。
命令執行漏洞主要有兩種情況:
–遍歷目錄中的漏洞,訪問系統文件夾,並執行指定的系統命令;
–攻擊者提交特殊字符或命令,Web程序無法檢測或繞過Web應用程序的過濾,並將用戶提交的請求解釋為指令,導致任意命令的執行。
4.這份文件有漏洞。
文件包含漏洞是攻擊者向Web服務器發送請求時,在URL中添加非法參數,Web服務器上的程序變量沒有經過嚴格過濾,因此非法文件名被當作參數處理。這些非法文件名可能是服務器上的本地文件,也可能是遠端的惡意文件。因為這個漏洞是由於PHP變量過濾不良造成的,所以只有基於PHP開發的Web應用才可能存在文件包含漏洞。
5.SQL註入脆弱性
SQL註入的漏洞是由於Web應用程序不判斷用戶輸入的數據的合法性。攻擊者通過網頁的輸入區域(如URL、表單等)插入特殊字符和帶有精心構造的SQL語句的指令。),並通過與數據庫的交互獲取隱私信息或篡改數據庫信息。SQL註入攻擊在Web攻擊中非常常見。攻擊者可以利用SQL註入漏洞獲取管理員權限,在網頁中附加木馬和各種惡意程序,竊取企業和用戶的敏感信息。
6.跨站點腳本漏洞
跨站腳本漏洞是因為用戶提交的語句和變量在Web應用過程中沒有被過濾或限制。攻擊者通過網頁的輸入區向數據庫或HTML頁面提交惡意代碼。當用戶打開帶有惡意代碼的鏈接或頁面時,惡意代碼通過瀏覽器自動執行,從而達到攻擊的目的。跨站腳本漏洞的危害非常大,尤其是目前廣泛使用的網銀。通過跨站腳本漏洞,攻擊者可以冒充受害者訪問用戶的重要賬號,竊取企業的重要信息。
根據前期各漏洞研究機構的調查,SQL註入漏洞和跨站腳本漏洞的流行程度排名前兩位,造成的危害更大。
1.2 SQL註入攻擊原理
SQL註入攻擊是將巧妙的SQL語句與網頁提交的內容相結合的註入式攻擊。常用的方法有使用註釋符號、恒等式(如1 = 1)、使用union語句聯合查詢、使用insert或update語句插入或修改數據等。此外,還可以利用壹些內置函數來輔助攻擊。
通過向SQL註入漏洞來攻擊網站的步驟通常如下:
第壹步:檢測網站是否存在SQL註入漏洞。
第二步:檢測後臺數據庫的類型。
第三步:根據後臺數據庫的類型檢測系統表的信息。
步驟4:檢測現有的表信息。
第五步:檢測表中的列信息。
第六步:檢測表格中的數據信息。
1.3跨站腳本攻擊原理
跨站腳本攻擊的目的是從客戶端竊取敏感信息,並冒充受害者訪問用戶的重要帳戶。跨站腳本攻擊主要有以下三種形式:
1,本地跨站腳本攻擊
B發送給A壹個惡意構造的網頁網址,A點擊查看網址並將頁面保存到本地硬盤(或者B構造的網頁中有這樣的功能)。A在本地運行網頁,網頁中嵌入的惡意腳本可以在電腦上執行A持有權限下的所有命令。
2.反射式跨站點腳本攻擊
甲經常訪問某網站,該網站歸乙所有,甲使用用戶名/密碼登錄乙網站,乙網站存儲甲的敏感信息(如銀行賬戶信息等。).c發現B的站點存在反射跨站腳本漏洞,編寫了利用該漏洞的URL,域名為B網站,並在URL後面嵌入惡意腳本(如獲取A的cookie文件),通過郵件或社交工程誘騙A訪問惡意URL。當A使用C提供的URL訪問B網站時,由於B網站存在反射跨站腳本漏洞,URL中嵌入的惡意腳本通過Web服務器返回給A,並在瀏覽器中執行,A的敏感信息會在C完全不知情的情況下發送給C。
3.持續的跨站點腳本攻擊
b有壹個網站,允許用戶發布和瀏覽已發布的信息。C註意到B的站點存在持續性的跨站腳本漏洞,C發布熱點消息吸引用戶閱讀。壹旦A瀏覽了這些信息,其會話cookies或其他信息就會被c竊取,持續性跨站腳本攻擊壹般出現在論壇、留言簿等網頁中。攻擊者通過留下消息的方式將攻擊數據寫入服務器數據庫,瀏覽消息的用戶的信息就會被泄露。
Web應用程序漏洞的防禦實現
對於以上常見的Web應用漏洞,我們可以從以下幾個方面著手進行防禦:
1)面向Web應用開發者
Web應用程序中最常見的漏洞是由於開發人員在開發Web應用程序時沒有檢測到用戶輸入的參數或者檢測不嚴格造成的。所以,Web應用開發者要樹立強烈的安全意識,在開發過程中編寫安全代碼;對用戶提交的URL、查詢關鍵字、HTTP頭、帖子數據進行嚴格檢測和限制,只接受具有壹定長度和適當格式及編碼的字符,對其他任何字符進行屏蔽、過濾或忽略。通過編寫安全的Web應用程序代碼,可以消除大多數Web應用程序安全問題。
2)對於網站管理員來說,
作為負責網站日常維護和管理的網站管理員,要及時跟蹤和安裝支持網站運行的各種軟件的最新安全補丁,確保攻擊者無法通過軟件漏洞對網站進行攻擊。
除了軟件本身的漏洞,Web服務器和數據庫的不正確配置也可能導致Web應用的安全問題。網站管理員應仔細檢查網站的各種軟件配置,以減少出現安全問題的可能性。
此外,網站管理員還應該定期審計Web服務器日誌,檢測是否存在異常訪問,盡早發現潛在的安全問題。
3)使用網絡反攻擊設備
前兩種是提前預防措施,是比較理想的情況。然而,在現實中,Web應用系統的漏洞是不可避免的:壹些網站已經存在大量的安全漏洞,但Web開發者和網站管理員並沒有意識到或發現這些安全漏洞。由於Web應用采用HTTP協議,普通防火墻設備無法防禦Web攻擊,因此可以使用IPS入侵防禦設備來實現安全防護。
H3C IPS網絡攻擊防禦
H3C IPS入侵防禦設備擁有完整的Web攻擊防禦框架,能夠及時發現各種暴露的和潛在的Web攻擊。下圖顯示了網絡攻擊的整體防禦框架。
圖1: Web攻擊防禦框架。見:/moshenglu/article/details/53439579。
H3C IPS使用基於特征的識別來識別和阻止各種攻擊。IPS設備有完整的特性庫,可以定期手動和自動升級。當網絡流量進入IPS時,IPS首先對報文進行預處理,檢測報文是否正確,即符合協議定義的要求,沒有錯誤字段;如果消息正確,則進入深度檢測引擎。引擎是IPS檢測的核心模塊,它對通過IPS設備的Web流量進行深度分析,並與IPS攻擊庫中的特征進行匹配,檢測Web流量是否存在異常。如果發現流量符合攻擊特征,IPS會攔截網絡流量並上報日誌;否則,網絡流量會順利通過。
這個網絡攻擊防禦框架具有以下特征:
1)構建完整的Web攻擊檢測模型,準確識別各種Web攻擊。
根據Web攻擊的特點,考慮各種Web攻擊的原理和形式,在不同漏洞模型的基礎上,開發了通用的、層次化的Web攻擊檢測模型,並集成到特征庫中。這些模型抽象了Web攻擊的壹般形式,能夠準確識別主流攻擊,使模型具有通用性。
2)檢測方法靈活,能夠準確識別變形網頁攻擊。
在實際攻擊中,為了躲避反攻擊設備的檢測,攻擊者往往會對Web攻擊進行變形,比如采用URL編碼技術、修改參數等。H3C根據Web應用程序漏洞的原理、攻擊方式和攻擊目標擴展了攻擊特征。即使攻擊者修改了攻擊參數、格式、語句等內容,同樣漏洞原理下的各種變形攻擊也能被有效阻斷。這使得IPS的防禦範圍擴大,防禦靈活性也顯著增強,大大減少了漏報的發生。
3)確保對最新漏洞和技術的跟蹤,有效防範最新攻擊。
隨著網絡攻擊的日益頻繁,其危害有逐漸擴大的趨勢。這就在防禦的深度和廣度上對IPS設備提出了更高的要求,不僅要能防禦現有的Web攻擊,還要能有效地防範最新的和未公開的攻擊。目前,H3C已經建立了完整的攻防測試環境,可以及時發現潛在的Web安全漏洞。同時持續跟蹤最新的Web攻擊技術和工具,及時更新Web攻擊的特征庫,第壹時間發布最新的Web漏洞響應措施,確保用戶的網絡不受攻擊。
4)保證正常業務的高效運轉。
檢測引擎是整個IPS設備運行的關鍵。該引擎使用高效、準確的檢測算法對流經設備的流量進行深度分析,通過與攻擊特征的匹配來檢測流量是否異常。如果流量與攻擊特征不匹配,則允許流量通過,不會妨礙正常的網絡業務,在精確防禦的同時保證正常業務的高效運行。
結束語
隨著互聯網和Web技術的廣泛應用,Web應用的安全性面臨著越來越嚴峻的挑戰,Web系統時刻受到各種攻擊的威脅。在這種情況下,需要制定壹套完整的Web攻擊防禦解決方案,通過安全的Web應用、Web服務器軟件和Web反攻擊設備的配合來保證整個網站的安全。任何壹個簡單的漏洞和疏忽都會導致整個網站被攻擊,造成巨大損失。另外,Web攻擊防禦是壹項長期持續的工作。隨著Web技術的發展和更新,Web攻擊手段也在不斷發展。針對這些最新的安全威脅,需要及時調整Web安全防護策略,確保Web攻擊防禦的主動性,使網站在安全的環境中為企業和客戶服務。
原始鏈接: