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文件中添加代碼: 復(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漏洞; |
免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長(zhǎng)、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長(zhǎng)轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營(yíng)銷服務(wù),與站長(zhǎng)一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!
掃一掃,關(guān)注站長(zhǎng)網(wǎng)微信