gopher协议发起GET/POST请求

gopher协议


Gopher协议是一种早期的互联网协议,用于在网络上获取文本信息。它于1991年提出,旨在提供一种简单、高效的方式来浏览和访问文件。

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

 

  • 31
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值