1. 程式人生 > >Struts2-045漏洞處理時遇到的坑(升級Struts2.5需要特別注意的配置)

Struts2-045漏洞處理時遇到的坑(升級Struts2.5需要特別注意的配置)

最近公司的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>這個標籤之上

注:如有什麼侵權的,請回復,馬上刪除