发表时间:2021-07-09 16:40:25 来源:红帽社区 浏览:
次 【
大】【
中】【
小】
Couchdb 任意命令执行漏洞(CVE-2017-12636)
Port:5984
Apache CouchDB 是一个开源数据库,专注于易用性和成为 "完全拥抱 web 的数据库"。CouchDB 会默认会在 5984 端口开放 Restful 的 API 接口,用于数据库的管理功能。它是一个使用 JSON 作为存储格式,JavaScript 作为查询语言,MapReduce 和 HTTP 作为 API 的 NoSQL 数据库。应用广泛,如 BBC 用在其动态内容展示平台,Credit Suisse 用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web 和应用程序)。
在 2017 年 11 月 15 日,CVE-2017-12635 和 CVE-2017-12636 披露, CVE-2017-12636 是一个任意命令执行漏洞,我们可以通过 config api 修改 couchdb 的配置 query_server,这个配置项在设计、执行 view 的时候将被运行。
影响版本:小于 1.7.0 以及 小于 2.1.1
CVE-2017-12635 是由于 Erlang 和 JavaScript 对 JSON 解析方式的不同,导致语句执行产生差异性导致的。可以被利用于,非管理员用户赋予自身管理员身份权限。
CVE-2017-12636 时由于数据库自身设计原因,管理员身份可以通过 HTTP(S)方式,配置数据库。在某些配置中,可设置可执行文件的路径,在数据库运行范围内执行。结合 CVE-2017-12635 可实现远程代码执行。
测试环境
如下测试环境借助 vulhub 的 docker 镜像,附上 P 师傅的链接:https://github.com/vulhub/vulhub
Couchdb 2.x 和 1.x 的 API 接口有一定区别,所以这个漏洞的利用方式也不同。本环境启动的是 1.6.0 版本,如果你想测试 2.1.0 版本,可以启动 CVE-2017-12635附带的环境。
执行如下命令启动 Couchdb 1.6.0 环境:
docker-compose up -d
启动完成后,访问 http://your-ip:5984/即可看到 Couchdb 的欢迎页面。
漏洞复现
该漏洞是需要登录用户方可触发,如果不知道目标管理员密码,可以利用 CVE-2017-12635先增加一个管理员用户。
1.6.0 下的说明
依次执行如下请求即可触发任意命令执行:
新增 query_server 配置,写入要执行的命令;
新建一个临时库和临时表,插入一条记录;
调用 query_server 处理数据
其中,vulhub:vulhub为管理员账号密码。
第一个请求是添加一个名字为 cmd的 query_servers,其值为 "id >/tmp/success",这就是我们后面待执行的命令。
第二、三个请求是添加一个 Database 和 Document,这里添加了后面才能查询。770895a97726d5ca6d70a22173005c7b应该表示 vul。
第四个请求就是在这个 Database 里进行查询,我们将 language 设置为 cmd,这里就会用到第一步里添加的名为 cmd的 query_servers,最后触发命令执行。
引申一
既然可以命令执行,也就是说可以反弹 shell,如果是 ctf 题,也可以将 flag 带出来。
引申二
同样你也可以不用登录获取 Cookie,直接在 curl 请求中带入账号密码也是可以的,类似于这样,执行效果是一样的,这种方法可能更方便点吧。例如:
2.1.0 下的说明
2.1.0中修改了上面用到的两个API,这里需要详细说明一下。
Couchdb 2.x 引入了集群,所以修改配置的API需要增加node name。这个其实也简单,我们带上账号密码访问 /_membership即可:
curlhttp://vulhub:vulhub@your-ip:5984/_membership
可见,我们这里只有一个node,名字是 nonode@nohost。
然后,我们修改 nonode@nohost的配置:
然后,与 1.6.0 的利用方式相同,我们先增加一个Database和一个Document:
增加_view的同时即触发了 query_servers中的命令。
利用脚本
附一个简单的脚本 exp.py,修改其中的 target 和 command 为你的测试机器,然后修改 version 为对应的 Couchdb 版本( 1 或 2 ),成功反弹shell:
文章转载来源:https://www.freebuf.com/articles/web/258159.html
责任编辑:
声明:本平台发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。