[CVE-2017-12636] - CouchDB任意命令执行

文章目录

      • 一、漏洞原理
      • 二、触发条件
      • 三、漏洞场景 / 挖掘思路
      • 四、漏洞复现
        • 4.1 漏洞环境
        • 4.2 启动环境
        • 4.3 攻击过程
      • 五、防御措施

一、漏洞原理

  CountDB通过RESTful JavaScript Object Notation (JSON) API访问,CouchDB默认在5984开放Restful的API接口,用于数据库管理。由于CouchDB允许用户指定一个二进制程序或脚本,于CouchDB进行数据交互处理:

CouchDB将设计文档函数的计算委托给外部查询服务器。外部查询服务器是一个特殊的OS进程,它使用一个非常简单的基于行的JSON消息协议,通过标准输入/输出与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中引入了外部的二进制程序来执行命令,如果可以更改这个配置就可以利用数据库来执行命令(前提1:更改local.ini配置文件)

【官网文档:】
CouchDB服务器配置API提供一个接口来查询和更新运行中的CouchDB实例中的各种配置值

  CouchDB可以通过提供的Restful API接口动态修改配置属性(前提:2),结合以上两个前提可以通过一个未授权访问的CouchDB,通过修改其query_server配置,来执行OS命令。

二、触发条件

  • CouchDB Version<1.7.0 | CouchDB Version<2.1.1
  • HTTP Server默认开启时没有进行验证,绑定在了0.0.0.0所有用户均可通过API访问
  • 配合CVE-2017-12635 - CouchDB垂直越权漏洞

三、漏洞场景 / 挖掘思路

  • 开启端口:5984使用CouchDB
  • CouchDB版本满足以上条件

四、漏洞复现

4.1 漏洞环境

(整个环境在局域网下实现)

  • 靶机:CentOS7 192.168.30.129
  • 攻击者:Kali 192.168.30.130(poc测试以及触发payload)
  • 宿主机:Win10 192.168.1.100、BurpSuite(模拟访问测试)

4.2 启动环境

# 环境启动
》》docker-compose up -d
# 宿主机 - 靶机 - docker 互ping通
# 宿主机访问测试
[CVE-2017-12636] - CouchDB任意命令执行_第1张图片

Tips:(未能启动/ ping通请点击我!)

4.3 攻击过程

# 使用[CVE-2017-12635] - CouchDB垂直越权漏洞添加一个用户
[CVE-2017-12636] - CouchDB任意命令执行_第2张图片

五、防御措施

你可能感兴趣的:(CVE)