gopher协议发起GET/POST请求

gopher协议发起GET/POST请求Gopher 协议是一种早期的互联网协议 用于在网络上获取文本信息

gopher协议

Gopher协议使用类似于文件系统的层次结构来组织数据,其中每个项目都有一个唯一的标识符。通过Gopher客户端软件,用户可以浏览目录并选择下载或查看文件。Gopher服务器可以提供文本文件、图像文件、二进制文件等。

与HTTP相比,Gopher协议具有更简单的设计和较少的功能。它基于传输控制协议(TCP)进行通信,默认端口号为70。然而,随着万维网的崛起和HTTP的普及,Gopher协议逐渐被取代。

利用


利用gopher协议可以攻击内网的 Redis、Mysql、FastCGI、Ftp 等,也可以发送 GET、POST 请求,这可以拓宽 SSRF 的攻击面。
 

测试环境条件:

两台虚拟机,centos、ubuntu。

centos发起端口监听。

ubuntu发起请求。

centos:

如果没有nc,那么安装一个

 apt-get install -y nc

先查看centos的ip地址,测试ubuntu是否可以ping通。

启动监听,监听9527端口

 nc -lp 9527

ubuntu:

发起请求

  curl gopher://172.16.129.74:9527/_abcd

centos那边会有abcd的,因为会吞掉第一个字符,所以写一个_。

注意!

如果不成功。可能是防火墙的策略问题,关闭REJECT.

iptables -L INPUT --line-numbers

输入:

iptables -D INPUT 11

11为REJECT的id

然后开启监听,ubuntu进行访问输入。

GET请求

使用gopher协议,环境为:

centos发起端口监听。ubuntu发起请求。

条件前提:可以互相ping通、关闭防火墙里面的icmp协议。

(参考上文)

centos开启docker 启动lamp(这边设置的根目录是app)

docker run -d --name=lamp -p 80:80 -p 3306:3306  -v /app:/app docker.io/mattrayner/lamp(运行容器)

进入app写一个文件

touch get.php

在get.php里面输入:

<?php echo "hello".$_GET['name']; ?>

centos启动监听,监听9527端口

 nc -lp 9527

ubuntu发起get请求。

书写一个GET的HTTP包,进行URL编码。,并且将回车换行替换为%0d%0a

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

Host:172.16.129.74

url编码后:

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

并且将回车换行替换为%0d%0a结尾也要有。

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

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

 

提示权限不够。

关闭lamp

docker stop lamp

删除

 docker rm lamp

查看是否删除成功

 docker ps

 

开启挂载到root/www目录下面。

docker run -d -p 80:80 -v /root/www:/app --name ssrf docker.io/mattrayner/lamp

 

创建一个www的目录,写入一个文件

在防火墙里面将root/www设置成白名单。

输入:

 curl http://127.0.0.1/123.txt

成功访问。

 

然后就和上面步骤一样,在www目录下面设置一个get.php文件,使用vim写入代码

<?php echo "hello".$_GET['name']; ?>

 

写http包

GET /get.php?name=hsj HTTP/1.1

Host:172.16.129.74

URL编码

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

 

输入:

 curl gopher://172.16.129.74:80/GET%20%2Fget.php%3Fname%3Dhsj%20HTTP%2F1.1%0d%0aHost%3A172.16.129.74%0d%0a

POST请求

和get前提条件一样。

新建,post.php

插入。

保存,查看。

构造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-urTencoded%0d%0aContent-Length%3A8%0d%0a%0d%0aname%3DHXB%0d%0a

 

输入:

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=HXB%0d%0a

 curl gopher://172.16.129.74:80/_POST%20/post.php%20HTTP/1.1%0D%0Ahost:192.168.58.131%0D%0AContent-Type:application/x-www-form-urlencoded%0D%0AContent-Length:8%0D%0A%0D%0Aname=HSJ%0D%0A

 

今天的文章 gopher协议发起GET/POST请求分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-21 18:46
下一篇 2024-12-21 18:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/92368.html