Web攻防—SSRF服务端请求伪造Gopher伪协议无回显利用

前言

重学Top10的第二篇,希望各位大佬不要见笑。

SSRF原理

SSRF又叫服务端请求伪造,是一种由服务端发起的恶意请求,SSRF发生在应用程序允许攻击者诱使服务器向任意域或资源发送未经授权的请求时。服务器充当代理,执行攻击者构造的恶意请求,可能导致内部系统暴露或敏感数据泄露。

举个例子,比如这里的百度图片可以通过输入的图片的链接去获取相对应图片,那么假如我把图片链接换成http:\\127.0.0.1:80那么服务器就是去请求它本地的80端口,简单来说有一些网站功能可以去访问指定ULR的资源,而这些URL一旦变成内网地址或者本地地址,从而可以进行本地或者内网服务探测,这就是SSRF漏洞。

 这里是我本地写的一个远程图片加载器,可以通过图片地址加载图片。

然后把图片地址换为http:127.0.0.1:80可以看到是能成功探取到80端口的服务的,因为我80端口没有部署东西,所以显示403了。

常见伪协议

http://  Web常见访问,如http://127.0.0.1、http://127.0.0.1:8080等

file:///  从文件系统中获取文件内容,如,file:///etc/passwd、file:///D:/1.txt

dict://  字典服务器协议,访问字典资源,如,dict:///ip:6379/info

sftp:// SSH文件传输协议或安全文件传输协议

ldap:// 轻量级目录访问协议

tftp:// 简单文件传输协议

gopher:// (常用)分布式文档传递服务,可使用gopherus生成payload 有部分服务是http协议不支持通讯的,那么可以用gopher来进行通讯(如mysql,redis服务等)应用:漏洞利用 或 信息收集 通讯相关服务的时候 工具:Gopherus

SSRF绕过

-限制为必须有http://www.xxx.com 域名
采用http基本身份认证的方式绕过,即@
http://www.xxx.com@www.xxyy.com

-限制请求IP不为内网地址
当不允许ip为内网地址时:
(1)采取短网址绕过                                                                                                                (2)采取域名解析
(3)采取进制转换
(4)采取3XX重定向

白盒审计

我们来看一下CTF中这种白盒审计中,怎么利用以及绕过呢。

第一题没啥过滤,直接读取即可。

第二题可以看到过滤了127.0.0和localhost。

直接把127.0.0.1转换为16进制的IP地址即可。

接下来这个过滤了1,0,localhost,那么再转16进制肯定是不行了。

我们可以生产一个短链接来代替http://127.0.0.1/flag.php。

但是不知道为啥我这里啥也没有,如果被过滤掉了会输出hacker的,估计是解析失败了。

还有一种方法是往域名里面添加个A记录,指向127.0.0.1,那么服务器在解析域名的时候其实就是访问了127.0.0.1。(由于自己没有域名,所以图片网上找的)

这一关限制host长度小于等于5,直接用127.1代替127.0.0.1即可。

这一关限制IP长度为3,直接用http://0/flag.php即可。

这题和上面就不太一样了,先是解析我们的IP并且输出,接着做如下判断

  • ILTER_VALIDATE_IP​​:验证是否为合法IP格式
  • ​FILTER_FLAG_NO_PRIV_RANGE​​:排除私有IP范围(如10.0.0.0/8192.168.0.0/16
  • ​FILTER_FLAG_NO_RES_RANGE​​:排除保留IP范围(如127.0.0.0/8169.254.0.0/16

也就是说无论你怎么变,只要解析出来的IP是127.0.0.1都不行,那么绑定域名和进制转换这种肯定不行了,因为你解析出来的IP都是127.0.0.1。那么此时我们可以用到重定向这个方法,把下面这个代码放到公网服务器上面,然后去请求它,当这个脚本被请求了就会自动跳到127.0.0.1,从而实现绕过。

<?php
header("Location:http://127.0.0.1/flag.php"); 
其作用是:当执行该脚本时,会直接跳转到对应的网址,即Location: 后面的网址。

同时我们也可以通过生成一个短链接来绕过,原理是一样的。

这题可以看到url中必须要含有ctf,show这两个东西才行。

直接用/ctf.@127.0.0.1/flag.php#show进行绕过,#符号后面的内容不解析,这里我猜测@前面的也不解析。

这一关题目提示了是mysql服务。

可以看到请求的参数中有url类型的,我们利用Gopher协议打一波。

可以利用gopherus这项目,生产一个利用连,这里我选择写入一句话代码。

这里记得把下面的内容进行URL编码一下,不然传过去解码就没了。

执行之后成功上传。

这题就是打redis和mysql其实差不多的。

运行脚本,类型我们选择PHPShell,网站路径的话一般都是默认即可,写上一句话木马就会生成一个利用链条,和上面一样gopher://127.0.0.1:6379/_后面的进行URL编码。

python gopherus.py --exploit redis

黑盒审计

黑盒审计的话找可能存在SSRF漏洞的功能点。

-业务功能点
1.社交分享功能:获取超链接的标题等内容进行显示
2.转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
3.在线翻译:给网址翻译对应网页的内容
4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片
5.图片/文章收藏功能:主要其会取URL地址中title以及文本的内容作为显示以求一个好的用具体验
6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试
7.网站采集,网站抓取的地方:一些网站会针对你输入的url进行一些信息采集工作
8.数据库内置功能:数据库的比如mongodb的copyDatabase函数
9.邮件系统:比如接收邮件服务器地址
10.编码处理, 属性信息处理,文件处理:比如ffpmg,ImageMagick,docx,pdf,xml处理器等
11.未公开的api实现以及其他扩展调用URL的功能:可以利用google 语法加上这些关键字去寻找SSRF漏洞

像一些PDF转换或者PDF在线编辑的地方也会存在,添加个空白的PDF,然后写上JS代码。

点击保存应用,在dnslog这里可以看到记录。

SSRF无回显

还有一个就是无回显问题,这个其实也简单,我们获取一个dnslog地址通过SSRF去请求这个地址看其有无记录不就可以了,还有一个方法就是公网服务器监听一个端口,然后通过SSRF去请求这个端口,看看有无被请求到即可判断是否存在SSRF。

总结

最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76541.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hibernate:让对象与数据库无缝对话的全自动ORM框架

一、为什么需要全自动ORM&#xff1f; 在手动编写SQL的时代&#xff0c;开发者需要在Java代码和数据库表之间来回切换&#xff1a; // Java对象 public class User {private Long id;private String name;// getters and setters }// SQL语句 SELECT * FROM user WHERE id ?…

C语言超详细指针知识(一)

通过前面一段时间C语言的学习&#xff0c;我们了解了数组&#xff0c;函数&#xff0c;操作符等的相关知识&#xff0c;今天我们将要开始进行指针的学习&#xff0c;这是C语言中较难掌握的一个部分&#xff0c;一定要认真学习&#xff01;&#xff01;&#xff01; 1.内存与地址…

程序化广告行业(70/89):ABTester系统助力落地页优化实践

程序化广告行业&#xff08;70/89&#xff09;&#xff1a;ABTester系统助力落地页优化实践 在程序化广告领域摸爬滚打多年&#xff0c;深知持续学习和知识共享的重要性。写这篇博客&#xff0c;就是希望能和大家一起深入探索程序化广告行业&#xff0c;共同学习、共同进步。今…

项目管理(高软56)

系列文章目录 项目管理 文章目录 系列文章目录前言一、进度管理二、配置管理三、质量四、风险管理五、真题总结 前言 本节主要讲项目管理知识&#xff0c;这些知识听的有点意思啊。对于技术人想创业&#xff0c;单干的都很有必要听听。 一、进度管理 二、配置管理 三、质量 四…

常见的后缀名

.exe .exe&#xff08;“executable”&#xff08;可执行的&#xff09;&#xff09;是 Windows 操作系统中最常见的可执行文件扩展名。此类文件包含了计算机能够直接运行的机器码指令。当用户双击 .exe 文件时&#xff0c;操作系统会读取其中的指令并执行相应的程序或任务。…

XILINX DDR3专题---(1)IP核时钟框架介绍

1.什么是Reference Clock&#xff0c;这个时钟一定是200MHz吗&#xff1f; 2.为什么APP_DATA是128bit&#xff0c;怎么算出来的&#xff1f; 3.APP &#xff1a;MEM的比值一定是1:4吗&#xff1f; 4.NO BUFFER是什么意思&#xff1f; 5.什么情况下Reference Clock的时钟源可…

Doris 安装部署、实际应用及优化实践:对比 ClickHouse 的深度解析

在实时分析、报表系统以及高并发 OLAP 查询等场景中&#xff0c;列式存储数据库因其卓越的查询性能逐渐成为主流。Doris 和 ClickHouse 是近年来最受欢迎的两款开源 OLAP 引擎&#xff0c;本文将系统介绍 Doris 的安装部署、应用场景及优化实践&#xff0c;并与 ClickHouse 做一…

OracleLinuxR5U5系统重启后启动数据库oracle23ai

1、切换到oracle用户 [rootOracleLinux-R9-U5 ~]# su oracle2、查看oracle是否配置了ORACLE_SID [oracleOracleLinux-R9-U5 root]$ cd ~ [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile3、输出内容如下&#xff1a; [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile # .ba…

【正点原子】STM32MP257 同构多核架构下的 ADC 电压采集与处理应用开发实战

在嵌入式系统中&#xff0c;ADC模拟电压的读取是常见的需求。如何高效、并发、且可控地完成数据采集与处理&#xff1f;本篇文章通过双线程分别绑定在 Linux 系统的不同 CPU 核心上&#xff0c;采集 /sys/bus/iio 接口的 ADC 原始值与缩放系数 scale&#xff0c;并在另一个核上…

电商用户购物行为分析:基于K-Means聚类与分类验证的完整流程

随着电商行业的快速发展,用户行为分析成为企业优化营销策略、提升用户体验的重要手段。通过分析用户的购物行为数据,企业可以挖掘出用户群体的消费特征和行为模式,从而制定更加精准的营销策略。本文将详细介绍一个基于Python实现的电商用户购物行为分析系统,涵盖数据预处理…

AMGCL库的Backends及使用示例

AMGCL库的Backends及使用示例 AMGCL是一个用于解决大型稀疏线性方程组的C库&#xff0c;它提供了多种后端(backends)实现&#xff0c;允许用户根据不同的硬件和性能需求选择合适的计算后端。 AMGCL支持的主要Backends 内置Backends: builtin - 默认的纯C实现block - 支持块状…

Express中间件(Middleware)详解:从零开始掌握(3)

实用中间件模式25例 1. 基础增强模式 请求属性扩展 function extendRequest() {return (req, res, next) > {req.getClientLanguage () > {return req.headers[accept-language]?.split(,)[0] || en;};next();}; } 响应时间头 function responseTime() {return (r…

05--MQTT物联网协议

一、MQTT的概念 MQTT 协议快速入门 2025&#xff1a;基础知识和实用教程 | EMQ 1.MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级、基于发布-订阅模式的消息传输协议&#xff0c;适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它…

数据结构与算法——链表OJ题详解(2)

文章目录 一、前言二、OJ续享2.1相交链表2.2环形链表12.2环形链表2 三、总结 一、前言 哦了兄弟们&#xff0c;咱们上次在详解链表OJ题的时候&#xff0c;有一部分OJ题呢up并没有整理完&#xff0c;这一个星期呢&#xff0c;up也是在不断的学习并且沉淀着&#xff0c;也是终于…

SQL Server AlwaysOn (SQL 查询数据详解及监控用途)

修正后的完整查询 SELECT ar.replica_server_name AS [副本名称],ar.availability_mode_desc AS [同步模式],DB_NAME(dbr.database_id) AS [数据库名称],dbr.database_state_desc AS [数据库状态],dbr.synchronization_state_desc AS [同步状态],dbr.synchronization_health_d…

力扣热题100刷题day63|49.字母异位词分组

目录 一、哈希表相关理论 二、思路 核心思路 三、相关题目 四、总结 一、哈希表相关理论 代码随想录刷题day15|&#xff08;哈希表篇&#xff09;242.有效的字母异位词、383.赎金信-CSDN博客 二、思路 首先&#xff0c;创建一个map集合&#xff0c;遍历字符串数组&…

爱普生可编程晶振SG8201CJ和SG8200CJ在胃镜机器人发挥重要作用

在医疗机器人技术高速发展的今天&#xff0c;胃镜机器人作为胃肠道疾病诊断与治疗的创新设备&#xff0c;正逐渐改变传统诊疗模式。其复杂精密的系统需要精准的时间同步与稳定的信号输出&#xff0c;胃镜机器人是一种先进的医疗设备&#xff0c;用于无创性地检查胃部疾病。与传…

Ubuntu22环境下,Docker部署阿里FunASR的gpu版本

番外: 随着deepseek的爆火,人工智能相关的开发变得异常火爆,相关的大模型开发很常见的agent智能体需要ASR语音识别的功能,阿里开源的FunASR几乎是把一个商业的项目放给我们使用了。那么我们项目中的生产环境怎么部署gpu版本的语音识别服务呢?经过跟deepseek的一上午的极限…

图解Java设计模式

1、设计模式面试题 2、设计模式的重要性 3、7大设计原则介绍 3.1、单一职责原则

transformers的 pipeline是什么:将模型加载、数据预处理、推理等步骤进行了封装

transformers的 pipeline是什么:将模型加载、数据预处理、推理等步骤进行了封装 pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=50 )pipeline :这是 transformers 库中一个非常实用的工具函数。它可以基于预训练模型快速构…