所有文章 > 日积月累 > Gopher API Key 获取指南
Gopher API Key 获取指南

Gopher API Key 获取指南

Gopher协议是一种早期的互联网协议,用于在网络上获取文本信息。虽然它在现代互联网中的使用已经相对较少,但其仍然具有一些独特的应用价值,尤其是在特定环境下的资源获取和信息传输中。本文将深入探讨Gopher协议的应用,包括如何利用其API Key进行数据获取,并结合实际案例进行分析与演示。

Gopher协议的背景与原理

Gopher协议于1991年提出,旨在提供一种简单、高效的方式来浏览和访问文件。其设计类似于文件系统的层次结构,每个项目都有一个唯一的标识符。通过Gopher客户端软件,用户可以浏览目录并选择下载或查看文件。Gopher服务器可以提供文本文件、图像文件、二进制文件等。

与HTTP协议相比,Gopher协议具有更简单的设计和较少的功能,主要基于传输控制协议(TCP)进行通信,默认端口号为70。然而,随着万维网的崛起和HTTP的普及,Gopher协议逐渐被取代。尽管如此,Gopher协议在某些特定的网络环境中仍然具有一定的实用性。

Gopher协议的安全利用

利用Gopher协议可以攻击内网的Redis、Mysql、FastCGI、FTP等,也可以发送GET、POST请求,这可以拓宽SSRF的攻击面。通过构建特定的网络请求,可以在内网环境中执行一些特定的操作,例如获取API Key或进行数据库探测等。

构建攻击环境

在进行Gopher协议的安全测试时,通常需要搭建一个测试环境。一般使用两台虚拟机,一台运行CentOS,另一台运行Ubuntu。CentOS用于发起端口监听,而Ubuntu用于发起请求。

在CentOS上配置监听

首先,需要确保CentOS上安装了nc,如果没有可以通过以下命令安装:

apt-get install -y nc

接着,查看CentOS的IP地址,并确保Ubuntu可以ping通。然后启动监听,监听特定端口,例如9527端口:

nc -lp 9527

在Ubuntu上发起请求

在Ubuntu上,通过curl命令发起Gopher请求:

curl gopher://:9527/_abcd

在CentOS端,会收到abcd的响应,因为Gopher协议会吞掉第一个字符,所以需要在请求前添加一个下划线:

防火墙配置注意事项

如果请求不成功,可能是由于防火墙策略的问题。可以通过以下命令查看并关闭REJECT规则:

iptables -L INPUT --line-numbers
iptables -D INPUT 11

其中11为REJECT的ID。

GET请求与Gopher协议

使用Gopher协议进行GET请求需要特定的环境配置。一般情况下,CentOS发起端口监听,Ubuntu发起请求,前提是两者可以互相ping通,并关闭防火墙中的ICMP协议。

Docker环境配置

在CentOS上,开启Docker并启动LAMP环境(设置根目录为app):

docker run -d --name=lamp -p 80:80 -p 3306:3306 -v /app:/app docker.io/mattrayner/lamp

进入app目录,创建一个PHP文件:

touch get.php

在get.php中输入以下代码:

发起GET请求

CentOS启动监听后,在Ubuntu上书写一个GET的HTTP包,并进行URL编码。需要注意的是将回车换行替换为%0d%0a

GET /ssrf/get.php?name=hsj HTTP/1.1
Host:172.16.129.74

编码后:

GET%20%2Fssrf%2Fget.php%3Fname%3Dhsj%20HTTP%2F1.1%0d%0aHost%3A172.16.129.74%0d%0a

权限问题解决

在执行请求时,可能会遇到权限不足的问题。此时,可以通过以下步骤解决:

  1. 关闭LAMP:
docker stop lamp

  1. 删除容器:
docker rm lamp

  1. 重新挂载到root/www目录:
docker run -d -p 80:80 -v /root/www:/app --name ssrf docker.io/mattrayner/lamp

  1. 在www目录下创建get.php文件,并写入代码。

POST请求与Gopher协议

与GET请求类似,POST请求也需要在特定的环境下进行配置。创建post.php文件并插入以下代码:

构造POST数据包

构造POST请求的数据包如下:

POST /post.php HTTP/1.1
host:172.16.129.74
Content-Type:application/x-www-form-urlencoded
Content-Length:8

name=HXB

URL编码后:

POST%20%2Fpost.php%20HTTP%2F1.1%0d%0ahost%3A172.16.129.74%0d%0aContent-Type%3Aapplication%2Fx-www-form-urlencoded%0d%0aContent-Length%3A8%0d%0a%0d%0aname%3DHXB%0d%0a

通过curl命令发起请求:

curl gopher://172.16.129.74:80/_POST%20%2Fpost.php%20HTTP%2F1.1%0d%0ahost%3A172.16.129.74%0d%0aContent-Type%3Aapplication%2Fx-www-form-urlencoded%0d%0aContent-Length%3A8%0d%0a%0d%0aname%3DHXB%0d%0a

Gopher协议的现代应用与挑战

尽管Gopher协议在现代互联网中的使用已经减少,但其简单的设计和特定的应用场景仍然为其保留了一席之地。在某些情况下,Gopher协议可以作为一种较为隐蔽的通信方式,在不被注意的情况下完成数据传输和信息获取。

然而,随着网络安全的不断加强,Gopher协议的使用也面临着新的挑战。例如,现代网络防火墙和入侵检测系统可能会对Gopher协议的流量进行严格的监控和过滤。因此,在实际应用中,需要对其进行更为细致的配置和测试,确保其能够在特定环境下有效运行。

总结

Gopher协议作为一种早期的互联网协议,尽管在现代应用中使用较少,但其仍具有一定的技术价值。通过合理的配置和使用,Gopher协议可以在特定的网络环境中发挥独特的作用,尤其是在信息获取和数据传输方面。本文通过实际案例和代码演示,展示了如何利用Gopher协议进行GET和POST请求,同时探讨了其在现代网络中的应用与挑战。

FAQ

  1. 问:Gopher协议在现代互联网中的主要用途是什么?

    • 答:尽管Gopher协议在现代互联网中的使用较少,但在某些特定环境中,它可以作为一种较为隐蔽的通信方式,用于数据传输和信息获取。
  2. 问:如何在Gopher协议中实现GET请求?

    • 答:可以通过在服务器上配置监听,并在客户端构建并发送特定的HTTP GET请求实现。
  3. 问:Gopher协议与HTTP协议有何区别?

    • 答:Gopher协议设计较为简单,功能较少,主要用于文本信息的获取,而HTTP协议功能更为丰富,并在现代互联网中得到了更广泛的应用。
  4. 问:在Gopher协议中遇到权限问题如何解决?

    • 答:可以通过调整Docker容器的挂载目录和权限设置,确保服务可以正常运行和访问。
  5. 问:Gopher协议的安全利用有哪些注意事项?

    • 答:在进行安全测试时,需要注意防火墙的配置,确保测试环境中的网络流量不被阻断。
#你可能也喜欢这些API文章!