CTF思路
点击放大


已更新内容:
| 推荐序号 | 关卡名 | 内容 | 镜像名 | 开放端口 |
| ------------- | :----------------------------- | :----------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Level 1 | hello-world | 无过滤SSRF,主要了解file协议 | probius/hellossrf:hello-world | 80 |
| Level 2 | openwhat | SSRF中的端口探测 | probius/hellossrf:openwhat | 80 |
| Level 3 | 【实验环境】*gopher_mirror | gopher协议特性 | probius/hellossrf:gopher_mirror | 80 |
| Level 4* | gopher_master | gopher协议完成HTTP相关请求 | probius/hellossrf:gopher_master | 80 |
| Level 5 | 【实验环境】ohmysql | TCP流量视角下的mysql未授权攻击 | probius/hellossrf:ohmysql | 5050 |
| Level 6 | getmysql | 基于mysql未授权的mysql提权 | probius/hellossrf:getmysql | 80 |
| Level 7 | ohmyRedis | 使用dict协议攻击Redis 未授权 | probius/hellossrf:ohmyredis | 80 |
| Level 8 | e | 【phithon- Fastcgi协议分析 && PHP-FPM未授权访问漏洞 && Exp编写】 | probius/hellossrf:e | 80 |
| Level b1* | hostbypass | 简单绕过host限制 | probius/hellossrf:hostbypass | 80 |
| Level b2 | whynotdomain | 域名绕过限制 | probius/hellossrf:whynotdomain | 80 |
注:
【实验环境】*:该标签环境无flag,或不以flag为目标,实验环境主要帮助探索和理解对应攻击手法的过程或者原理。
Level 4*:对于ssrf涉及到的多个攻击场景,本质上均为http请求,这里不再细分场景,如:基于HTTP请求的 代码注入,SQL注入,命令执行,XML注入,Tomcat PUT 方法任意写文件漏洞(C)。
当你完成该关卡后,可尝试 ssrf-labs 中的对应关卡。
Level b1*:带有b标号说明该关卡主要围绕bypass - 即ssrf中的常见绕过方式,主要与攻击场景做区分。
计划中的内容:
| 推荐序号 | 关卡名 | 内容 |
| -------- | :----- | :--- |
| | | |
| Level 9 | ftp? | |
| | | |
| | | |
【饼】其他计划内容:
基于SRC中SSRF场景的一些复刻 - 感谢【小火炬\<Wechat:xiaohuoju123456>】师傅提供的相关案例。
然后启动你想打的关卡(比如hostbypass)
或者直接使用docker拉取对应镜像:
!43
市面上很多ssrf相关漏洞都有了一些年限,在复现过程中难免会遇到因为各种各样的更新迭代导致原环境崩坏或者在新环境中有些漏洞无法复现的问题,这里是笔者在构建此靶场和另一个靶场ssrf-lab遇到的一些坑,仅供参考:
对于原生镜像 mysql:5.6 ,由于其底层为 Debian 9 Stretch,而该版本已经不受支持
> 每个 Debian 稳定版本都有两年的官方支持期限,然后进入由 Debian LTS Team 支持的至少三年的长期支持(LTS)期。在这五年中,用户依旧可以使用官方 debian 源、debian-security 源及它们的镜像。
>
> 在 LTS 结束后,对应发行版的软件源会被从 Debian 主源中删除,移动到 archi.org,不再获得任何更新,对应的 APT 签名公钥也会过期。Freexian 公司为 Debian 提供付费的扩展 LTS 支持服务,主要提供安全更新,也有少量功能更新,通常支持期限可至对应版本发布后十年。这些 ELTS 软件源是可以免费使用的。
所有的相关包都被收录在Debian的archive中,导致如需在该镜像中安装部分实验环境会报错源失效:
需手动修改为 而国内部分源对此没有加速,导致部分全局加速配置无效。
笔者基于 做了重新配置。
当你在稍新一点的容器中(如果他预装了curl)复现类似攻击Mysql未授权的本地curl exp时,你可能遇到以下报错:
这是由于从 7.81.0版本(2021-10-13) 后引入了更严格的 URL 解析规则,禁止在 URL 路径中包含控制字符(如 %00)。
此版本明确将空字符视为非法字符。
如需使用宽松版本,推荐使用 【实验环境】ohmysql 中的curl命令,该命令版本信息如下”
在搭建单环境 - e 时,根据P牛的文章 【2017-04-25 phithon- Fastcgi协议分析 && PHP-FPM未授权访问漏洞 && Exp编写】 和 的环境,得知这和fpm的版本并无关系,本质上是开放9000端口后的一种针对性利用,本来是沿用W4rnIn9师傅的文章 【2020-09-09 W4rnIn9-SSRF系列之攻击FastCGI】 去构建的docker,但是发现没有太大必要使用Ubuntu的底层镜像,所以第一个版本直接使用 php:fpm 并且在里面 php -s 一个ssrf页面,此时php默认版本为PHP8.4,当输入对应Payload时,和之前高版本的curl一样回显了 "URL using bad/illegal format or missing URL" ,推测是高版本PHP中的cURL扩展导致。
经过测试为在PHP 7.3及以后中的cURL也同样引入了更严格的 URL 解析规则,在中间版本cURL扩展会产生空回显,在PHP8.2之后的版本,cURL会回显"URL using bad/illegal format or missing URL"。
也就是说在高版本的PHP中,部分SSRF的攻击方式会因此失效?-当然如果这里有其他服务暴露可以执行宽松URL解析,依旧能完成对fpm-Fastcgi协议的攻击。
> *注,测试仅通过拉取不同php-x.x.x-fpm版本释放payload实现,并未对php源码进行本地调试,测试结果可能不严谨,仅供参考。
【Esonhugh/Gopherus3】: -SSRF基于Gopher的利用工具,通过自动化地生成Gopher协议Payload,该版本为原版的Python3版本,由Esonhugh师傅发布。
【2016-05-31_长亭科技 - 利用 Gopher 协议拓展攻击面】
【2023-12-12 Web安全学习笔记 - 4. 常见漏洞攻防 » 4.4. SSRF】
【2021-01-26 SSRF安全指北】
【2021-01-14 Freebuf - CTF SSRF 漏洞从0到1】
【ssrf-labs】:
>基于国光师傅 ssrf-vuls 修改
>
>- 为所有靶场都做了单独容器,方便调试。
>
>- 添加以源码方式部署的 docker-compose.yml 。
>- 基于 【phithon- Fastcgi协议分析 && PHP-FPM未授权访问漏洞 && Exp编写】 添加了FastCGI场景
【ByteCTF2021-Final-SEO】:
> - 前端功能场景尽量模拟了真实的 SSRF 漏洞情况
> - 通过 JS 去请求 API 接口,比较符合目前主流的开发场景
> - 多个没有 SSRF 漏洞的干扰接口,需要选手耐心去过一些这些接口
> - 配合文件下载漏洞可以快速定位内网服务器的当前网段
> - 考察选手 SSRF 在内网中的实际信息收集,需要选手自己去找到内网的 MySQL 资产
> - 考察选手 MySQL 的攻击思路,这里只要考擦使用 SSRF 进行内网 MySQL 的 UDF 提权
CTFShow-SSRF系列题目 web351-web360 - 推荐WriteUp:
> web351 - 无过滤
>
> web352 - 协议必须是 http/https ,过滤了 localhost 和 127.0.0
>
> web353 - 协议必须是 http/https ,过滤了localhost、127.0. 考察绕过方法
>
> web354 - 域名绕过
>
> web355 - 域名长度限制-5
>
> web356 - 域名长度限制-3
>
> web357 - IP过滤
>
> web358 - 白名单正则
>
> web359 - Mysql未授权
>
> web360 - Redis未授权
CTFhub-SSRF技能树
同题目所说,该关卡没有任何过滤,主要用于熟悉ssrf中用到的各种协议。
这里我们先讲 file:// 也就是file协议,其用法为 file://+file_path 该协议会输出对应文件的内容。
在ssrf攻击所在的内网中,其主要用于一部分信息的收集:
作为一个CTF题目,该关卡要求你通过file协议(file://)来读取位于根目录的flag文件(/flag)。
所以只需要在扫描框中输入 file:///flag 即可。
在 ssrf 中,除了file协议,我们还会讲到下面几个:
dict / ftp 协议
ftp 在SSRF中也常用于端口扫描,在遇到打开的端口时,响应速度会明显变慢。
dict协议用于访问字典服务资源,可用于内网端口探测,响应速度较快。
此外 dict 在 ssrf 中还可以用来攻击redis服务,这些我们会在后面遇到。
gopher 协议
gopher协议支持发出GET、POST请求,是ssrf利用中最强大的协议。
http 协议 - 超文本传输协议,因特网最常见的协议,可以直接用于发起get请求。
sftp / tftp 协议 - 更安全的文件传输协议 / 简单文件传输协议。
ldap 协议 - 轻量级目录访问协议用于访问和操作目录服务。
前面说到 dict可用于内网端口探测,但不是所有的端口都可以被探测,一般只能探测出一些带 TCP 回显的端口(或者一些有响应时间的端口),一般使用 BurpSuite 的迭代器模式爆破,设置好要爆破的 IP 和 端口 即可批量探测出端口。
为了减小容器体积,该关卡并没有采用真实服务,而是使用Python模拟的方式,监听了10000内的5个端口:
81 8082 23 3309 6380 9001
并且每个模拟开放端口有2s的响应等待时间,Flag为每个开放端口的回显消息,这里设置1-10000的迭代器爆破筛选回显消息即可。
该关卡无Flag
演示关卡,你可以尝试不加_,直接这样去发送 gopher://127.0.0.1:81/TCP数据
然后你就会发现返回的数据丢了第一个字符,这就是为什么我们使用_占位。
如题目所示,题目主要考察如何使用 Gopher 来完成HTTP的请求操作。
以POST为例:
首先使用burpsuite去抓取一个 key=helloctf 的 http-post 原始请求包:
移除压缩部分 - Accept-Encoding: gzip, deflate, br 后进行全字符URL编码:
<理论上要全字符URL编码,但是CyberChef的编码全部特殊字符也可以>
CyberChef
!image-810070
Burpsuite:
然后将对应编码后的字符放在 gopher:// 协议下数据流部分,如果只进行一次url编码可以使用题目的扫描框:
!image-424086
如果使用 burpsuite 就需要两次URL编码:
!image-959257
当然 GET 请求也可以使用对应的方法,过程同理,这里就不赘述了,只展示过程。
编造包 -> 删压缩 -> URL编码 -> 拼接
> ssrf打mysql看起来是18年的一个trick,估计是得益于后面安全性的升级,这个trick到现在也只停留在18年和ssrf靶场中(
>
> 即使在25年的今天去检索ssrf和sql,你依旧只能找到18年左右的文章,如果有现在的 —— 那多半是抄的18年那会的
>
> 不过还是翻出来一些有意思的底层,比如mysql协议分析.
>
> 一些推荐的文章:
>
> 【2018-01-10 Freebuf - 从一道CTF题目看Gopher攻击MySql】 - mysql协议分析部分应该是文章的精髓了
>
> 【2018-01-23 Seebug - SSRF To RCE in MySQL】 - 在检索资料的时候,发现一堆人都从这抄的((
设计中 —— 由于时效性,该关卡最主要应该展示偏向过程一点的,如协议的展示分析,MySQL协议的TCP相关结构和传输过程。
该关卡目前已经没太大实战价值,但希望各位能从中收获一些做题之外的东西。
开发语言:PHP
Star 数:63
该项目属于CTF思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕【Hello-CTF labs】新手向的ssrf靶场,从协议,场景,绕过等多个ssrf攻击的基础维度展开。展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | hello-ssrf - 【Hello-CTF labs】新手向的ssrf靶场,从协议,场景,绕过等多个ssrf攻击的基础维度 |
| 所属分类 | CTF思路 |
| 发布作者 | admin |
| 发布时间 | 2026-10-06 00:03:36 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 298 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |