1. 程式人生 > >常見web漏洞及防範(轉)

常見web漏洞及防範(轉)

單個漏洞,需要進行排查與整改,藉著別人的智慧,做一個簡單的收集。最好能夠將常見漏洞,不限於web類的,進行一個統一的整理。這是今年的任務。
進行漏洞的工具的收集,為未來的工作做好基礎。。。

一、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、目錄遍歷、弱口令等均可導致敏感資訊洩露,攻擊者可以通過漏洞獲得敏感資訊。針對不同成因,防禦方式不同

Web應用是指採用B/S架構、通過HTTP/HTTPS協議提供服務的統稱。隨著網際網路的廣泛使用,Web應用已經融入到日常生活中的各個方面:網上購物、網路銀行應用、證券股票交易、政府行政審批等等。在這些Web訪問中,大多數應用不是靜態的網頁瀏覽,而是涉及到伺服器側的動態處理。此時,如果Java、PHP、ASP等程式語言的程式設計人員的安全意識不足,對程式引數輸入等檢查不嚴格等,會導致Web應用安全問題層出不窮。

本文根據當前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應用漏洞的防禦實現

對於以上常見的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攻擊的總體防禦框架。

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網站在一個安全的環境中為企業和客戶服務。

常見漏洞整改建議收集

Apache樣例檔案洩漏
測試方法
  在連結的根目錄中新增examples或者docs目錄進行訪問判斷!
漏洞描述
 apache一些樣例檔案沒有刪除,可能存在cookie、session偽造,進行後臺登入操作
修復建議
 1、刪除樣例檔案
 2、對apache中web.xml進行相關設定
弱口令
測試方法
  先手工嘗試一些最基本的弱口令,如admin/admin、admin/123456、admin/888888等,如果不行,使用暴力破解工具進行暴力破解,如使用burpsuite,另外推薦一個小技巧,使用暴力破解的時候,弱口令使用2到3個常見的,然後使用者名稱使用人名拼音top500!
漏洞描述
  由於系統中存在有弱口令,導致攻擊者通過弱口令可輕鬆登入系統中,從而進行下一步的攻擊,如上傳webshell,獲取敏感資料!
  另外攻擊者利用弱口令登入網站管理後臺,可任意增刪改等操作,從而造成負面影響!
修復建議
  1、 建議強制使用者首次登入時修改預設口令,或是使用使用者自定義初始密碼的策略;
  2、 完善密碼策略,資訊保安最佳實踐的密碼策略為8位(包括)以上字元,包含數字、大小寫字母、特殊字元中的至少3種。
  3、對管理後臺進行訪問控制,修改後臺弱口令,加強口令強度並定期修改。
  4、增加驗證機制,防爆破機制,限制ip+cookie訪問次數。
明文傳輸登入口令
測試方法
  使用瀏覽器自帶的F12中的network模組就可以進行檢視,或者使用抓包工具,如sniffer、burpsuite、fiddler等!
漏洞描述
  使用者登入過程中使用明文傳輸使用者登入資訊,若使用者遭受中間人攻擊時,攻擊者可直接獲取該使用者登入賬戶,從而進行進一步滲透。
修復建議
  1、使用者登入資訊使用加密傳輸,如密碼在傳輸前使用安全的演算法加密後傳輸,可採用的演算法包括:不可逆hash演算法加鹽(4位及以上隨機數,由伺服器端產生);安全對稱加密演算法,如AES(128、192、256位),且必須保證客戶端金鑰安全,不可被破解或讀出;非對稱加密演算法,如RSA(不低於1024位)、SM2等。
  2、使用https來保證傳輸的安全。
暴力破解
測試方法
  使用截斷抓包工具進行暴力破解,如burpsuite,推薦使用2到3個弱口令,然後使用人名拼音top500加上自己實際中常用字典進行暴力破解!
漏洞描述
  由於沒有對登入頁面進行相關的防暴力破解機制,如無驗證碼、有驗證碼但驗證碼未在伺服器端校驗以及無登入錯誤次數限制等,導致攻擊者可通過暴力破解獲取使用者登入賬戶及口令,從而獲取網站登入訪問許可權!
修復建議
  1、新增驗證碼機制,加入圖片(驗證碼動態生成且滿足隨機性)或者簡訊驗證碼(驗證碼具備超時時限一般為1分鐘,且在該時限內錯誤次數超過3次則進行鎖定1分鐘後方能重新獲取驗證碼,超時後驗證碼自動失效)!
  2、驗證碼必須在伺服器端進行校驗,客戶端的一切校驗都是不安全的!
SQL注入漏洞
測試方法
  在發現有可控引數的地方使用sqlmap進行SQL注入的檢查或者利用,也可以使用其他的SQL注入工具,簡單點的可以手工測試,利用單引號、and 1=1 和 and 1=2以及字元型注入進行判斷!推薦使用burpsuit的sqlmap外掛,這樣可以很方便,滑鼠右鍵就可以將資料包直接傳送到sqlmap裡面進行檢測了!
漏洞描述
  Web程式程式碼中對於使用者提交的引數未做過濾就直接放到SQL語句中執行,導致引數中的特殊字元打破了SQL語句原有邏輯,黑客可以利用該漏洞執行任意SQL語句,如查詢資料、下載資料、寫入webshell、執行系統命令以及繞過登入限制等。
修復建議
  程式碼層最佳防禦sql漏洞方案:採用sql語句預編譯和繫結變數,是防禦sql注入的最佳方法。
  (1)所有的查詢語句都使用資料庫提供的引數化查詢介面,引數化的語句使用引數而不是將使用者輸入變數嵌入到SQL語句中。當前幾乎所有的資料庫系統都提供了引數化SQL語句執行介面,使用此介面可以非常有效的防止SQL注入攻擊。
  (2)對進入資料庫的特殊字元(’”<>&*;等)進行轉義處理,或編碼轉換。
  (3)確認每種資料的型別,比如數字型的資料就必須是數字,資料庫中的儲存欄位必須對應為int型。
  (4)資料長度應該嚴格規定,能在一定程度上防止比較長的SQL注入語句無法正確執行。
  (5)網站每個資料層的編碼統一,建議全部使用UTF-8編碼,上下層編碼不一致有可能導致一些過濾模型被繞過。
  (6)嚴格限制網站使用者的資料庫的操作許可權,給此使用者提供僅僅能夠滿足其工作的許可權,從而最大限度的減少注入攻擊對資料庫的危害。
  (7)避免網站顯示SQL錯誤資訊,比如型別錯誤、欄位不匹配等,防止攻擊者利用這些錯誤資訊進行一些判斷。
跨站指令碼攻擊(xss)漏洞
測試方法
  在可控引數的地方,使用常見的xss payload(”>)進行測試,可以使用BruteXSS-master進行快速檢查!
漏洞描述
  1、Web程式程式碼中把使用者提交的引數未做過濾或過了不嚴就直接輸出到頁面,引數中的特殊字元打破了HTML頁面的原有邏輯,黑客可以利用該漏洞執行惡意HTML/JS程式碼、構造蠕蟲傳播、篡改頁面實施釣魚攻擊、誘以及導使用者再次登入,然後獲取其登入憑證等。
  2、XSS攻擊對Web伺服器本身雖無直接危害,但是它藉助網站進行傳播,對網站使用者進行攻擊,竊取網站使用者賬號資訊等,從而也會對網站產生較嚴重的危害。XSS攻擊可導致以下危害:
  3、釣魚欺騙:最典型的就是利用目標網站的反射型跨站指令碼漏洞將目標網站重定向到釣魚網站,或者通過注入釣魚JavaScript指令碼以監控目標網站的表單輸入,甚至攻擊者基於DHTML技術發起更高階的釣魚攻擊。
  4、網站掛馬:跨站時,攻擊者利用Iframe標籤嵌入隱藏的惡意網站,將被攻擊者定向到惡意網站上、或彈出惡意網站視窗等方式,進行掛馬攻擊。
  5、身份盜用:Cookie是使用者對於特定網站的身份驗證標誌,XSS攻擊可以盜取使用者的cookie,從而利用該cookie盜取使用者對該網站的操作許可權。如果一個網站管理員使用者的cookie被竊取,將會對網站引發巨大的危害。
  6、盜取網站使用者資訊:當竊取到使用者cookie從而獲取到使用者身份時,攻擊者可以盜取到使用者對網站的操作許可權,從而檢視使用者隱私資訊。
  7、垃圾資訊傳送:在社交網站社群中,利用XSS漏洞借用被攻擊者的身份傳送大量的垃圾資訊給特定的目標群。
  8、劫持使用者Web行為:一些高階的XSS攻擊甚至可以劫持使用者的Web行為,從而監視使用者的瀏覽歷史、傳送與接收的資料等等。
  9、XSS蠕蟲:藉助XSS蠕蟲病毒還可以用來打廣告、刷流量、掛馬、惡作劇、破壞網上資料、實施DDoS攻擊等。
修復建議
  xss漏洞本質上是一種html注入,也就是將html程式碼注入到網頁中。那麼其防禦的根本就是在將使用者提交的程式碼顯示到頁面上時做好一系列的過濾與轉義
  (1)假定所有輸入都是可疑的,必須對所有輸入中的script、iframe等字樣進行嚴格的檢查。這裡的輸入不僅僅是使用者可以直接互動的輸入介面,也包括HTTP請求中的Cookie中的變數,HTTP請求頭部中的變數等。
  (2)不僅要驗證資料的型別,還要驗證其格式、長度、範圍和內容。
  (3)不要僅僅在客戶端做資料的驗證與過濾,關鍵的過濾步驟在服務端進行。
  (4)對輸出的資料也要檢查,資料庫裡的值有可能會在一個大網站的多處都有輸出,即使在輸入做了編碼等操作,在各處的輸出點時也要進行安全檢查。
目標伺服器啟用了不安全HTTP方法
測試方法
  這裡可以使用多種方法,可以使用burpsuit進行截斷將資料包發往repter,然後將對應的HTTP方法更改為OPTIONS,看響應包裡面的allow是否有不安全的方法,也可以使用curl進行檢查,命令為:curl -i -X OPTIONS URL ,-i可以換為-v,檢視更詳細的內容!
漏洞描述
  目標伺服器啟用了不安全的傳輸方法,如PUT、TRACE、DELETE、MOVE等,這些方法表示可能在伺服器上使用了 WebDAV,由於dav方法允許客戶端操縱伺服器上的檔案,如上傳、修改、刪除相關檔案等危險操作,如果沒有合理配置dav,有可能允許未授權的使用者對其進行利用,修改伺服器上的檔案。
修復建議
  1、關閉不安全的傳輸方法,推薦只使用POST、GET方法!
  2、如果伺服器不需要支援 WebDAV,請務必禁用它。
或者為允許webdav的目錄配置嚴格的訪問許可權,如認證方法,認證需要的使用者名稱,密碼。
任意檔案上傳
測試方法
  在檔案上傳的地方,進行上傳任意字尾檔案看能否上傳,可以使用多種檔案上傳及解析漏洞利用的技巧進行上傳(參考連結),還可以通過觀察上傳正常檔案確認是否有二次上傳漏洞!
漏洞描述
  檔案上傳漏洞通常由於網頁程式碼中的檔案上傳路徑變數過濾不嚴或webserver相關解析漏洞未修復而造成的,如果檔案上傳功能實現程式碼沒有嚴格限制使用者上傳的檔案字尾以及檔案型別,攻擊者可通過 Web 訪問的目錄上傳任意檔案,包括網站後門檔案(webshell),進而遠端控制網站伺服器。
  攻擊者可通過此漏洞上傳惡意指令碼檔案,對伺服器的正常執行造成安全威脅!
修復建議
  1、對上傳檔案型別進行限制,並且不能只做前端的限制,而要前端和後端一起限制,後端可以進行副檔名檢測,重新命名檔案,MIME型別檢測以及限制上傳檔案的大小,或是將上傳的檔案放在安全的路徑下,儘量放於web server之外的遠端伺服器等。
  2、嚴格限制和校驗上傳的檔案,禁止上傳惡意程式碼的檔案。同時限制相關目錄的執行許可權,防範webshell攻擊。
  3、對上傳檔案格式進行嚴格校驗及安全掃描,防止上傳惡意指令碼檔案;
  4、設定許可權限制,禁止上傳目錄的執行許可權;
  5、嚴格限制可上傳的檔案型別;
  6、嚴格限制上傳的檔案路徑。
  7、副檔名服務端白名單校驗。
  8、檔案內容服務端校驗。
  9、上傳檔案重新命名。
  10、隱藏上傳檔案路徑。
測試頁面洩漏在外網
測試方法
  這裡可以使用後臺目錄掃描工具進行目錄掃描,如御劍、test404、M7lrv後臺掃描工具、Pker等!
漏洞描述
  一些測試頁面洩漏到外網,導致外界誤傳公司被黑客入侵,影響公司聲譽。
修復建議
  刪除測試頁面以及無用檔案,例如test.cgi,phpinfo.php,info.pho, .svn/entries等。
目錄瀏覽
測試方法
  如果連結是多級目錄,那麼逐級刪除目錄進行檢視,如果連結不是多級目錄,可以通過檢視圖片屬性,然後逐級刪除目錄進行檢視,這裡可以使用F12進行檢視資原始檔,如圖片路徑、js路徑等,然後逐級刪除目錄進行確認!
漏洞描述
  由於伺服器端配置不當,開啟了目錄瀏覽,黑客可獲得伺服器上的檔案目錄結構,從而下載敏感檔案。
修復建議
  1.通過修改配置檔案,去除中介軟體(如IIS、apache、tomcat)的檔案目錄索引功能
  2.設定目錄許可權
  3.在每個目錄下建立一個空的index.html頁面。
phpinfo資訊洩漏
測試方法
  直接在根目錄中輸入phpinfo.php進行訪問,如果檔案更名了,我們可以使用目錄掃描工具進行判斷!
漏洞描述
  Web站點的某些測試頁面可能會使用到PHP的phpinfo()函式,會輸出伺服器的關鍵資訊,從而造成資訊洩露,通過獲取的資訊可進行下一步的攻擊計劃!
修復建議
  刪除該PHP檔案!
未授權訪問
測試方法
  如果你懷疑那個頁面或者那個連結存在未授權訪問,你可以將該連結在另一個瀏覽器中開啟,看是否能正常訪問!
漏洞描述
  由於沒有對相關敏感頁面進行訪問許可權的檢查,導致攻擊者可未授權訪問,從而獲取敏感資訊及進行未授權操作等!
修復建議
  對相關頁面進行嚴格的訪問許可權的控制以及對訪問角色進行許可權檢查!
越權訪問
測試方法
  這裡主要是通過更改敏感引數進行判斷,若你訪問你自己的個人資訊時,連結中某一個引數就是你的登入名或者一個ID,此時就可以通過修改該引數進行簡單判斷!參考連結
漏洞描述
  由於沒有對使用者訪問角色的許可權進行嚴格的檢查及限制,導致當前賬號可對其他賬號進行相關操作,如檢視、修改等!
修復建議
  對使用者訪問角色的許可權進行嚴格的檢查及限制!
命令執行漏洞
漏洞描述
  命令執行漏洞是指程式碼未對使用者可控引數做過濾,導致直接帶入執行命令的程式碼中,對惡意構造的語句,可被用來執行任意命令。黑客可在伺服器上執行任意命令,寫入後門,從而入侵伺服器,獲取伺服器的管理員許可權,危害巨大。
修復建議
  嚴格過濾使用者輸入的資料,禁止執行非預期系統命令!
應用程式錯誤資訊洩露
漏洞描述
  黑客可通過特殊的攻擊向量,使web伺服器出現500、404等相關錯誤,導致資訊洩漏如絕對路徑、webserver版本、原始碼、sql語句等敏感資訊,惡意攻擊者很有可能利用這些資訊實施進一步的攻擊。
修復建議
  1、自定義錯誤頁面或歸一化錯誤頁面資訊提示!
  2、修正程式碼!
LDAP注入
漏洞描述
  由於Web 應用程式沒有對使用者提供的輸入進行適當過濾和檢查,攻擊者便有可能修改LDAP 語句的結構,並且以(例如:資料庫伺服器、Web 應用程式伺服器、Web 伺服器)的許可權執行任意命令,許可權可能會允許查詢、修改或除去 LDAP 樹狀構造內任何資料。
修復建議
  對使用者的輸入進行嚴格的過濾及檢查,並且對型別也進行檢查!
檔案包含漏洞
漏洞描述
  本地檔案包含是指程式程式碼在處理包含檔案的時候沒有嚴格控制。利用這個漏洞,攻擊者可以先把上傳的靜態檔案,或網站日誌檔案作為程式碼執行,或者包含遠端伺服器上的惡意檔案,進而獲取到伺服器許可權。
修復建議
  1、嚴格檢查變數是否已經初始化。
  2、對所有輸入提交可能包含的檔案地址,包括伺服器本地檔案及遠端檔案,進行嚴格的檢查,引數中不允許出現../之類的目錄跳轉符。
  3、嚴格檢查include類的檔案包含函式中的引數是否外界可控。
  4、不要僅僅在客戶端做資料的驗證與過濾,關鍵的過濾步驟在服務端進行。
網站敏感壓縮檔案洩露
漏洞描述
  誤將網站備份檔案或是敏感資訊檔案存放在某個網站目錄下,外部黑客可通過暴力破解檔名等方法下載該備份檔案,導致網站敏感資訊洩露。
修復建議
  1、不要在網站目錄下存放網站備份檔案或敏感資訊的檔案。
  2、如需存放該類檔案,請將檔名命名為難以猜解的字串。
CRLF HTTP 頭部注入漏洞
漏洞描述
  CRLF 是“回車 + 換行”(\r\n)的簡稱。在 HTTP 協議中,HTTP Header 與 HTTP Body 是用兩個 CRLF 符號進行分隔的,瀏覽器根據這兩個 CRLF 符號來獲取 HTTP 內容並顯示。因此,一旦攻擊者能夠控制 HTTP 訊息頭中的字元,注入一些惡意的換行,就能注入一些會話 Cookie 或者 HTML 程式碼。
修復建議
  過濾 \r 、\n 之類的換行符,避免輸入的資料汙染到其他 HTTP 訊息頭。
URL 跳轉漏洞
漏洞描述
  Web 程式直接跳轉到引數中的 URL ,或頁面引入任意的開發者 URL,被攻擊者利用可實施釣魚攻擊等操作 。
修復建議
  在控制頁面轉向的地方校驗傳入的URL是否為可信域名。
Crossdomain.xml 配置不當
漏洞描述
  網站根目錄下的 crossdomain.xml 檔案指明瞭遠端 Flash 是否可以載入當前網站的資源(圖片、網頁內容、Flash等)。如果配置不當,可能導致遭受跨站請求偽造(CSRF)攻擊。
修復建議
  對於不需要從外部載入資源的網站,在 crossdomain.xml 檔案中更改allow-access-from的domain屬性為域名白名單。
敏感資訊洩露
漏洞描述
  在頁面中或者返回的響應包中洩露了敏感資訊,通過這些資訊,攻擊者可進一步滲透。
修復建議
  1、如果是探針或測試頁面等無用的程式建議刪除,或者修改不易被猜到的名字。
  2、禁用洩露敏感資訊的頁面或應用。
  3、對相關敏感資訊進行模糊化處理,在伺服器端進行!
  4、對伺服器端返回的資料進行嚴格的檢查,滿足查詢資料與頁面顯示資料一致,切勿返回多於的資料!
任意檔案下載
漏洞描述
  檔案下載處由於未對下載路徑進行過濾,利用路徑回溯符../跳出程式本身的限制目錄實現來下載任意檔案,如下載系統密碼檔案等!
修復建議
  對下載路徑進行過濾,如下載前對傳入的引數進行過濾,並且對下載檔案型別進行檢查,是否是允許下載的型別,另外禁止使用回溯符../ !
weblogic SSRF伺服器請求偽造
漏洞描述
  目標存在weblogic SSRF伺服器請求偽造漏洞。WebLogic是用於開發、整合、部署和管理大型分散式Web應用、網路應用和資料庫應用的Java應用伺服器。SSRF(Server-Side Request Forgery:伺服器端請求偽造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統。(正是因為它是由服務端發起的,所以它能夠請求到與它相連而與外網隔離的內部系統)。Weblogic中介軟體預設帶有“UDDI 目錄瀏覽器”且為未授權訪問,通過該應用,可進行無回顯的SSRF請求。攻擊者可利用該漏洞對企業內網進行大規模掃描,瞭解內網結構,並可能結合內網漏洞直接獲取伺服器許可權。
修復建議
  1.刪除uddiexplorer資料夾
  2.限制uddiexplorer應用只能內網訪問
目標站點存在網馬
漏洞描述
  經滲透測試發現目標站點存在有webshell,攻擊者可進行遠端連線操作,進行惡意操作!
修復建議
  刪除可疑檔案,並進行本地檔案漏洞掃描排查是否還存在有其他木馬!
  使用相關手段發現並及時修復已存在的漏洞!
IIS短檔名洩露漏洞
漏洞描述
  Internet Information Services(IIS,網際網路資訊服務)是由微軟公司提供的基於執行Microsoft Windows的網際網路基本服務。 Microsoft IIS在實現上存在檔案列舉漏洞,攻擊者可利用此漏洞列舉網路伺服器根目錄中的檔案。 危害:攻擊者可以利用“~”字元猜解或遍歷伺服器中的檔名,或對IIS伺服器中的.Net Framework進行拒絕服務攻擊。
  黑客可通過該漏洞嘗試獲取網站伺服器下存放檔案的檔名,達到獲取更多資訊來入侵伺服器的目的。
修復建議
  修改Windows配置,關閉短檔名功能。
  1.關閉NTFS 8.3檔案格式的支援。該功能預設是開啟的,對於大多數使用者來說無需開啟。
  2.如果是虛擬主機空間使用者,可採用以下修復方案:
    1)修改註冊列表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation的值為1(此修改只能禁止NTFS8.3格式檔名建立,已經存在的檔案的短檔名無法移除)。
    2)如果你的web環境不需要asp.net的支援你可以進入Internet 資訊服務(IIS)管理器 — Web 服務擴充套件 - ASP.NET 選擇禁止此功能。
    3)升級net framework 至4.0以上版本。
  3.將web資料夾的內容拷貝到另一個位置,比如D:\www到D:\www.back,然後刪除原資料夾D:\www,再重新命名D:\www.back到D:\www。如果不重新複製,已經存在的短檔名則是不會消失的。
Apache Struts2 遠端程式碼執行漏洞(S2-019)
漏洞描述
  Apache Struts2的“Dynamic Method Invocation”機制是預設開啟的,僅提醒使用者如果可能的情況下關閉此機制,如果未關閉此機制將導致遠端程式碼執行漏洞,遠端攻擊者可利用此漏洞在受影響應用上下文中執行任意程式碼。
修復建議
  1、目前廠商已經發布了升級補丁以修復這個安全問題,請到廠商的主頁下載!
  2、或者手工設定struts.xml檔案
Apache Struts2 遠端程式碼執行漏洞(S2-037)
漏洞描述
  Apache Struts2在使用REST外掛時,攻擊者可以繞過動態方法執行的限制,呼叫惡意表示式執行遠端程式碼。
修復建議
  建議使用者到官方獲取最新補丁或者最新版本程式!
Apache Struts2 DevMode 遠端程式碼執行漏洞
漏洞描述
  為了便於開發人員除錯程式,Struts2提供了一個devMode模式,可以方便檢視程式錯誤以及日誌等資訊。 當Struts2中的devMode模式設定為true時,存在嚴重遠端程式碼執行漏洞。如果WebService 啟動許可權為最高許可權時,可遠端執行任意命令,包括關機、建立新使用者、以及刪除伺服器上所有檔案等等。
修復建議
  建議使用者到官方獲取最新補丁或者最新版本程式!
  或者將struts.properties中的devMode設定為false,或是在struts.xml中新增如下程式碼:。
Apache Struts2 遠端程式碼執行漏洞(S2-045)
漏洞描述
  Apache Struts2的Jakarta Multipart parser外掛存在遠端程式碼執行漏洞,漏洞編號為CVE-2017-5638。攻擊者可以在使用該外掛上傳檔案時,修改HTTP請求頭中的Content-Type值來觸發該漏洞,導致遠端執行程式碼。
修復建議
  檢測方式檢視web目錄下/WEB-INF/lib/目錄下的struts-core.x.x.jar ,如果這個版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之間則存在漏洞!
  1、建議使用者到官方獲取最新補丁或者最新版本程式!
  2、更新至Strusts2.3.32或者Strusts2.5.10.1,或使用第三方的防護裝置進行防護。
  3、臨時解決方案:刪除commons-fileupload-x.x.x.jar檔案(會造成上傳功能不可用)。
  4、修改WEB-INF/classes目錄下的配置
在WEB-INF/classes目錄下的struts.xml中的struts 標籤下新增