Struts2 S2-016漏洞修復(fù)總結(jié)
發(fā)布時(shí)間:2016-08-20 09:09:43 作者:佚名
我要評(píng)論

這篇文章主要介紹了Struts2 S2-016漏洞修復(fù)總結(jié),需要的朋友可以參考下
Struts2的S2-016漏洞是之前比較重大的漏洞,也是一些老系統(tǒng)的歷史遺留問題
此漏洞影響struts2.0-struts2.3的所有版本,可直接導(dǎo)致服務(wù)器被遠(yuǎn)程控制從而引起數(shù)據(jù)泄漏,影響巨大
漏洞修復(fù)總結(jié)有4種方式:
1、升級(jí)版本
這也是Apache官方給出的建議,把Struts2的版本升級(jí)到2.3.15以上的版本,這種方式只需要替換一些jar包,歸納如下:
commons-lang3-3.2.jar
freemarker-2.3.22.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-core-2.3.24.jar
struts2-spring-plugin-2.3.24.jar
xwork-core-2.3.24.jar
只需要用上述jar包(版本可能會(huì)有差距)替換老系統(tǒng)中的舊版本jar包;
但是這種方式存在一定的缺陷,如果系統(tǒng)非常復(fù)雜,可能會(huì)有版本不兼容,jar版本沖突,導(dǎo)致系統(tǒng)功能不能 使用的情況;
2、覆蓋JAR包

下載上述圖片,把后綴名改為zip,把里面解壓出來的三個(gè)文件夾添加到漏洞的系統(tǒng)的src目錄下
然后再web.xml文件中添加代碼:
<listener>
<listener-class>org.hdht.commonweb.listener.MyServletContextListener</listener-class>
</listener>
最后發(fā)布項(xiàng)目,重啟服務(wù)器
3、修改Struts2的源碼
找到項(xiàng)目中的struts2-core-2.2.3.jar,反編譯得到源碼,在eclipse中新建一個(gè)java項(xiàng)目,把反編譯的源碼導(dǎo)進(jìn)去
修改org\apache\struts2\dispatcher\mapper\DefaultActionMapper.java這個(gè)文件中的handleSpecialParameters方法
在while循環(huán)(for循環(huán))中加入下面代碼:
if (key.endsWith(".x") || key.endsWith(".y")) {
key = key.substring(0, key.length() - 2);
}
保存,這個(gè)新項(xiàng)目可能會(huì)有錯(cuò)誤,需要導(dǎo)入兩個(gè)jar包,xwork-core-2.1.6.jar和servlet-api.jar
把這個(gè)新項(xiàng)目導(dǎo)出成jar包,把下圖中的7個(gè)類,替換掉原先struts2-core-2.2.3.jar中的7個(gè)類

4、結(jié)合上面的第2和第3種方式
還是需要用到struts2的源碼,同第3步,反編譯得到源碼,導(dǎo)入到一個(gè)新的項(xiàng)目中
下載第2步中的壓縮包,解壓之后得到三個(gè)文件,把這三個(gè)文件夾添加到新項(xiàng)目的 org\apache\struts2\dispatcher\mapper包中,如下圖

然后,再修改org\apache\struts2\dispatcher\mapper\DefaultActionMapper.java這個(gè)文件中的handleSpecialParameters方法
在while循環(huán)中加入如下代碼:
if (JavaEEbugRepair.repair_s2_017(key)) {
return;
}
if ((key.contains("action:")) || (key.contains("redirect:")) || (key.contains("redirectAction:"))) {
return;
}
保存,把新項(xiàng)目導(dǎo)出成jar包
把原來jar中的7個(gè)類替換,加入新包repair,再把替換之后的jar復(fù)制到項(xiàng)目中,替換之前的jar包
總結(jié):
以上4種方式基本能處理所有項(xiàng)目的S2-016漏洞;
此漏洞影響struts2.0-struts2.3的所有版本,可直接導(dǎo)致服務(wù)器被遠(yuǎn)程控制從而引起數(shù)據(jù)泄漏,影響巨大
漏洞修復(fù)總結(jié)有4種方式:
1、升級(jí)版本
這也是Apache官方給出的建議,把Struts2的版本升級(jí)到2.3.15以上的版本,這種方式只需要替換一些jar包,歸納如下:
commons-lang3-3.2.jar
freemarker-2.3.22.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-core-2.3.24.jar
struts2-spring-plugin-2.3.24.jar
xwork-core-2.3.24.jar
只需要用上述jar包(版本可能會(huì)有差距)替換老系統(tǒng)中的舊版本jar包;
但是這種方式存在一定的缺陷,如果系統(tǒng)非常復(fù)雜,可能會(huì)有版本不兼容,jar版本沖突,導(dǎo)致系統(tǒng)功能不能 使用的情況;
2、覆蓋JAR包

下載上述圖片,把后綴名改為zip,把里面解壓出來的三個(gè)文件夾添加到漏洞的系統(tǒng)的src目錄下
然后再web.xml文件中添加代碼:
復(fù)制代碼
代碼如下:<listener>
<listener-class>org.hdht.commonweb.listener.MyServletContextListener</listener-class>
</listener>
最后發(fā)布項(xiàng)目,重啟服務(wù)器
3、修改Struts2的源碼
找到項(xiàng)目中的struts2-core-2.2.3.jar,反編譯得到源碼,在eclipse中新建一個(gè)java項(xiàng)目,把反編譯的源碼導(dǎo)進(jìn)去
修改org\apache\struts2\dispatcher\mapper\DefaultActionMapper.java這個(gè)文件中的handleSpecialParameters方法
在while循環(huán)(for循環(huán))中加入下面代碼:
復(fù)制代碼
代碼如下:if (key.endsWith(".x") || key.endsWith(".y")) {
key = key.substring(0, key.length() - 2);
}
保存,這個(gè)新項(xiàng)目可能會(huì)有錯(cuò)誤,需要導(dǎo)入兩個(gè)jar包,xwork-core-2.1.6.jar和servlet-api.jar
把這個(gè)新項(xiàng)目導(dǎo)出成jar包,把下圖中的7個(gè)類,替換掉原先struts2-core-2.2.3.jar中的7個(gè)類

4、結(jié)合上面的第2和第3種方式
還是需要用到struts2的源碼,同第3步,反編譯得到源碼,導(dǎo)入到一個(gè)新的項(xiàng)目中
下載第2步中的壓縮包,解壓之后得到三個(gè)文件,把這三個(gè)文件夾添加到新項(xiàng)目的 org\apache\struts2\dispatcher\mapper包中,如下圖

然后,再修改org\apache\struts2\dispatcher\mapper\DefaultActionMapper.java這個(gè)文件中的handleSpecialParameters方法
在while循環(huán)中加入如下代碼:
復(fù)制代碼
代碼如下:if (JavaEEbugRepair.repair_s2_017(key)) {
return;
}
if ((key.contains("action:")) || (key.contains("redirect:")) || (key.contains("redirectAction:"))) {
return;
}
保存,把新項(xiàng)目導(dǎo)出成jar包
把原來jar中的7個(gè)類替換,加入新包repair,再把替換之后的jar復(fù)制到項(xiàng)目中,替換之前的jar包
總結(jié):
以上4種方式基本能處理所有項(xiàng)目的S2-016漏洞;
相關(guān)文章
- 今天我要講的是:如何成為一名真正的優(yōu)秀的道德黑客?不管是新手還是老手,有興趣的朋友們都可以看一看2023-07-03
- 這篇文章主要介紹了白帽黑客、灰帽黑客、黑帽黑客三者的區(qū)別介紹,需要的朋友可以參考下2023-07-03
什么是DDoS攻擊?CC攻擊?cc攻擊與ddos攻擊區(qū)別小結(jié)
CC和DDoS都是我們最長(zhǎng)聽到的黑客攻擊手段,那么它們有什么區(qū)別呢?CC攻擊會(huì)造成什么后果呢?也可通過這篇文章了解更多的CC攻擊知識(shí):什么是CC攻擊?怎么防御CC攻擊?誰的威2023-07-03- 這篇文章主要介紹了Struts2 S2-016漏洞修復(fù)總結(jié),需要的朋友可以參考下2016-08-20
- Struts2是apache項(xiàng)目下的一個(gè)web 框架,普遍應(yīng)用于阿里巴巴、京東等互聯(lián)網(wǎng)、政府、企業(yè)門戶網(wǎng)站2016-08-20
烏云漏洞平臺(tái)被連鍋端?互聯(lián)網(wǎng)安全缺失的到底是什么
還記得我們之前說過的有個(gè)白帽子提交了世紀(jì)佳緣的漏洞然后被世紀(jì)佳緣告了的事情嗎?這件事情引起了國內(nèi)很多白帽黑帽的關(guān)注,如今事情又發(fā)酵,中國最大的兩大漏洞平臺(tái)——烏2016-07-20- 未來的互聯(lián)網(wǎng)最重要的不是速度,不是容量,而是安全。黑客這個(gè)詞很多人已經(jīng)耳熟能詳,雖然他們是一群神秘的人,但不能判斷他們是不是好人,越厲害的往往威脅越大。其實(shí)有一2016-07-15
支付寶花唄套現(xiàn)隱患多多 騙子已經(jīng)形成產(chǎn)業(yè)鏈
支付寶花唄是支付寶提供的第三方信用平臺(tái),根據(jù)你的消費(fèi)購物信用給你透支額度,給很多不想辦信用卡的人帶來了很多方便,但是,最近出現(xiàn)的利用花唄套現(xiàn)的人,卻在不知不覺中2016-07-14- 有一天打開電腦,發(fā)現(xiàn)電腦已經(jīng)被鎖住,窗口彈出說明:如果你不給錢,就把你的電腦清空,這就是遇到了勒索軟件。近年來,這種勒索已經(jīng)頻頻出現(xiàn)在安卓手機(jī)上,手機(jī)里的重要資2016-07-11
未來互聯(lián)網(wǎng)企業(yè)安全問題預(yù)測(cè) 網(wǎng)絡(luò)安全是場(chǎng)硬仗
互聯(lián)網(wǎng)的發(fā)展已經(jīng)步入穩(wěn)定期,未來不會(huì)像之前那樣呈現(xiàn)爆發(fā)性增長(zhǎng)的狀況了,那么未來的網(wǎng)絡(luò)誰是主角?是安全。云計(jì)算與大數(shù)據(jù)在為我們的生活工作帶來方便的同時(shí),也面臨著從2016-06-28