大柚子

这世界不过如此

概述

Apache CouchDB是一个开源数据库,专注于易用性和成为”完全拥抱web的数据库”。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)。

在3.2.2版本之前的Apache CouchDB中,可以在不进行身份验证的情况下访问不正确的默认安装并获得管理员权限

影响版本

Apache CouchDB < 3.2.2

漏洞利用条件

1.CouchDB打开一个随机网络端口,绑定到所有可用的接口以预期集群操作或runtime introspection,称为epmd的实用程序向网络公布了这个随机端口。epmd本身在一个固定的端口上监听。

2.CouchDB包装之前为单节点和集群安装选择了一个默认的cookie值,该cookie用于验证Erlang节点之间的任何通信。

CouchDB官方建议在所有CouchDB安装前设置防火墙。完整的CouchDB api在注册的端口5984上可用,这是单节点安装需要公开的唯一端口。不将单独的分发端口暴露给外部访问的安装不易受到攻击。

漏洞复现

环境搭建建议用windows,网上很多docker搭建的环境,配置文件就没有赔cookie

网上已有公开的poc,可参考

https://www.exploit-db.com/exploits/50914

应急排查

针对这类漏洞,如果couchDB是在windows中,获取到的是system权限,但是在linux中得到的是couchdb用户权限,一般会配合polkit等提权漏洞利用。

1、通过日志排查

CouchDB 按以下顺序从以下位置读取配置文件:

LOCALCONFDIR
指向包含配置文件的目录(默认
/usr/local/etc/couchdb
情况下)。此变量可能与目标操作系统不同,并且可能在从源代码构建期间更改。对于二进制发行版,它主要指向安装路径(例如对于 Windows)。
C:\Program&nbsp;Files\CouchDB\etc\couchdb

LOCALCONFDIR/default.ini
LOCALCONFDIR/default.d/*.ini
PLUGINS_DIR/*/priv/default.d/*.ini
LOCALCONFDIR/local.ini
LOCALCONFDIR/local.d/*.ini

日志记录选项:


&#91;log]
CouchDB 日志记录配置。

file
指定用于记录输出的文件位置:
&#91;log]
file = /var/log/couchdb/couch.log
level

在 1.3 版更改::添加了warning级别。

日志记录级别定义了日志记录的详细程度:


&#91;log]
level = info

日志记录等级(默认info)

  • debug
    :非常丰富和详细的调试日志记录。包括 HTTP 标头、外部进程通信、授权信息等;
  • info
    : 信息记录。包括 HTTP 请求标题、外部进程的启动等。
  • warning
    :警告消息是关于可能导致错误的边缘情况的警报。例如,压缩守护程序会在此级别发出有关磁盘空间不足或不足的警报。
  • error
    :错误级别仅包括出错的内容、粉碎报告和 HTTP 错误响应(5xx 代码)。
  • none
    :禁用记录任何消息。

2、小结

目前看不管什么级别的日志等级,日志文件中都不会有相关攻击记录。

修复建议

升级到3.2.2及以上版本

修改默认cookie,配置文件路径位于 /opt/couchdb/etc/vm.args

限制对 couchdb 集群节点 4369 端口的访问

所有二进制包都已更新,以绑定 `epmd` 以及 CouchDB 分发端口分别为 `127.0.0.1` 和 / 或 `::1`

参考来源

https://www.exploit-db.com/exploits/50914

Print Friendly, PDF & Email

发表回复

您的电子邮箱地址不会被公开。