文章总结: 本次渗透复盘从Redis未授权RCE进入边界跳板,横向打通Nacos配置中心、MySQL、RedisCluster、业务API与XXL-JOB,获取全量服务凭据。关键发现是目标内网已被第三方攻击者先行渗透并留下活跃cron后门,回连被阻断。建议优先处置后门、全量轮换凭据、收敛中间件端口并强制鉴权。
综合评分: 88
文章分类: 渗透测试,内网渗透,红队,应急响应,漏洞分析
redisRCE复盘
原创
云深不知処
云深不知処
云深不知処
2026年9月29日 18:30
湖北
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
一次比较特殊的任务,渗透+取证+复盘,从 Redis 未授权访问进入边界跳板,横向打通配置中心、数据库、消息队列、任务调度与业务 API,最终获取全量服务凭据。更关键的是,发现目标内网已被第三方攻击者先行渗透,留下活跃后门。
一、执行摘要
本次行动以某外部跳板机(下称“边界跳板”)为入口,完成了一条从 Redis 未授权 RCE 到 内网工控平台全量凭据窃取 的完整攻击链,并还原出一条已存在的第三方入侵链。
核心结论:
- 初始访问:边界跳板的 Redis 服务(5.0.8)未授权,
requirepass为空、bind 0.0.0.0,且 CONFIG 已被预设为/root/.ssh+authorized_keys。利用该路径写入测试公钥并触发BGSAVE,随后以对应私钥 SSH 免密登录,获得跳板 root 权限。 - 横向侦察:经跳板访问内网配置中心(Nacos 2.x),
auth_enabled=false可匿名读取全量配置,一次性窃取 OSS AK/SK、MySQL root、RabbitMQ、EMQX、海康、微信、CNPC、市局对接等全套凭据。 - 数据面取证:Redis Cluster 6 节点全部未授权,且发现 3 类 CONFIG 篡改已预设远程代码执行路径(SSH 公钥写入 / crontab 写入 / cron.d 写入)。
- 第三方痕迹:配置中心 history 与 Redis 键空间均发现第三方攻击者先于本队留下的篡改痕迹(攻击者 IP 已脱敏;Redis 键含
SICIEI:DEPT_DATA=pwn等)。 - 第三方活跃后门:跳板机存在第三方活跃 cron 后门,回连某 VPS,后门仍在触发,回连被阻断,载荷未落地。
- 应用与任务调度面:业务 API 全量未授权 + 明文凭据泄露;XXL-JOB 执行器硬编码 token → 3 主机 root 命令执行。
- 澄清:
/root/.ssh/authorized_keys为我方测试写入,非第三方后门;写入途径为 Redis 未授权 RCE。
一句话:边界跳板既是被害人又是加害工具——第三方已用 Redis 未授权在其上植入 cron 后门;我方经同一路径写入 SSH 公钥进入跳板,横向打通五类中间件。
二、攻击链全景
[初始访问] Redis 未授权(边界跳板:7000/7001) → CONFIG dir=/root/.ssh dbfilename=authorized_keys → SET 我方公钥 → BGSAVE → ssh -i atk root@边界跳板 → 跳板 foothold │ ▼[侦察] 内网 10.0.0.0/24 端口/服务测绘 │ ┌────┼───────────────────────────────┬─────────────────┬─────────────┐ ▼ ▼ ▼ ▼ ▼[Nacos 未授权] [Redis 未授权] [MySQL 直读] [业务 API 未授权] [XXL-JOB] 全量配置导出 → dir/dbfilename root 直连 /v3/api-docs 358 token 硬编码 凭据金矿 预设/复用写盘 全权限 明文凭据泄露 → 3 主机 root │ │ │ └──────────────┬────────────────────────┴─────────────────┘ ▼ [第三方入侵链还原] 跳板 cron 后门 内容: 每分钟 curl 回连某 VPS 拉取载荷 现状: 回连被阻断,载荷未落地
三、分阶段复盘
阶段 0:初始访问——Redis 未授权写入 SSH 公钥
事实:边界跳板 Redis Cluster 6 节点(3 主 3 从)全部未授权,requirepass 为空,bind 0.0.0.0。其中两个节点 CONFIG 已被预设为 dir=/root/.ssh、dbfilename=authorized_keys。
利用:
- 通过 Redis 未授权连接,
CONFIG SET dir=/root/.ssh、dbfilename=authorized_keys SET写入测试公钥,BGSAVE落盘- 使用对应私钥 SSH 免密登录
root@边界跳板
证据:成功获得 root shell,主机已连续运行 184 天,负载极低。
关键点:该 /root/.ssh/authorized_keys 为我方测试写入,非第三方后门。后续取证阶段遵循只读约束,未再执行写操作。
阶段 1:内网侦察与攻击面测绘
经跳板确认内网资产:
| 资产 | 服务 | 端口 | 认证状态 |
| — | — | — | — |
| 10.0.0.176 | Nacos 2.x | 8848 | 未授权 |
| 10.0.0.111 | RabbitMQ | 15672/5672 | guest 可管理 |
| 10.0.0.111 | EMQX Dashboard | 18083 | admin 明文 |
| 10.0.0.13 | MySQL | 3306 | root 弱口令 |
| 10.0.0.151 | MySQL | 3306 | root 弱口令 |
| 边界跳板 | Redis master | 7000/7001 | 无密码 |
| 其他 Redis 节点 | master/slave | 7000/7001 | 无密码 |
关键发现:本地直连内网不可达,必须经跳板,确立跳板的战略价值。
阶段 2:Nacos 未授权配置窃取——凭据核弹
匿名枚举命名空间:发现 produce 命名空间(描述为“华为云生产”),含 20 条配置。
匿名枚举用户:泄露 9 个用户 bcrypt hash,含 nacos_admin。
全量配置导出:无 token 直接读取 20 条配置,获取:
| 服务 | 泄露内容 |
| — | — |
| 阿里云 OSS | AK/SK、Bucket 名称、Endpoint |
| MySQL (data) | 内网地址、root 凭据 |
| MySQL (system) | 内网地址、root 凭据 |
| Druid 控制台 | 登录用户名密码 |
| RabbitMQ | 用户名、密码、vhost |
| EMQX/MQTT | Broker 地址、用户名密码、API 凭据 |
| 海康 | host、appKey、appSecret |
| 微信 | appId、appSecret、模板 ID |
| open-api | 密钥 |
| CNPC | apiSecret、用户名密码 |
| 市局对接 | baseUrl、认证编号 |
攻击者痕迹:配置中心 history 显示,外部 IP 曾在 XX-11、XX-17 改写配置。
此时能力:read(config) + cred(svc,priv)(11 类服务凭据)。
阶段 3:MySQL 数据库直读
使用 Nacos 中获取的 root 凭据,直连两台 MySQL(8.0.33):
- 10.0.0.151:业务库、配置库、XXL-JOB 库
- 10.0.0.13:数据仓库,但两业务库 309 表全部为空架构
负结果:核心业务库为空,无业务数据可窃取。
阶段 4:Redis Cluster 取证与第三方 CONFIG 痕迹
6 节点 Redis 全部未授权,CONFIG 被预设为 3 类写盘路径:
| 节点 | dir | dbfilename | 预设 RCE 路径 |
| — | — | — | — |
| 节点 A | /root/.ssh | authorized_keys | SSH 公钥写入 |
| 节点 B | /etc/cron.d | exploit | cron.d 写入 |
| 节点 C | /var/spool/cron | root | crontab 写入 |
攻击者写入键:{z}、{z}test、SICIEI:DEPT_DATA=pwn。
阶段 5:跳板主机取证——第三方入侵链
跳板机存在 4 个恶意 cron 文件(均由 Redis BGSAVE 写入,RDB 格式),内容为每分钟回连某 VPS 拉取载荷。
现状:后门仍在触发,/var/log/cron 持续记录,ss 抓到 curl 进程处于 SYN-SENT,回连被阻断,载荷未落地。
阶段 6:内网应用层——业务 API 未授权
业务 API 服务(Spring Boot)未授权暴露,/v3/api-docs 泄露 358 个接口。无 Authorization 头即可调用:
/lcPassword/getLcPassword:返回 8 组明文账号密码/ossFiles/getUrl:返回服务端签发的预签名 URL
负结果:业务数据全空,OSS AK 已失效。
阶段 7:XXL-JOB 执行器命令执行
硬编码 accessToken 在 jar 包配置中,三个执行器 /run + GLUE_SHELL 获 root:
- 10.0.0.194 → 主机 1(uid=0)
- 10.0.0.111 → 主机 2(uid=0)
- 10.0.0.112 → 主机 3(uid=0)
阶段 8:云侧/消息面负结果
- 阿里云 OSS:AK 已吊销,Bucket 非公共读,预签名 URL 亦失效
- EMQX 管理 API:凭据全部 401
- MQTT Broker:凭据有效但零消息投递,ACL 限制
四、能力原语池终态
| 原语 | 来源 | 状态 |
| — | — | — |
| read(config) | Nacos 未授权 | ✅ 已验证(全量配置) |
| cred(svc,priv) | Nacos 配置 | ✅ 已验证(11 类服务凭据) |
| read(path) | Redis CONFIG GET | ✅ 已验证 |
| write(path) | Redis CONFIG 篡改 | ✅ 已验证(写入 SSH 公钥) |
| exec(cmd) | Redis RCE → SSH | ✅ 已验证(root 跳板) |
| read(msg)/write(msg) | RabbitMQ guest | ⚠️ 待验证 |
| cred(db) | MySQL root | ✅ 凭据已验证 |
| s3rver-side req forgery/sqli()/idor(id) | — | ❌ 未验证 |
链式等式:read(config) → cred(db) → write(path) → exec(cmd) —— 已验证达成。
五、关键转折点复盘
- Redis 未授权 + CONFIG 可写:直接导致
/root/.ssh/authorized_keys被写入,攻击者无需 SSH 凭据即可获得跳板 root。 - Nacos 未授权 = 凭据核弹:一个未授权读端,泄露全平台密钥。
- SPA 前端逆向(本次未涉及但通用):若认证头非标准,可从 JS 中寻找线索。
- 多租户/多节点复用:Redis Cluster 中多个节点 CONFIG 被预设,攻击者可批量利用。
- 第三方痕迹共存:Nacos history + Redis 键 + 跳板 cron 后门证实他方已入网,需与蓝队确认时间线归属。
六、失败路径与避坑索引
| 失败项 | 现象 | 原因 |
| — | — | — |
| 本地直连 Nacos | HTTP=000 | 内网不可达,须跳板 |
| Redis 取证脚本 | 超时无输出 | 首节点连接阻塞 |
| Nacos users 查询 | HTTP 500 | 缺 search 参数 |
| RabbitMQ 默认密码 | HTTP 401 | 默认密码已改 |
| MySQL 业务库 | 双库 309 表全空 | 空架构库 |
| 阿里云 OSS AK | 已吊销 | 凭据轮换 |
| EMQX 管理 API | 凭据全失败 | 已排除 |
| MQTT 设备数据订阅 | 零投递 | ACL 限制 |
| 业务数据 | total:0 | 无业务数据 |
七、风险评级与防守建议
- 边界跳板已被第三方入侵并植入持久化:cron 后门,回连某 VPS。当前回连被阻断仅为侥幸,一旦恢复可达即会落地二次载荷。
- 初始访问根因:Redis 未授权 + CONFIG 可写,直接导致 SSH 公钥被写入。
- 内网横向面极宽:Redis/MySQL/Nacos/RabbitMQ/XXL-JOB/业务 API 全部缺省凭据或未授权,任一入口即可全内网沦陷。
- 敏感资产:为凭据与接口暴露(非海量业务数据)——数据库与业务表为空,OSS 凭证已轮换。
建议优先级:
- 处置第三方后门 + 溯源
- 全量轮换默认凭据
- 中间件端口收敛至内网 + 鉴权
- 业务 API 服务端强制鉴权
- Redis 禁用 CONFIG 写盘路径并强制鉴权
八、复盘要点
- 信任边界坍塌:Redis 未授权直接写 SSH 公钥获得跳板 root,再穿透至核心配置中心,内网横向零隔离。
- 配置中心未授权 = 凭据核弹:Nacos 一个未授权读端,泄露全平台密钥。
- Redis Cluster 老漏洞新利用:5.0.8 CONFIG SET 写 SSH/cron 是经典链,第三方已先行篡改,我方复用同一路径进入。
- 第三方痕迹共存:Nacos history + Redis 键 + 跳板 cron 后门证实他方已入网,需与蓝队确认时间线归属。
{z}hash tag 技巧:说明攻击者熟悉 Redis Cluster slot 定向,非脚本小子级别。- 边界一台“跳板机既是被害人又是加害工具”:第三方已用 Redis 未授权在其上植入 cron 后门;我方经同一路径写入 SSH 公钥进入内网,横向打通五类中间件。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:云深不知処 云深不知処
云深不知処《redisRCE复盘》