修復Strtus遠程命令執行漏洞 : Strtus 2.2.3 升級到 Strtus 2.3.24

最近用JAVA開發了一個動漫網站 ( www.dmvcd.com , 純興趣), 歷經半個多月, 網站算是基本開發完了. 因爲錢包的紅牛數量有限, 租了個比較便宜的主機大笑. 內存只有2G, 怕程序會掛掉, 於是自己寫了個 monitor 監控程序, 可以自動檢測和重啓網站, 還會發email通知. 

最後用了百度的雲觀測(功能強大, 包括監控網站的功能, 缺點是不能自動重啓網站, 呵呵). 問題來了, 剛用了雲觀測沒多久, 就收到了百度的郵件通知和短信通知, 告知網站存在 strtus 漏洞, 危害就是 被******,引起 數據庫泄露網站被篡改等. 我用百度的測試URL來測試, 發現確實會導致網站發生異常, 甚至掛掉. 

好吧, 既然度娘都提醒有漏洞, 那就修復吧(有BUG必修是我們程序猿的天性, 呵呵). 網站之前用的strtus版本是2.2.3, 度娘說在2013年6月底, apache發佈的

Struts 2.3.15版本被曝出存在重要的安全漏洞, 需要升級到最新版本或是打補丁.

下圖是網站strtus升級之前,用到的部分jar包:

strtus2.2.3依賴jar包

直接升級到最新的2.3.24版本, 更新後的部分jar包如下:

strtus2.3.24依賴jar包

Strtus2.3.24最新jar包下載地址:  http://mirrors.cnnic.cn/apache//struts/2.3.24/struts-2.3.24-lib.zip

[注意] 有個問題要注意: 從strtus官網上下載的jar不能全部導入到 WEB-INF的lib下, 會出現各種問題(終究是些jar衝突, 或是版本兼容的問題), 所以升級自己需要的jar包就可以了.

jar更新完之後, 網站在用DMI動態調用Action的方法的時候, 出現404錯誤(提示 could not find action or result異常). 好吧, 繼續問度娘. 度娘說strtus 2.3.15 

版本後, 默認是關閉DMI動態調用action 方法這個功能的.

知道問題就好辦, 直接在strtus配置文件裏配置一下, 開啓這個功能就可以了. 在struts.xml中, 增加了下面的配置:

<constant name="struts.enable.DynamicMethodInvocation" value="true" />

再測試一下, 問題解決. 這裏要提示一下: strtus官方推薦使用通配符的方式來配置, 而不是 action!methodName 的方式來調用.

[ strtus升級小結 ]:
1. strtus.xml 中版本的聲明需要修改爲:

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">

2. 僅升級自己需要的jar包.

3. 開啓動態DMI調用Action的方法, 在strtus.xml中 增加 <constant name="struts.enable.DynamicMethodInvocation" value="true" />

PS :

如果各位兄弟發現我的小網站有什麼漏洞或不足, 可以留言給我, 我繼續完善它, 哈哈...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章