1. 概述
Apache軟體基金會(ASF)贊助的開源專案是Struts。該項目最初是Jakarta項目的分支,隨後被提升為ASF的頂級項目。它透過採用Java Servlet/JSP技術,實現了基於Java EE Web應用的Model-View-Controller〔MVC〕設計模式的應用框架〔Web Framework〕,是MVC經典設計模式中的一個經典產品。
在Java EE的Web應用發展的初期,除了使用Servlet技術以外,普遍是在JavaServer Pages(JSP)的原始碼中,採用HTML與Java程式碼混合的方式進行開發。這兩種方法在混合表現與業務邏輯程式碼方面不可避免,為前期開發和後期維護帶來了巨大的複雜度。為了擺脫上述的約束與限制,把業務邏輯代碼從表現層中清晰的分離出來,2000年,Craig McClanahan採用了MVC的設計模式開發Struts。該框架產品曾經被視為最廣泛和最流行的JAVA WEB應用框架
Struts2是一個基於MVC設計模式的Web應用框架,它本質上相當於一個servlet,在MVC設計模式中, Struts2作為控制器(Controller)來建立模型與視圖的資料互動。 Struts 2是Struts的下一代產品,是在struts 1和WebWork的技術基礎上進行了合併的全新的Struts 2框架
隨著Struts2框架的普及,越來越多的企業單位使用Struts2框架進行開發,近年來多次爆出高危險漏洞,多個政府站點,銀行、大型網路公司等單位,受到影響,例如:2016年12月爆出京東12G 用戶資料洩露,其中包括使用者名稱、密碼、信箱、QQ、電話號碼、身分證等多個維度,資料多達數千萬條,究其原因源自於2013 年Struts 2 的安全漏洞問題。當時國內幾乎所有網路公司及大量銀行、政府機構都受到了影響,導致大量資料洩露,而每次struts2爆出漏洞後各大網路漏洞平台也接收到多個回饋如:
Struts2的程式碼執行問題最早要追溯到2010年,當時來自Google安全Team的Meder Kydyraliev發現可以透過用unicde編碼的形式繞過參數攔截器對特殊字符「#」的過濾,造成程式碼執行問題,官方漏洞編號S2-003,
回顧struts2的漏洞歷史,我們發現官方難辭其咎,首先,開發人員安全意識不強,雖然採取了基本的安全措施,但是要形同虛設。其次,我們覺得官方的修復措施缺乏力度,似乎只是敷衍了事,而未能真正解決問題的根源。再就是,官方的開放精神確實很震撼,竟然直接將漏洞的PoC掛在官網,這樣給了很多人進一步研究漏洞利用的機會,這個也是導致問題更加嚴重的一個原因。
影響比較大,利用比較廣泛的struts2漏洞:
CVE-2010-1870XWork ParameterInterceptors bypass allows OGNLstatement execution
CVE-2012-0392struts2 DevMod Remote Command Execution Vulnerability
CVE-2011-3923Struts
CVE-2013-1966Struts2 <d includes 屬性.遠端指令執行漏洞
CVE-2013-2251Struts2
Struts2
Struts2
CNVD-2016-02506,CVE-2016-3081,受影響版本Struts 2.3.20 - StrutsStruts 2.3. .20.3和2.3.24.3除外)
CVE編號:CVE-2016-4438 Struts(S2-037)遠端程式碼執行漏洞,受影響版本:Struts 2.3.20 - Struts Struts 2.3.28.1
CVE-2017-5638 受影響版本:Struts 2.3.5 – Struts 2.3.31
Struts 2.5 –Struts 2.5.10
其他具體可參考struts2官網提供的漏洞歷史:
https://cwiki.apache.org/confluence/display/WW/Security Bulletins
特定表格資料:
#序號 | 行業類型 | 數量 | #百分比 |
#1 | |||
447 | 28.29% | 2 | |
2 | 教育機構 | 155 | |
3 | ##9.80% | ||
金融業 | ##1106.96% | ##110 | 6.96% |
#4 | 保險業 | 28 | 1.77% |
5 | 證券業 | 14 | 0.88% |
能源產業
8
93 | 5.88% | |
---|---|---|
8 | 電信業者 | |
7.21% | 9 | |
398 | 25.18% | |
其他企業 | #213 | 13.48 % |
從上圖可以看出位於前三名(註:不計其他企業)的是政府部門(佔28.29%)、網路企業(25.18%) 、教育機構(9.8%) | 我們針對採集到的使用Struts2中間件站點進行漏洞檢測,本次使用互聯網上影響比較大的幾個高危險漏洞進行驗證,檢測漏洞(S2-045、 S2-037、S2-032、S2-016)的存在修復個加固情況,經過對1580個站點樣本進行檢測,發現仍有部分站點Struts2漏洞並未修復,對檢測出漏洞的站點統計資料如下圖: |
序號
行業
##存在漏洞數量1政府部門3############2#######教育機構######2############3######金融業#####1############4 ######網路企業######2############5######其他#######2################# #######檢測中我們發現有很多網站Stuts2之前的舊漏洞尚未進行過修復,從而在Stuts2漏洞的中,將網站註冊用戶赤裸裸地暴露在黑客攻擊槍口面前。 ######4. 安全建議######隨著情勢日益複雜化,資訊安全已變成不只涉及科技的問題。科技的發展是一把雙面刃,其能造福人類,亦能產生破壞性的功效。而這一點,除了科技本身之外,或許更多的要從我們的意識層面去把握,面對漏洞帶來如此之大的影響,足以給互聯網業界資訊安全從業人員帶來警醒:資訊安全的警鐘,應時刻長鳴。 ######1、我們在資訊系統開發中應養成良好的開發習慣,多數漏洞從開發階段就存在,而由於開發過程中的疏忽,邏輯漏洞等也會為系統帶來很大的安全風險。 ######2、網站資料及時備份,當系統遭到攻擊時,可以第一時間對被攻擊系統進行恢復。 ######3、對後台服務安裝防毒軟體,定時對伺服器進行病毒查殺,等安全檢查。 ######4、即時留意最新的網路漏洞狀況,及時修補資訊系統存在的漏洞。 ######5、經常性的對系統進行滲透測試,漏洞測試等工作,及時發現問題,及時修復,防止漏洞暴露在互聯網上。 ######6、對不在使用的系統進行及時下線,一般舊系統中存在更多的安全問題,管理不善可能會洩露大量敏感資訊。 ###
以上是Struts2框架站點風險的範例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!