CouchDB未授权访问漏洞导致系统命令执行

一个配置不当导致CouchDB数据库存在未授权访问漏洞,数据信息全部泄露,由于CouchDB的特性可能导致系统命令执行,目前已经被批量利用了!

【背景介绍】

CouchDB是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。CouchDB 可以安装在大部分 POSIX 系统上,包括 Linux和 Mac OS X。

【漏洞简单分析】

CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问,默认会在5984端口开放Restful的API接口,如果使用SSL的话就会监听在6984端口,用于数据库的管理功能。其HTTP Server默认开启时没有进行验证,而且绑定在0.0.0.0,所有用户均可通过API访问导致未授权访问。

在官方配置文档中对HTTP Server的配置有WWW-Authenticate:Set this option to trigger basic-auth popup on unauthorized requests,但是很多用户都没有这么配置,导致漏洞产生。

[httpd] WWW-Authenticate = Basic realm=”Welcome to the Couch!”

CouchDB允许用户指定一个二进制程序或者脚本,与CouchDB进行数据交互和处理,此功能在query_server中配置,认情况下,配置文件中已经设置了两个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提供了修改配置文件的API:/_config/section/key,链接: http://docs.couchdb.org/en/1.6.1/api/server/configuration.html#get–_config-section,比如我们修改这里的query_server为”/sbin/ifconfig >/tmp/6666″,就可以引用这个二进制文件进行命令执行了。

此时就可以利用未授权访问,利用API来修改配置,调用二进制文件来执行命令了 (注意:缺陷是这个config文件的修改需要admin权限,只有未配置admin的目标才能导致系统命令执行)

【漏洞影响范围】

根据目前在绿盟广谱平台(SEER)上历史数据统计,目前有7000+受影响目标,部分系统存在系统命令执行。

【漏洞检测方法】

绿盟WEB应用漏洞扫描系统(NSFOCUS WVSS)和远程安全评估系统(NSFOCUS RSAS)在第一时间内已经发布了相应的应急响应插件包,请广大用户升级对应产品的插件包进行检测,降低自身的业务风险。

【漏洞修复】

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]”字段配置密码。

3、设置WWW-Authenticate,强制认证。

如果您需要了解更多内容,可以
加入QQ群:486207500
直接询问:010-68438880-8669

Spread the word. Share this post!

Meet The Author

Leave Comment