一、SQL注入漏洞
SQL注入攻擊(SQL Injection),簡稱注入攻擊、SQL注入,被廣泛用于非法擷取網站控制權,是發生在應用程式的資料庫層上的安全漏洞。在設計程式,忽略了對輸入字元串中夾帶的SQL指令的檢查,被資料庫誤認為是正常的SQL指令而運作,進而使資料庫受到攻擊,可能導緻資料被竊取、更改、删除,以及進一步導緻網站被嵌入惡意代碼、被植入後門程式等危害。
通常情況下,SQL注入的位置包括:
(1)表單送出,主要是POST請求,也包括GET請求;
(2)URL參數送出,主要為GET請求參數;
(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注入漏洞。
二、跨站腳本漏洞
跨站腳本攻擊(Cross-site scripting,通常簡稱為XSS)發生在用戶端,可被用于進行竊取隐私、釣魚欺騙、竊取密碼、傳播惡意代碼等攻擊。
XSS攻擊使用到的技術主要為HTML和Javascript,也包括VBScript和ActionScript等。XSS攻擊對WEB伺服器雖無直接危害,但是它借助網站進行傳播,使網站的使用使用者受到攻擊,導緻網站使用者帳号被竊取,進而對網站也産生了較嚴重的危害。
XSS類型包括:
(1)非持久型跨站:即反射型跨站腳本漏洞,是目前最普遍的跨站類型。跨站代碼一般存在于連結中,請求這樣的連結時,跨站代碼經過服務端反射回來,這類跨站的代碼不存儲到服務端(比如資料庫中)。上面章節所舉的例子就是這類情況。
(2)持久型跨站:這是危害最直接的跨站類型,跨站代碼存儲于服務端(比如資料庫中)。常見情況是某使用者在論壇發貼,如果論壇沒有過濾使用者輸入的Javascript代碼資料,就會導緻其他浏覽此貼的使用者的浏覽器會執行發貼人所嵌入的Javascript代碼。
(3)DOM跨站(DOM XSS):是一種發生在用戶端DOM(Document Object Model文檔對象模型)中的跨站漏洞,很大原因是因為用戶端腳本處理邏輯導緻的安全問題。
常用的防止XSS技術包括:
(1)與SQL注入防護的建議一樣,假定所有輸入都是可疑的,必須對所有輸入中的script、iframe等字樣進行嚴格的檢查。這裡的輸入不僅僅是使用者可以直接互動的輸入接口,也包括HTTP請求中的Cookie中的變量,HTTP請求頭部中的變量等。
(2)不僅要驗證資料的類型,還要驗證其格式、長度、範圍和内容。
(3)不要僅僅在用戶端做資料的驗證與過濾,關鍵的過濾步驟在服務端進行。
(4)對輸出的資料也要檢查,資料庫裡的值有可能會在一個大網站的多處都有輸出,即使在輸入做了編碼等操作,在各處的輸出點時也要進行安全檢查。
(5)在釋出應用程式之前測試所有已知的威脅。
三、弱密碼漏洞
弱密碼(weak password) 沒有嚴格和準确的定義,通常認為容易被别人(他們有可能對你很了解)猜測到或被破解工具破解的密碼均為弱密碼。設定密碼通常遵循以下原則:
(1)不使用空密碼或系統預設的密碼,這些密碼衆所周之,為典型的弱密碼。
(2)密碼長度不小于8個字元。
(3)密碼不應該為連續的某個字元(例如:AAAAAAAA)或重複某些字元的組合(例如:tzf.tzf.)。
(4)密碼應該為以下四類字元的組合,大寫字母(A-Z)、小寫字母(a-z)、數字(0-9)和特殊字元。每類字元至少包含一個。如果某類字元隻包含一個,那麼該字元不應為首字元或尾字元。
(5)密碼中不應包含本人、父母、子女和配偶的姓名和出生日期、紀念日期、登入名、E-mail位址等等與本人有關的資訊,以及字典中的單詞。
(6)密碼不應該為用數字或符号代替某些字母的單詞。
(7)密碼應該易記且可以快速輸入,防止他人從你身後很容易看到你的輸入。
(8)至少90天内更換一次密碼,防止未被發現的入侵者繼續使用該密碼。
四、HTTP報頭追蹤漏洞
HTTP/1.1(RFC2616)規範定義了HTTP TRACE方法,主要是用于用戶端通過向Web伺服器送出TRACE請求來進行測試或獲得診斷資訊。當Web伺服器啟用TRACE時,送出的請求頭會在伺服器響應的内容(Body)中完整的傳回,其中HTTP頭很可能包括Session Token、Cookies或其它認證資訊。攻擊者可以利用此漏洞來欺騙合法使用者并得到他們的私人資訊。該漏洞往往與其它方式配合來進行有效攻擊,由于HTTP TRACE請求可以通過客戶浏覽器腳本發起(如XMLHttpRequest),并可以通過DOM接口來通路,是以很容易被攻擊者利用。
防禦HTTP報頭追蹤漏洞的方法通常禁用HTTP TRACE方法。
五、Struts2遠端指令執行漏洞
ApacheStruts是一款建立Java web應用程式的開放源代碼架構。Apache Struts存在一個輸入過濾錯誤,如果遇到轉換錯誤可被利用注入和執行任意Java代碼。
網站存在遠端代碼執行漏洞的大部分原因是由于網站采用了Apache Struts Xwork作為網站應用架構,由于該軟體存在遠端代碼執高危漏洞,導緻網站面臨安全風險。CNVD處置過諸多此類漏洞,例如:“GPS車載衛星定位系統”網站存在遠端指令執行漏洞(CNVD-2012-13934);Aspcms留言本遠端代碼執行漏洞(CNVD-2012-11590)等。
修複此類漏洞,隻需到Apache官網更新Apache Struts到最新版本:http://struts.apache.org
六、檔案上傳漏洞
檔案上傳漏洞通常由于網頁代碼中的檔案上傳路徑變量過濾不嚴造成的,如果檔案上傳功能實作代碼沒有嚴格限制使用者上傳的檔案字尾以及檔案類型,攻擊者可通過 Web 通路的目錄上傳任意檔案,包括網站後門檔案(webshell),進而遠端控制網站伺服器。
是以,在開發網站及應用程式過程中,需嚴格限制和校驗上傳的檔案,禁止上傳惡意代碼的檔案。同時限制相關目錄的執行權限,防範webshell攻擊。
七、私有IP位址洩露漏洞
IP位址是網絡使用者的重要标示,是攻擊者進行攻擊前需要了解的。擷取的方法較多,攻擊者也會因不同的網絡情況采取不同的方法,如:在區域網路内使用Ping指令,Ping對方在網絡中的名稱而獲得IP;在Internet上使用IP版的QQ直接顯示。最有效的辦法是截獲并分析對方的網絡資料包。攻擊者可以找到并直接通過軟體解析截獲後的資料包的IP標頭資訊,再根據這些資訊了解具體的IP。
針對最有效的“資料包分析方法”而言,就可以安裝能夠自動去掉發送資料包標頭IP資訊的一些軟體。不過使用這些軟體有些缺點,譬如:耗費資源嚴重,降低計算機性能;通路一些論壇或者網站時會受影響;不适合網吧使用者使用等等。現在的個人使用者采用最普及隐藏IP的方法應該是使用代理,由于使用代理伺服器後,“轉址服務”會對發送出去的資料包有所修改,緻使“資料包分析”的方法失效。一些容易洩漏使用者IP的網絡軟體(QQ、MSN、IE等)都支援使用代理方式連接配接Internet,特别是QQ使用“ezProxy”等代理軟體連接配接後,IP版的QQ都無法顯示該IP位址。雖然代理可以有效地隐藏使用者IP,但攻擊者亦可以繞過代理,查找到對方的真實IP位址,使用者在何種情況下使用何種方法隐藏IP,也要因情況而論。
八、未加密登入請求
由于Web配置不安全,登陸請求把諸如使用者名和密碼等敏感字段未加密進行傳輸,攻擊者可以竊聽網絡以劫獲這些敏感資訊。建議進行例如SSH等的加密後再傳輸。
九、敏感資訊洩露漏洞
SQL注入、XSS、目錄周遊、弱密碼等均可導緻敏感資訊洩露,攻擊者可以通過漏洞獲得敏感資訊。針對不同成因,防禦方式不同
十、CSRF
http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
Web應用是指采用B/S架構、通過HTTP/HTTPS協定提供服務的統稱。随着網際網路的廣泛使用,Web應用已經融入到日常生活中的各個方面:網上購物、網絡銀行應用、證券股票交易、政府行政審批等等。在這些Web通路中,大多數應用不是靜态的網頁浏覽,而是涉及到伺服器側的動态處理。此時,如果Java、PHP、ASP等程式語言的程式設計人員的安全意識不足,對程式參數輸入等檢查不嚴格等,會導緻Web應用安全問題層出不窮。
本文根據目前Web應用的安全情況,列舉了Web應用程式常見的攻擊原理及危害,并給出如何避免遭受Web攻擊的建議。
Web應用攻擊是攻擊者通過浏覽器或攻擊工具,在URL或者其它輸入區域(如表單等),向Web伺服器發送特殊請求,從中發現Web應用程式存在的漏洞,進而進一步操縱和控制網站,檢視、修改未授權的資訊。
1.1 Web應用的漏洞分類
1、資訊洩露漏洞
資訊洩露漏洞是由于Web伺服器或應用程式沒有正确處理一些特殊請求,洩露Web伺服器的一些敏感資訊,如使用者名、密碼、源代碼、伺服器資訊、配置資訊等。
造成資訊洩露主要有以下三種原因:
–Web伺服器配置存在問題,導緻一些系統檔案或者配置檔案暴露在網際網路中;
–Web伺服器本身存在漏洞,在浏覽器中輸入一些特殊的字元,可以通路未授權的檔案或者動态腳本檔案源碼;
–Web網站的程式編寫存在問題,對使用者送出請求沒有進行适當的過濾,直接使用使用者送出上來的資料。
2、目錄周遊漏洞
目錄周遊漏洞是攻擊者向Web伺服器發送請求,通過在URL中或在有特殊意義的目錄中附加“../”、或者附加“../”的一些變形(如“..\”或“..//”甚至其編碼),導緻攻擊者能夠通路未授權的目錄,以及在Web伺服器的根目錄以外執行指令。
3、指令執行漏洞
指令執行漏洞是通過URL發起請求,在Web伺服器端執行未授權的指令,擷取系統資訊,篡改系統配置,控制整個系統,使系統癱瘓等。
指令執行漏洞主要有兩種情況:
–通過目錄周遊漏洞,通路系統檔案夾,執行指定的系統指令;
–攻擊者送出特殊的字元或者指令,Web程式沒有進行檢測或者繞過Web應用程式過濾,把使用者送出的請求作為指令進行解析,導緻執行任意指令。
4、檔案包含漏洞
檔案包含漏洞是由攻擊者向Web伺服器發送請求時,在URL添加非法參數,Web伺服器端程式變量過濾不嚴,把非法的檔案名作為參數處理。這些非法的檔案名可以是伺服器本地的某個檔案,也可以是遠端的某個惡意檔案。由于這種漏洞是由PHP變量過濾不嚴導緻的,是以隻有基于PHP開發的Web應用程式才有可能存在檔案包含漏洞。
5、SQL注入漏洞
SQL注入漏洞是由于Web應用程式沒有對使用者輸入資料的合法性進行判斷,攻擊者通過Web頁面的輸入區域(如URL、表單等) ,用精心構造的SQL語句插入特殊字元和指令,通過和資料庫互動獲得私密資訊或者篡改資料庫資訊。SQL注入攻擊在Web攻擊中非常流行,攻擊者可以利用SQL注入漏洞獲得管理者權限,在網頁上加挂木馬和各種惡意程式,盜取企業和使用者敏感資訊。
6、跨站腳本漏洞
跨站腳本漏洞是因為Web應用程式時沒有對使用者送出的語句和變量進行過濾或限制,攻擊者通過Web頁面的輸入區域向資料庫或HTML頁面中送出惡意代碼,當使用者打開有惡意代碼的連結或頁面時,惡意代碼通過浏覽器自動執行,進而達到攻擊的目的。跨站腳本漏洞危害很大,尤其是目前被廣泛使用的網絡銀行,通過跨站腳本漏洞攻擊者可以冒充受害者通路使用者重要賬戶,盜竊企業重要資訊。
根據前期各個漏洞研究機構的調查顯示,SQL注入漏洞和跨站腳本漏洞的普遍程度排名前兩位,造成的危害也更加巨大。
1.2 SQL注入攻擊原理
SQL注入攻擊是通過構造巧妙的SQL語句,同網頁送出的内容結合起來進行注入攻擊。比較常用的手段有使用注釋符号、恒等式(如1=1)、使用union語句進行聯合查詢、使用insert或update語句插入或修改資料等,此外還可以利用一些内置函數輔助攻擊。
通過SQL注入漏洞攻擊網站的步驟一般如下:
第一步:探測網站是否存在SQL注入漏洞。
第二步:探測背景資料庫的類型。
第三步:根據背景資料庫的類型,探測系統表的資訊。
第四步:探測存在的表資訊。
第五步:探測表中存在的列資訊。
第六步:探測表中的資料資訊。
1.3 跨站腳本攻擊原理
跨站腳本攻擊的目的是盜走用戶端敏感資訊,冒充受害者通路使用者的重要賬戶。跨站腳本攻擊主要有以下三種形式:
1、本地跨站腳本攻擊
B給A發送一個惡意構造的Web URL,A點選檢視了這個URL,并将該頁面儲存到本地硬碟(或B構造的網頁中存在這樣的功能)。A在本地運作該網頁,網頁中嵌入的惡意腳本可以A電腦上執行A持有的權限下的所有指令。
2、反射跨站腳本攻擊
A經常浏覽某個網站,此網站為B所擁有。A使用使用者名/密碼登入B網站,B網站存儲下A的敏感資訊(如銀行帳戶資訊等)。C發現B的站點包含反射跨站腳本漏洞,編寫一個利用漏洞的URL,域名為B網站,在URL後面嵌入了惡意腳本(如擷取A的cookie檔案),并通過郵件或社會工程學等方式欺騙A通路存在惡意的URL。當A使用C提供的URL通路B網站時,由于B網站存在反射跨站腳本漏洞,嵌入到URL中的惡意腳本通過Web伺服器傳回給A,并在A浏覽器中執行,A的敏感資訊在完全不知情的情況下将發送給了C。
3、持久跨站腳本攻擊
B擁有一個Web站點,該站點允許使用者釋出和浏覽已釋出的資訊。C注意到B的站點具有持久跨站腳本漏洞,C釋出一個熱點資訊,吸引使用者閱讀。A一旦浏覽該資訊,其會話cookies或者其它資訊将被C盜走。持久性跨站腳本攻擊一般出現在論壇、留言簿等網頁,攻擊者通過留言,将攻擊資料寫入伺服器資料庫中,浏覽該留言的使用者的資訊都會被洩漏。
對于以上常見的Web應用漏洞漏洞,可以從如下幾個方面入手進行防禦:
1)對 Web應用開發者而言
大部分Web應用常見漏洞,都是在Web應用開發中,開發者沒有對使用者輸入的參數進行檢測或者檢測不嚴格造成的。是以,Web應用開發者應該樹立很強的安全意識,開發中編寫安全代碼;對使用者送出的URL、查詢關鍵字、HTTP頭、POST資料等進行嚴格的檢測和限制,隻接受一定長度範圍内、采用适當格式及編碼的字元,阻塞、過濾或者忽略其它的任何字元。通過編寫安全的Web應用代碼,可以消除絕大部分的Web應用安全問題。
2) 對Web網站管理者而言
作為負責網站日常維護管理工作Web管理者,應該及時跟蹤并安裝最新的、支撐Web網站運作的各種軟體的安全更新檔,確定攻擊者無法通過軟體漏洞對網站進行攻擊。
除了軟體本身的漏洞外,Web伺服器、資料庫等不正确的配置也可能導緻Web應用安全問題。Web網站管理者應該對網站各種軟體配置進行仔細檢測,降低安全問題的出現可能。
此外,Web管理者還應該定期審計Web伺服器日志,檢測是否存在異常通路,及早發現潛在的安全問題。
3)使用網絡防攻擊裝置
前兩種為事前預防方式,是比較理想化的情況。然而在現實中,Web應用系統的漏洞還是不可避免的存在:部分Web網站已經存在大量的安全漏洞,而Web開發者和網站管理者并沒有意識到或發現這些安全漏洞。由于Web應用是采用HTTP協定,普通的防火牆裝置無法對Web類攻擊進行防禦,是以可以使用IPS入侵防禦裝置來實作安全防護。
H3C IPS Web攻擊防禦
H3C IPS入侵防禦裝置有一套完整的Web攻擊防禦架構,能夠及時發現各種已經暴露的和潛在的Web攻擊。下圖為對于Web攻擊的總體防禦架構。
圖1:Web攻擊防禦架構,參見:http://blog.csdn.net/moshenglv/article/details/53439579
H3C IPS采用基于特征識别的方式識别并阻斷各種攻擊。IPS裝置有一個完整的特征庫,并可定期以手工與自動的方式對特征庫進行更新。當網絡流量進入IPS後,IPS首先對封包進行預處理,檢測封包是否正确,即滿足協定定義要求,沒有錯誤字段;如果封包正确,則進入深層檢測引擎。該引擎是IPS檢測的核心子產品,對通過IPS裝置的Web流量進行深層次的分析,并與IPS攻擊庫中的特征進行比對,檢測Web流量是否存在異常;如果發現流量比對了攻擊特征,IPS則阻斷網絡流量并上報日志;否則,網絡流量順利通過。
此Web攻擊防禦架構有如下幾個特點:
1) 構造完整的Web攻擊檢測模型,準确識别各種Web攻擊
針對Web攻擊的特點,考慮到各種Web攻擊的原理和形态,在不同漏洞模型之上開發出通用的、階層化的Web攻擊檢測模型,并融合到特征庫中。這些模型抽象出Web攻擊的一般形态,對主流的攻擊能夠準确識别,使得模型通用化。
2) 檢測方式靈活,可以準确識别變形的Web攻擊
在實際攻擊中,攻擊者為了逃避防攻擊裝置的檢測,經常對Web攻擊進行變形,如采用URL編碼技術、修改參數等。H3C根據Web應用漏洞發生的原理、攻擊方式和攻擊目标,對攻擊特征進行了擴充。即使攻擊者修改攻擊參數、格式、語句等内容,相同漏洞原理下各種變形的攻擊同樣能夠被有效阻斷。這使得IPS的防禦範圍擴大,防禦的靈活性也顯著增強,極大的減少了漏報情況的出現。
3) 確定對最新漏洞及技術的跟蹤,有效阻止最新的攻擊
随着Web攻擊出現的頻率日益增高,其危害有逐漸擴充的趨勢。這對IPS裝置在防禦的深度和廣度上提出了更高的要求,不僅要能夠防禦已有的Web攻擊,更要有效的阻止最新出現的、未公布的攻擊。目前,H3C已經建立起一套完整的攻防試驗環境,可以及時發現潛在Web安全漏洞。同時還在繼續跟蹤最新的Web攻擊技術和工具,及時更新Web攻擊的特征庫,第一時間釋出最新的Web漏洞應對措施,確定使用者的網絡不受到攻擊。
4) 保證正常業務的高效運作
檢測引擎是IPS整個裝置運作的關鍵,該引擎使用了高效、準确的檢測算法,對通過裝置的流量進行深層次的分析,并通過和攻擊特征進行比對,檢測流量是否存在異常。如果流量沒有比對到攻擊特征,則允許流量通過,不會妨礙正常的網絡業務,在準确防禦的同時保證了正常業務的高效運作。
結束語
網際網路和Web技術廣泛使用,使Web應用安全所面臨的挑戰日益嚴峻,Web系統時時刻刻都在遭受各種攻擊的威脅,在這種情況下,需要制定一個完整的Web攻擊防禦解決方案,通過安全的Web應用程式、Web伺服器軟體、Web防攻擊裝置共同配合,確定整個網站的安全。任何一個簡單的漏洞、疏忽都會造成整個網站受到攻擊,造成巨大損失。此外 ,Web攻擊防禦是一個長期持續的工作,随着Web技術的發展和更新,Web攻擊手段也不斷發展,針對這些最新的安全威脅,需要及時調整Web安全防護政策,確定Web攻擊防禦的主動性,使Web網站在一個安全的環境中為企業和客戶服務。