当前位置: 首页 > news >正文

SSRF4 SSRF-gopher 协议扩展利用-向内网发起 GET/POST 请求

一.Gopher简介

       Gopher在HTTP协议前是非常有名的信息查找系统,但是WWW万维网出现之后 Gopher逐渐

没落,但是在SSRF漏洞中Gopher协议让洞利用更加灵活,利用此协议可以对

ftp,memcache,mysql,telnet,redis,等服务进行攻击,可以构造发送GET,POST请求包。

二.Gopher协议语法的格式

        gopher://<host>:<port>/<gopher-path>/_后面接 TCP 数据流,这里千万注意这个标红的下划

线,为什么呢我们进行一个小实验就知道了:

准备两台kali:我一台:192.168.112.155    另一台:192.168.112.128

首先用192.168.112.128进行监听4444端口:

然后用192.168.112.155发送gopher协议请求:

curl gopher://192.168.1.53:4444/abcd

然后我们查看192.168.112.128所接收到的数据:

发现只有bcd,可我们传递的明明是abcd,a为什么不见了?

因为默认"/"后的第一个字符无效,所以不能在第一个字符那里传递数据。

一般我们可以在"/"后面添加一个下划线"_"代替舍去。

三.Gopher 发送 GET 请求

首先我们写一个简单的get页面:

我们访问:

http://192.168.112.12/get.php

下面我们用burpsuite 获取 get 请求数据包:

我们只需要提取前两行:

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

Host: 192.168.112.12

进行URL编码:GET%20%2Fget.php%3Fname%3Dfree%20HTTP%2F1.1%0AHost%3A%20192.168.112.12

注意我们在URL编码时有以下规则:

       1.我们要在前面加上"_",我们上面已经提到过第一个字符会被吃掉。

       2.空格以及冒号换行等特殊字符需要转换为 URL 编码,注:/不要进行 URL 编码,换行符通过

工具在进行 URL 编码时会被编码成%0A,但是在 HTTP 请求中正确的换行符应该是%0D%0A,所

以工具编码后需要手工替换%0A 为%0D%0A,并且在 HTTP 请求也需要以%0D%0A 来作为结

尾。

所以经过以上规则加工后的gopher请求为:

gopher://192.168.112.12:80/GET%20%2Fget.php%3Fname%3Dfree%20HTTP%2F1.1%0D%0
AHost%3A%20192.168.112.12%0D%0A

          然后我们用kali:

curl gopher://192.168.112.12:80/GET%20%2Fget.php%3Fname%3Dfree%20HTTP/1.1%0D%0AHost%3A%20192.168.112.12%0D%0A          

就可以看到完整的get请求了。

四.Gopher 发送 POST 请求

首先创造post请求页面

依旧访问http://192.168.112.12/post.php

可以看到一切正常:

然后我们依旧利用burpsuite 获取 post 请求数据包。

POST 数据包必须要有的 5 行配置,GET 只需要前两行,但是为了方便我们就全部把POST都编

码了,这里我们用一个python脚本进行编码:

import urllib.parse

req =\

"""POST /post.php HTTP/1.1

Host: 192.168.1.53

Content-Length: 9

Content-Type: application/x-www-form-urlencoded

name=free

"""

#对空格、冒号、换行等特殊符号进行url编码

xuegod = urllib.parse.quote(req)

#将换行符替换为%0D%0A

new = xuegod.replace('%0A','%0D%0A')

#result = '_'+urllib.parse.quote(new)

#在结果前面添加_gopher会吃掉第一个字符。

result = '_'+new

#打印编码后的请求

print(result)

我们把他放在kali里:注意将我们bp抓到的post请求体放在"""后面:

然后python gopher.py就得到编码后的了:

然后我们进行拼接

gopher://192.168.112.12:80/****

再在kali中进行curl gopher://192.168.112.12:80/****

然后我们就得到了一个完整的请求头和结果。

相关文章:

  • Java中间件使用方式与实战应用
  • 基于深度学习的智能文本摘要系统:技术与实践
  • 【音视频】SIP基础、搭建服务器和客户端
  • uniapp 配置devserver代理
  • P6 QT项目----汽车仪表盘(6.4)
  • C++ vector深度剖析与模拟实现:探索模板的泛型应用
  • 腾讯云国际站缩容:策略、考量与实践
  • 智慧园区建设资料合集(Wordppt原件)
  • Spring Boot 中的条件装配:@Conditional 系列注解详解
  • 答辩讲解387基于Spring Boot的心理健康管理系统
  • 【Python系列PyCharm实战】ModuleNotFoundError: No module named ‘sklearn’ 系列Bug解决方案大全
  • Windows Server系统只有命令行不显示桌面的解决方法
  • 【超详细】讯飞智能车PC电脑烧录指南(高级系统部署与恢复)
  • LDPC码校验矩阵和生成矩阵的生成
  • Java在IDEA中终端窗口输出正常,但打包成JAR后中文乱码问题
  • 《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- 实战基于CSI2 Rx 构建高性能摄像头输入系统
  • 51c嵌入式~电路~合集2
  • 【沉浸式解决问题】优化MySQL中多表union速度慢的问题
  • 数字化零售如何全面优化顾客体验
  • 深度融合数智化,百胜软件联合华为云加速零售行业转型升级
  • 什么叫商城网站/山西搜索引擎优化
  • 怎么做网站板块/近10天的时事新闻
  • zencart网站备份/郑州seo外包公司哪家好
  • 网站建设投标文件范本/网页设计排版布局技巧
  • 代做设计网站/长沙网站seo推广
  • 深圳做地铁的公司网站/宁海关键词优化怎么优化