目录
上传文件
gopher协议的工作原理:
gopher协议的使用方法:
相关例题:
FastCGI协议
FastCGI协议知识点
相关例题:
Redis协议
知识点:
相关例题
第一种方法
第二种方法
上传文件
gopher协议的工作原理:
用户在应用程序中输入一个 URL,应用程序解析该 URL,发现它使用的是 "gopher" 协议,应用程序将该请求转发到目标服务器,并将请求数据以 Gopher 格式发送,目标服务器接收到请求后,根据 Gopher 格式的指令执行相应的操作。gopher协议支持发出GET、POST请求:可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是ssrf利用中最强大的协议。
gopher协议的使用方法:
URL:gopher://<host>:<port>/<gopher-path>_TCP数据流
注意:如果发起post请求,回车换行需要使用%0D%0A,如果多个参数,参数之间的&也需要进行URL编码。
资料参考:SSRF之gopher协议深度解析-腾讯云开发者社区-腾讯云
相关例题:
1.像之前的操作一样,使用/?url=file:///var/www/html/flag.php来查看本地文件
2.根据flag.php中的内容,构造payload:?url=127.0.0.1/flag.php,发现上传文件页面没有上传按钮
3.在页面源代码中加入上传按钮的代码
4.使用bp抓包,将抓包的内容进行url编码
5.将第一次编码的内容中%0A换成%0D%0A,再进行编码
6.构造gopher协议,将编码的内容与gopher协议相结合,得到flag
FastCGI协议
FastCGI协议知识点
Fastcgi其实是一个通信协议,和HTTP协议一样,都是进行数据交换的一个通道。
HTTP协议是浏览器和服务器中间件进行数据交换的协议,浏览器将HTTP头和HTTP体用某个规则组装成数据包,以TCP的方式发送到服务器中间件,服务器中间件按照规则将数据包解码,并按要求拿到用户需要的数据,再以HTTP协议的规则打包返回给服务器。
类比HTTP协议来说,fastcgi协议则是服务器中间件和某个语言后端进行数据交换的协议。Fastcgi协议由多个record组成,record也有header和body一说,服务器中间件将这二者按照fastcgi的规则封装好发送给语言后端,语言后端解码以后拿到具体数据,进行指定操作,并将结果再按照该协议封装好后返回给服务器中间件。和HTTP头不同,record的头固定8个字节,body是由头中的contentLength指定
资料:CTFHUB--SSRF(中)--FastCGI协议\Redis协议 以及gopherus工具攻击_ctfhub redis协议-CSDN博客
Fastcgi协议分析 && PHP-FPM未授权访问漏洞 && Exp编写-CSDN博客
相关例题:
gopherus工具在kali安装:
git clone https://github.com/tarunkant/Gopherus.git
1.进入工具目录:cd Gopherus ,进入目录输入:./gopherus.py --exploit fastcgi
使用工具时一般第一行是目标服务器上的php文件,第二行是shell语句
输入index.php的目录(一般都有这个),即: /var/www/html/index.php
一般情况下我们输入ls查看根目录,输入ls /
2.对它进行一次url编码
3.把他放进url里得到以下内容,发现有关flag的文件
4.使用相同的方法,第二行用cat命令
5.再一次url编码
6.把他放进url,发现flag
Redis协议
知识点:
Redis协议,也被称为 RESP (Redis Serialization Protocol),它是一种简单的文本协议,用于在客户端和服务器之间操作和传输数据。
Redis 的客户端和服务端之间使用一个简单的文本协议进行通信,这个文本协议的格式如下:
请求(命令)
回复(命令的响应)
Redis 命令的格式是:"COMMAND KEY_NAME VALUE"。
资料:SSRF中Redis的利用_ssrf redis-CSDN博客
相关例题
第一种方法
1.输入命令:python2 gopherus.py --exploit redis,然后shell写入方式选择phpshell
2.将gopher协议url编码后将它加入url后面
3. 由于shell.php是使用get传参cmd为变量名,所以这里拼接 ?cmd=ls / 进行访问,发现有关flag的文件
4.使用cat命令,得到flag
第二种方法
1.输入一句话木马
2.进行url编码
3.使用蚁剑连接
4.找到flag