Cyber Apocalypse CTF 2025 部分web wp
字数 1588 2025-08-30 06:50:28

Cyber Apocalypse CTF 2025 Web题目解析与利用技术详解

目录

  1. Trial by Fire - Jinja2 SSTI利用
  2. Whispers of the Moonbeam - 命令注入与终端绕过
  3. Cyber Attack - Apache CRLF注入与SSRF
  4. Eldoria Realms - Ruby原型链污染与GRPC注入

Trial by Fire

漏洞分析

这是一个基于Jinja2模板引擎的服务器端模板注入(SSTI)漏洞。

  • 题目提供了一个简单的路由,使用Jinja2模板引擎渲染用户输入
  • 由于未对用户输入进行适当过滤,导致可以直接注入模板代码

利用方法

直接构造Jinja2的SSTI payload进行利用:

{{ config.__class__.__init__.__globals__['os'].popen('id').read() }}

防御措施

  • 对用户输入进行严格过滤
  • 使用Jinja2的沙盒环境
  • 避免直接将用户输入作为模板渲染

Whispers of the Moonbeam

非预期解

题目提供了一个类似终端的界面,包含以下命令:

  • gossip - 查看系统信息
  • observe - 查看进程信息

直接利用gossip命令查看目录,发现flag.txt文件并直接访问:

http://target/flag.txt

预期解(命令注入)

  1. 通过observe命令可以发现系统执行了Linux命令
  2. 在命令输入框中使用分号(;)进行命令注入:
; cat flag.txt;

或者:

| cat flag.txt

防御措施

  • 使用白名单验证用户输入
  • 避免直接拼接用户输入到系统命令
  • 使用安全的命令执行API

Cyber Attack

漏洞分析

题目涉及Apache服务器的CRLF注入和SSRF攻击:

  1. 提供两个攻击按钮:

    • attack-domain.py - 检查域名格式
    • attack-ip - 检查IP格式并限制为本地访问
  2. Apache配置限制:

    • 只有本地用户可以调用attack-ip路由
    • index.php中也做了相应限制

利用方法

利用Apache的CRLF注入完成SSRF攻击:

  1. 构造恶意payload利用CRLF注入:
http://target/attack-domain?url=http://127.0.0.1%0d%0aX-Forwarded-For:%20127.0.0.1%0d%0a%0d%0a
  1. 绕过本地限制,访问attack-ip路由

防御措施

  • 严格验证HTTP头
  • 禁用不必要的HTTP方法
  • 限制服务器对自身的请求

Eldoria Realms

漏洞概述

这是一个Ruby应用,涉及原型链污染和GRPC注入攻击,最终实现RCE。

污染our_url

  1. 应用路由:

    • /player - 用户信息,包含merge方法更新信息
    • /quest - 问题及其奖金
    • /store - 商店
    • /fellowship - 用户信息
    • /livedata - 更新信息
    • /advanced - 召唤Helios和连接realm功能
  2. 漏洞点:

    • merge_with调用了recursive_merge方法
    • merge-fates路由获取用户输入的JSON数据
    • 可以污染our_url属性来更改连接行为

利用SSRF请求走私GRPC packet

  1. 污染our_url后,通过connect-realm路由执行curl命令
  2. Docker环境中curl版本为7.7.0.0,可利用gopher协议攻击GRPC
  3. 目标端口:127.0.0.1:50051

go命令注入

app.go中存在不安全的命令拼接:

cmd := exec.Command("sh", "-c", "nc -zv "+ip+" "+port)

可以直接注入命令:

port = "1337; cat /flag.txt;"

完整利用步骤

  1. 污染our_url
{
  "__proto__": {
    "our_url": "gopher://127.0.0.1:50051/_<GRPC_PACKET>"
  }
}
  1. 调用connect触发漏洞
  2. 访问/flag.txt获取flag

防御措施

  • 避免使用__proto__等原型链操作
  • 严格验证用户输入的URL
  • 使用安全的命令执行方式
  • 更新curl等基础组件

总结

本次CTF题目涵盖了多种Web安全技术:

  1. 模板注入(SSTI)
  2. 命令注入
  3. CRLF注入
  4. SSRF攻击
  5. 原型链污染
  6. GRPC协议注入

每种技术都需要深入理解其原理和防御方法,在实际开发中应特别注意这些安全风险。

Cyber Apocalypse CTF 2025 Web题目解析与利用技术详解 目录 Trial by Fire - Jinja2 SSTI利用 Whispers of the Moonbeam - 命令注入与终端绕过 Cyber Attack - Apache CRLF注入与SSRF Eldoria Realms - Ruby原型链污染与GRPC注入 Trial by Fire 漏洞分析 这是一个基于Jinja2模板引擎的服务器端模板注入(SSTI)漏洞。 题目提供了一个简单的路由,使用Jinja2模板引擎渲染用户输入 由于未对用户输入进行适当过滤,导致可以直接注入模板代码 利用方法 直接构造Jinja2的SSTI payload进行利用: 防御措施 对用户输入进行严格过滤 使用Jinja2的沙盒环境 避免直接将用户输入作为模板渲染 Whispers of the Moonbeam 非预期解 题目提供了一个类似终端的界面,包含以下命令: gossip - 查看系统信息 observe - 查看进程信息 直接利用 gossip 命令查看目录,发现 flag.txt 文件并直接访问: 预期解(命令注入) 通过 observe 命令可以发现系统执行了Linux命令 在命令输入框中使用分号( ; )进行命令注入: 或者: 防御措施 使用白名单验证用户输入 避免直接拼接用户输入到系统命令 使用安全的命令执行API Cyber Attack 漏洞分析 题目涉及Apache服务器的CRLF注入和SSRF攻击: 提供两个攻击按钮: attack-domain.py - 检查域名格式 attack-ip - 检查IP格式并限制为本地访问 Apache配置限制: 只有本地用户可以调用 attack-ip 路由 index.php 中也做了相应限制 利用方法 利用Apache的CRLF注入完成SSRF攻击: 构造恶意payload利用CRLF注入: 绕过本地限制,访问 attack-ip 路由 防御措施 严格验证HTTP头 禁用不必要的HTTP方法 限制服务器对自身的请求 Eldoria Realms 漏洞概述 这是一个Ruby应用,涉及原型链污染和GRPC注入攻击,最终实现RCE。 污染our_ url 应用路由: /player - 用户信息,包含 merge 方法更新信息 /quest - 问题及其奖金 /store - 商店 /fellowship - 用户信息 /livedata - 更新信息 /advanced - 召唤Helios和连接realm功能 漏洞点: merge_with 调用了 recursive_merge 方法 从 merge-fates 路由获取用户输入的JSON数据 可以污染 our_url 属性来更改连接行为 利用SSRF请求走私GRPC packet 污染 our_url 后,通过 connect-realm 路由执行curl命令 Docker环境中curl版本为7.7.0.0,可利用gopher协议攻击GRPC 目标端口:127.0.0.1:50051 go命令注入 在 app.go 中存在不安全的命令拼接: 可以直接注入命令: 完整利用步骤 污染 our_url : 调用 connect 触发漏洞 访问 /flag.txt 获取flag 防御措施 避免使用 __proto__ 等原型链操作 严格验证用户输入的URL 使用安全的命令执行方式 更新curl等基础组件 总结 本次CTF题目涵盖了多种Web安全技术: 模板注入(SSTI) 命令注入 CRLF注入 SSRF攻击 原型链污染 GRPC协议注入 每种技术都需要深入理解其原理和防御方法,在实际开发中应特别注意这些安全风险。