您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何進行CouchDB漏洞的分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
Apache CouchDB是一個開源數據庫,專注于易用性和成為"完全擁抱web的數據庫"[1]。它是一個使用JSON作為存儲格式,JavaScript作為查詢語言,MapReduce和HTTP作為API的NoSQL數據庫。應用廣泛,如BBC用在其動態內容展示平臺,Credit Suisse用在其內部的商品部門的市場框架,Meebo,用在其社交平臺(web和應用程序)。
在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露,CouchDB被曝存在遠程代碼執行的問題。其中CVE-2017-12636的任意命令執行早在2016年即被披露,但并未引起重視。
CVE-2017-12635是由于Erlang和JavaScript對JSON解析方式的不同,導致語句執行產生差異性導致的。可以被利用于,非管理員用戶賦予自身管理員身份權限。
CVE-2017-12636時由于數據庫自身設計原因,管理員身份可以通過HTTP(S)方式,配置數據庫。在某些配置中,可設置可執行文件的路徑,在數據庫運行范圍內執行。結合CVE-2017-12635可實現遠程代碼執行。
0x02 漏洞分析
CVE-2017-12635問題在于Erlang和JavaScript對JSON中重復的鍵處理方式具有差異性,例如{“a”:”1”,”a”:”2”},
Erlang:
對于給定的鍵,Eralang解析器將存儲兩個值,但是JavaScript只存儲第二個值。但是在jiffy實現的時候,getter函數只返回第一個值。
除了輸入驗證腳本之外,幾乎所有關于身份驗證和授權的重要邏輯都發生在CouchDB的Erlang部分,所以這樣可以使當前用戶賦予“_admin”身份。
查看jiffy解析器源碼,定位到patch:
可以發現patch后,加入了dedupe_keys字段用于對重復鍵的標識,重寫了make_object方法,使得jiffy解析JSON的方法和JavaScript一致。
而CVE-2017-12636漏洞在于CouchDB自身的設計問題,CouchDB允許外部通過自身HTTP(S) API對配置文件進行更改,一些配置選項包括操作系統級二進制文件的路徑,隨后會由CouchDB啟動。從這里獲取shell通常很簡單,因為CouchDB其中一個“query_servers“選項,可以自定義語言,這個功能基本上只是一個包裝execv。
可以構造簡單的POC進行驗證:
更改query_servers配置,創建個臨時表,調用query_servers處理數據。這樣便可以執行shell,在規定的/tmp/6668文件中,寫入ifconfig信息。
這樣配合之前的CVE-2017-12365權限提升漏洞,實現遠程代碼執行:
0x03 全網影響
根據360CERT全網資產檢索平臺實時顯示,共有4943臺CouchDB服務在外網開放,以美國占量為主
國內統計以廣東,北京占量為主
0x04 修復建議
1、所有用戶都應升級到CouchDB 1.7.1或 2.1.1。
2、配置HTTP API配置參數,針對敏感配置信息加入黑名單。
看完上述內容,你們對如何進行CouchDB漏洞的分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。