目前主流應用開發平臺J2EE的Apache Struts2框架存在可執行遠程代碼的嚴重漏洞,Struts2官方已經確認該漏洞(漏洞編號S2-045),并定級為高危漏洞。
一、Struts2漏洞描述
(一)漏洞信息。此次Struts2漏洞是基于Jakarta plugin插件的Struts遠程代碼執行漏洞,該漏洞可造成RCE遠程代碼執行,漏洞利用無任何限制條件,且可繞過絕大多數的防護設備的通用防護策略,惡意用戶可在上傳文件時通過修改HTTP請求中的Content-Type值來觸發該漏洞,從而執行系統命令,造成系統被遠程控制,導致數據泄露、網頁篡改、后門植入、成為肉雞等后果。
(二)影響范圍。由于此前Struts2曾發現編號為S2-016的安全漏洞,國內外絕大多數網站現已更新S2-016漏洞補丁,而本次漏洞在S2-016補丁后的版本均會受到影響,具體受影響的軟件版本為Struts 2.3.5 - Struts2.3.31以及Struts 2.5 - Struts 2.5.10。
(三)檢測方法。一是查看web目錄/WEB-INF/lib/下的struts-core.x.x.jar版本信息,如果版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之間則存在漏洞隱患;二是第三方掃描檢測方式,使用webscan等具有網站深度爬行功能的檢測軟件,進行專項深度漏洞掃描。(不可使用在線一鍵式檢查小工具)
(四)修復方法。一是刪除commons-fileupload-x.x.x.jar文件(可能導致網站的上傳功能或其他應用無法正常使用)或更新Struts2版本至Struts 2.3.32、Struts 2.5.10.1;二是部署專業的WAF、APT等安全產品并確保規則庫已經升級到最新版本。