Struts2-045漏洞處理時遇到的坑(升級Struts2.5需要特別注意的配置)
阿新 • • 發佈:2019-02-05
最近公司的ssh搭建老專案出現了問題,被人抓到了漏洞獲取了許可權,幸好是名白客沒有進行大肆破壞,找到原因是Struts2框架在之前就爆出的045漏洞,分享出自己在解決時遇到的坑。
關於檢測Struts2漏洞的方法:
關於045漏洞的危害:
幾乎無條件,所有url都會被此漏洞利用,哪怕你沒有使用上傳功能
關於045漏洞原因分析:
關於045漏洞涉及的版本:
2.3-2.5,也就是說2.5.10以上都是安全版本,我們專案中使用的是2.3.28.1,所以被抓到了漏洞
解決方案:
重點來了,簡單來說,就是升級到Struts2的jar包為安全版本,我這裡使用的是官網最新版本2.5.14.1
遇到的坑:
主要是關於Struts 2.3升級為2.5時需要的配置,2.5有幾個配置需要特別注意
1、Struts 2.5 所需必要jar包
2、web.xml的核心過濾器的修改
將核心攔截器
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
更改為(少了一個.ng的路徑)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
3、struts.xml的頭部DTD約束脩改
更改為2.5的約束,不然無法使用<global-allowed-methods>標籤
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
4、struts.xml裡新增動態方法允許範圍
新增標籤
<global-allowed-methods>regex:.*</global-allowed-methods>
這裡注意這個標籤在<package>標籤的順序,Sturuts的配置檔案裡要嚴格按照順序來寫
一般是在 <global-exception-mappings>這個標籤之上
注:如有什麼侵權的,請回復,馬上刪除