CTF gopher协议

本文通过实战案例,展示了如何利用SSRF漏洞和Gopher协议进行渗透测试,包括读取敏感文件、探测内网服务及利用SMTP服务反弹Shell的过程。文章深入分析了利用不同协议进行攻击的方法,并给出了具体的代码实现。

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

0x01 例题

这儿举例安恒的一道月题

tips:利用ssrf,gopher打内网

0x02 贴出代码

<?php
highlight_file(__FILE__);
$x = $_GET['x'];
$pos = strpos($x,"php");
if($pos){
        exit("denied");
}
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"$x");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($ch);
echo $result;

0x03分析过程

首先x我们可以控制,
x可利用的协议有gopherdicthttphttpsfile
file协议可以用于查看文件
dict协议可以用于刺探端口
gopher协议支持GET&POST请求,常用于攻击内网ftpredistelnetsmtp等服务,还可以利用gopher协议访问redis反弹shell

首先我们利用file读取文件

先上脚本扫描一下目录,得到flag.php
一般我们还可以读取/etc/hosts/etc/passwd~/.bash_history等文件查看线索

但是代码中有strpos的限制(利用%2570绕过)

最后我们读取/var/www/html/flag.php时发现线索
在这里插入图片描述
继续读取/etc/hosts得到一个内网地址
在这里插入图片描述
这儿我们得到内网段,我们可以继续扫描,发现只有172.18.0.1|2|3可以访问。
http://101.71.29.5:10012/?x=http://172.18.0.2的返回结果如下图,存在LFI漏洞。
在这里插入图片描述
这只是80端口的结果,接下来我们看看其他端口的开放情况,可以看到,25端口也开放了,25对应的就是smtp服务。
在这里插入图片描述于是可以联想到利用gopher协议打smtp,然后再结合之前发现的LFI漏洞,得出这样的思路
利用gopher打smtp,在日志文件中留下一句话木马,然后用LFI包含日志文件获取webshell
思路清晰了后,就开始执行了,先用gopherus脚本生成payloadgopherus地址:https://github.com/tarunkant/Gopherus,里面有详细用法。


在这里插入图片描述

将127.0.0.1:25改为内网地址,然后url编码发送过去

然后我们利用包含日志文件
于是我们现在可以去找smtp的日志文件位置了,一般来讲linux中的邮件日志文件路径为

  • /var/log/maillog
  • /var/log/mail.log
  • /var/adm/maillog
  • /var/adm/syslog/mail.log

在这里插入图片描述
然后我们直接连接菜刀查看flag

0x04 总结

1、https://bugs.php.net这是一个包含php漏洞的网址

例如我们可以利用谷歌语法搜索
site: [https://bugs.php.net](https://bugs.php.net) strpos

2、ssrf一般先探测主机,然后探测端口,找到对应服务,再利用相应的payload

0x05 链接

复现的题目的时候,环境关了,所以直接用了另外一名师傅的writeup图片,这儿贴出链接,见谅!
链接

### HTTP基本认证的实现方式 HTTP基本认证是一种简单的身份验证机制,客户端通过请求头中的`Authorization`字段传递用户名和密码给服务器。这种认证方式通常用于保护资源免受未授权访问。 #### 认证流程 当客户端尝试访问受保护的资源时,如果未提供有效的凭证,服务器会返回状态码 `401 Unauthorized` 并附带一个 `WWW-Authenticate` 头部,指示需要进行基本认证[^1]。 随后,客户端会在后续请求中,在头部加入如下形式的内容: ```http GET /protected/page.html HTTP/1.1 Host: example.com Authorization: Basic dXNlcjE6cGFzczE= ``` 其中,`Basic dXNlcjE6cGFzczE=` 是经过 Base64 编码后的字符串,表示用户名和密码组合(例如:`username:password` 被编码为 `dXNlcjE6cGFzczE=`)。 #### 在CTFHub上的应用实例 在 CTFHub 的靶场环境中,SSRF漏洞练习场景可能会涉及 HTTP 基本认证的应用。例如,攻击者可以通过伪造带有有效认证信息的请求来访问目标系统的内部服务或接口[^2]。 假设存在一个内网服务 `/internal/api/data` 受到 HTTP 基本认证保护,则可以构造如下请求模拟合法用户的访问行为: ```http GET http://localhost/internal/api/data HTTP/1.1 Host: localhost Authorization: Basic YWRtaW46MTIzNDU2 ``` 这里的 `YWRtaW46MTIzNDU6` 对应的是用户名 `admin` 和密码 `123456` 的 Base64 编码结果。 #### 利用 Gopher 协议发送 POST 请求 某些情况下,为了进一步测试 SSRF 或其他类型的漏洞,可能需要用到更复杂的协议支持。比如,Gopher 协议会允许构建自定义数据包并提交至指定端口。以下是基于 Gopher 协议的一个简单例子,展示如何向远程主机发送 POST 数据[^3]: ```plaintext gopher://target_host:port/_POST /path/to/resource HTTP/1.1%0D%0AHost:%20example.com%0D%0AAuthorization:%20Basic%20YWRtaW46MTIzNDU2%0D%0AContent-Type:%20application/x-www-form-urlencoded%0D%0AContent-Length:%2013%0D%0A%0D%0Aparam=value ``` 此 URL 将执行一次标准的 HTTP POST 请求操作,并附加必要的认证令牌以及表单参数。 --- ### 相关工具与技术扩展 对于实际渗透测试过程中遇到的安全设备检测问题,可考虑使用专门设计用来分析 Web 应用防火墙 (WAF) 类型及其配置特性的开源项目——WAFW00f 工具来进行辅助判断[^4]。另外,针对跨域资源共享限制条件下发起反向代理连接的需求,也可以参考 rebinder 技术方案完成动态 DNS 解析绑定处理[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值