当前位置: 首页 > 文章 > 漏洞分析 > 正文

数据库未授权访问:从暴露端口到数据勒索

admin 2026-10-27 07:21 99人看过 免费
# 数据库未授权访问|网络攻防演练红队视角 > 核心定义:数据库服务**没有开启身份认证**,仅绑定公网/内网端口,任何人能直接连接,无需账号密码就能读写数据。 常见目标:MongoDB、Redis、MySQL、PostgreSQL、Elasticsearch、Memcached,攻防演练里Redis、Mongo、ES出现频率最高。 ## 一、漏洞成因(根源) 1. 数据库默认配置**无密码**; 2. 监听地址配置成 `0.0.0.0`(允许任意IP访问,而不是127.0.0.1本地); 3. 防火墙/安全组没有限制端口,直接暴露在内网甚至公网; 4. 运维图省事,上线没改默认配置,没做IP白名单。 > 重点区分: > - 未授权访问:**不需要账号密码直接连** > - 弱口令:有认证,但密码简单(属于另一类漏洞) ## 二、端口与对应数据库(红队扫描必背) |数据库|默认端口|特点| | ---- | ---- | ---- | |Redis|6379|极易未授权;可写文件、拿shell、读数据| |MongoDB|27017|老版本默认无认证,直接查看所有库集合| |Elasticsearch|9200|REST接口,http直接访问,无需登录,拖库| |MySQL|3306|较少无授权,大多是弱口令| |PostgreSQL|5432|部分版本空口令,未授权访问| |Memcached|11211|未授权读取缓存数据| ## 三、攻击链路:端口发现 → 验证未授权 → 操作数据 → 勒索(演练中是删库/拖库) ### 步骤1:端口探测 使用nmap扫描内网/公网网段,发现开放端口。 示例nmap命令 ```bash nmap -sV -p 6379,27017,9200,3306 192.168.1.0/24 ``` 识别服务版本,判断是否存在未授权风险。 ### 步骤2:验证未授权 #### Redis(6379) ```bash # 直接连接,不需要密码 redis-cli -h 目标IP -p 6379 # 连上后执行,查看所有key keys * ``` 能执行命令 = 存在未授权。 #### MongoDB(27017) ```bash mongo --host 目标IP:27017 # 查看数据库列表 show dbs ``` 直接列出数据库,无需登录,漏洞存在。 #### Elasticsearch(9200,HTTP接口,最简单) 浏览器/Burp直接访问: ``` http://目标ip:9200/_cat/indices?v ``` 直接返回索引列表,无401/403就是未授权。 ### 步骤3:红队利用手段 1. **拖库**:导出全部业务数据(用户信息、手机号、业务记录) 2. **篡改数据**:修改业务内容 3. **删除数据**:`flushall`(Redis清空所有),删除集合、删除索引 4. **写入后门拿服务器权限(Redis经典)** - 写ssh公钥到`/root/.ssh/authorized_keys`,实现ssh登录服务器 - 写crontab定时任务,反弹shell > 前提条件:Redis以root权限运行,并且有文件写入权限。 ### 步骤4:勒索场景(真实黑产,演练一般只做破坏性验证) 攻击者拿到数据库权限: 1. 备份下载全部数据; 2. 删除原库所有数据; 3. 在数据库留下勒索提示信息; 4. 索要赎金才返还备份数据。 > ⚠️ 红蓝演练注意:**禁止真实删除业务数据,只做验证、截图留证**。 ## 四、各数据库核心Payload ### Redis ```redis # 查看所有key keys * # 清空所有数据(破坏性操作,演练慎用) flushall # 查看配置 config get dir ``` ### MongoDB ```js show dbs; use test; show collections; db.xxx.find(); ``` ### Elasticsearch ``` # 查询所有索引 GET /_cat/indices?v # 查询索引内数据 GET /索引名/_search # 删除索引(高危) DELETE /索引名 ``` ## 五、蓝队防守方案 1. **设置强密码,开启身份认证**(最核心) - Redis:`requirepass 密码` - Mongo:创建管理员账号,开启auth认证 - ES:开启账号密码,如elastic用户 2. **监听地址改为127.0.0.1**,禁止0.0.0.0 3. 安全组/防火墙做IP白名单,只允许业务服务器IP访问数据库端口 4. 禁止数据库进程以root权限运行,最小权限原则 5. 关闭不必要外网暴露,数据库禁止直接对公网开放 6. 定期备份数据库,即使被勒索,可从备份恢复 ## 六、红队实战踩坑点 1. Redis新版默认保护模式,直接公网访问会拒绝连接,不是未授权;内网环境经常关闭保护模式。 2. Mongo 3.0+部分版本,本地回环免密,**外网访问需要认证**(本地绕过≠公网未授权) 3. ES 很多是内网未授权,公网较少。 4. 云服务器默认安全组,很多不会开放数据库端口,内网横向移动更容易挖到这类漏洞。 ## 七、横向对比(和注入区分) - **数据库未授权访问**:数据库本身没有账号认证,直接连数据库服务;在网络层直接访问数据库端口。 - **SQL注入**:通过Web应用,利用漏洞**间接操作数据库**,数据库本身有账号密码。 --- 要不要我把**Redis未授权写公钥、写定时任务反弹shell**完整实操步骤单独给你,适合内网横向演练?

附件资料

附件仅对登录用户可见,请先 登录。

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载或以其他方式使用本站原创内容。