漏洞概況
影響版本:Struts 2.0.0 - 2.3.15 全版本
漏洞類型:遠程代碼執行 (RCE)
嚴重級別:高危 (CVSS 10.0)
發布時間:2017 年 3 月
攻擊向量
攻擊者構造惡意 Content-Type、Content-Disposition 或 Content-Length HTTP 頭,利用 Jakarta Multipart 解析器的 OGNL 表達式注入漏洞,執行任意 Java 代碼,導致:
- 服務器完全控制權獲取
- 數據庫敏感數據竊取
- 網頁掛馬、勒索軟件植入
- 內網橫向滲透跳板
官方修復版本
Struts 2.3.15.1 (含修復補丁)
下載地址:Apache Struts 官方下載頁
緊急修復方案(按優先級)
- 升級框架:立即升級至 2.3.15.1 或更高版本(2.5.x 系列)
- 替換解析器:若暫時無法升級,在
struts.xml 強制使用 Jakarta Stream 解析器:
<constant name="struts.multipart.parser" value="jakarta-stream" />
- WAF 規則防護:部署 Web 應用防火牆攔截包含 OGNL 特徵的惡意請求(如
#cmd=、@java.lang.Runtime@)
- 禁用文件上傳:業務允許時暫時關閉文件上傳功能
自查清單
- [ ] 梳理所有 Java Web 專案,識別使用 Struts 2 的應用
- [ ] 確認版本號是否在受影響範圍內
- [ ] 檢查是否使用 Jakarta Multipart 解析器(默認啟用)
- [ ] 部署應急防護規則,監控異常流量
- [ ] 制定升級計劃,測試驗證兼容性
- [ ] 完成升級並驗證漏洞修復
長期建議
- 建立組件漏洞監控機制(如 OWASP Dependency-Check、Snyk)
- 納入 CI/CD 流程自動掃描第三方依賴漏洞
- 考慮遷移至現代框架(Spring Boot、Micronaut、Quarkus)
- 定期進行滲透測試與代碼審計
安全無小事,升級刻不容緩!