【SSRF】

SSRF (Server-Side Request Forgery 服务端请求伪造)

文章目录

        • 0x01 是什么?
        • 0x02 怎么判断是否存在SSRF漏洞?
        • 0x03 防御
        • 0x04 绕过手段

0x01 是什么?

是什么?
  答:攻击者构造请求,由服务端(向内网 / 目的url)发起各种请求的过程。

目的是什么?
   答:内网信息收集。渗透攻击

为什么存在?

原理:
大多是由于服务端提供了从自身/其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

可以做什么工作?

  
1.进行端口扫描,资源访问
2.指纹信息识别,访问相应的默认文件
3.利用漏洞或者和payload进一步运行其他程序
4.get类型漏洞利用,传参数实现攻击
5.post型漏洞利用,用gopher协议进行参数构造
6.拒绝服务攻击(访问大文件占用资源)
7.利用file协议,访问/下载
8进行跳板

0x02 怎么判断是否存在SSRF漏洞?

代码审查:对服务端的源代码进行审查,检查是否存在未经验证或过滤的请求函数。手动审查代码,查看是否所有URL输入都经过了验证。

抓包分析:通过抓包工具(如Wireshark、tcpdump等)分析发送的请求是否是由服务器端发送的。如果发现请求是由服务器端发起的,则可能存在SSRF漏洞。

页面源码检查:在页面源码中查找访问的资源地址。如果资源地址类型为www.baidu.com/xxx.php ?image=等形式,则可能存在SSRF漏洞。

使用自动化工具:使用SSRF漏洞检测工具(如SSRFire)来自动扫描和发现潜在的SSRF漏洞。这些工具可以帮助研究人员快速识别目标域名和服务器信息中的潜在漏洞。

DNS带外测试:在无回显的情况下,可以使用DNS带外测试工具(如DNSlog)来测试是否存在SSRF漏洞。

排除法:通过浏览器的开发者工具(F12)查看源代码,看是否是在本地进行了请求。如果资源地址类型为http://www.xxx.com/a.php ?image=等形式,则可能存在SSRF漏洞。

利用特定协议:通过利用file、gopher、dict等协议读取本地文件或执行命令,来探测是否存在SSRF漏洞。
如:
url=dict://192.168.1.1:80
url=file:///c:/1.txt
file= file:///c:/1.txt

0x03 防御

URL的限制和过滤:基于黑名单和白名单

限制协议为HTTP/HTTPS
禁止30X跳转
设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP
服务端开启OpenSSL无法交互利用
服务端需要认证交互
把用于取外网资源的API部署在不属于自己的机房
过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
限制请求的端口为http常用的端口,比如 80、443、8080、8090
统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
0x04 绕过手段

任何一种绕过,关键的问题都是“开发和测试的认知范围”问题,具体到SSRF则是对于IP和URL地址的编码和解析问题:

攻击本地:直接攻击本地系统,利用本地资源进行攻击。
利用[::]:使用IPv6地址中的双冒号“[::]”来绕过某些过滤机制。
利用@:通过在URL中添加“@”符号来绕过某些过滤器。		http://localhost/pikachu-master/vul/ssrf/ssrf_fgc.php
利用短地址:使用短地址服务来绕过URL长度限制。
利用特殊域名:使用特殊的域名或协议来绕过过滤器。
利用DNS解析:通过DNS解析来绕过某些过滤机制。
利用上传:通过上传文件来绕过某些过滤器。
利用Enclosed:通过将请求封装在特定格式中来绕过过滤器。
DNS欺骗:通过DNS欺骗来绕过某些过滤器。
使用进制编码:通过十六进制、八进制等编码方式来绕过过滤器。
添加端口:通过在URL中添加端口号来绕过某些过滤器。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Kubernetes】Pod 资源调度之亲和性调度

Pod 资源调度之亲和性调度 1.Node 亲和性调度1.1 Node 硬亲和性1.2 Node 软亲和性 2.Pod 亲和性调度2.1 Pod 硬亲和2.2 Pod 软亲和2.3 Pod 反亲和 Kubernetes 的 默认调度器 以 预选、优选、选定机制 完成将每个新的 Pod 资源绑定至为其选出的目标节点上,不过&#…

Javase-异常

文章目录 1. 异常概述2. 异常的继承结构3. 自定义异常4. 异常的处理5. 异常的使用6. finally语句块7. 方法覆盖与异常 1. 异常概述 什么是异常 ①什么是异常?有什么用? 1.Java中的异常是指程序运行时出现了错误或异常情况,导致程序无法继续正常执行的现象。例如&…

【CG】计算机图形学(Computer Graphics)基础(其壹)

0 学习视频 B站GAMES101-现代计算机图形学入门-闫令琪 1 什么是计算机图形学 1.1 什么是好的画面? 画面足够亮。如果全局光照做的好,整个画面就会亮,看起来很舒服。 1.2 计算机图形学涉及到的领域 数学(透视)投影…

java基础:面向对象(一)

一、概念 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。面向对象适合处理复杂的问题,适合处理需要多人协作的问题!对于描…

vulhub靶场之DEVGURU:1

1 信息收集 1.1 主机发现 arp-scan -l 发现主机IP地址为“192.168.1.11 1.2 端口发现 nmap -sS -sV -A -T5 -p- 192.168.1.11 发现端口为:22,80,8585 1.3 目录扫描 dirsearch -u 192.168.1.11 发现存在git泄露 2 文件和端口访问 2…

idea中没有显示‘‘Spring‘‘一栏 (已解决)

第一步: 随便找一个Bean(即直接或者间接使用Component的类) 第二步: 找到左边的图标, 右键这个图标, 然后选择如下选项: 第三步: 成功 然后就成功了, 可以看到具体的bean了以及其bean的关系图等.

MySQL的Geometry数据处理之WKB方案

MySQL的Geometry数据处理之WKT方案:https://blog.csdn.net/qq_42402854/article/details/140134357 MySQL的Geometry数据处理之WKT方案中,介绍WTK方案的优点,也感受到它的繁琐和缺陷。比如: 需要借助 ST_GeomFromText和 ST_AsTex…

主从复制原理及操作

主从复制的概念 主从复制是一种在数据库系统中常用的数据备份和读取扩展技术,通过将一个数据库服务器(主服务器)上的数据变更自动同步到一个或多个数据库服务器(从服务器)上,以此来实现数据的冗余备份、读…

数据库之SQL(二)

目录 一、简述SQL中如何将“行”转换为“列” 二、简述SQL注入 三、如何将一张表的部分数据更新到另一张表 四、WHERE和HAVING的区别 一、简述SQL中如何将“行”转换为“列” 我们以MySQL数据库为例,来说明行转列的实现方式。 首先,假设我们有一张分…

WAIC 2024:科技界的摇滚狂欢,你错过了什么?

大数据产业创新服务媒体 ——聚焦数据 改变商业 2024年7月5日,WAIC 2024举办的第二天。数据猿作为受邀媒体,在今天继续亲历这一场关于未来的盛会。在这片汇聚了全球顶尖科技力量的舞台上,见证了人工智能领域的最新成果,感受到了科…

Midjourney对图片细微调整和下载保存

点击v2是对第二图片细微调整。 点击u3对第3张图片进行放大。 保存图片: 对点击u3放大的图片,双击 , 右键保存图片

hdu物联网硬件实验3 按键和中断

学院 班级 学号 姓名 日期 成绩 实验题目 按键和中断 实验目的 实现闪灯功能转换 硬件原理 无 关键代码及注释 /* Button Turns on and off a light emitting diode(LED) connected to digital pin 13, when pressing a pushbutton attached…

招聘一个1-3年经验的Java工程师:企业视角的技能与素质要求

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

Spring的核心基础:感受一下对象工厂

“欢迎来到Spring!”的小项目 (1)写一个HelloSpring的类,采用setter方法注入userName,写一个简单的show方法。 package com.itzhoutao; public class HelloSpring{private String userName;public void setUserName…

Spring源码十一:事件驱动

上一篇Spring源码十:BeanPostProcess中,我们介绍了BeanPostProcessor是Spring框架提供的一个强大工具,它允许我们开发者在Bean的生命周期中的特定点进行自定义操作。通过实现BeanPostProcessor接口,开发者可以插入自己的逻辑&…

核心实验:基于Web前端的性能测试分析!

实验简介 本实验主要利用IE和Chrome的F12开发人员工具结合Web前端测试分析相关知识,对常见网站进行基于前端的性能测试分析,本实验将不会使用到测试开发相关技术,而是纯粹意义上的手工测试,但却是很容易找到系统前端性能及设计问…

AI行业的非零和博弈:解读Mustafa Suleyman的观点

引言 在人工智能(AI)领域,微软AI公司的CEO Mustafa Suleyman最近在阿斯彭思想节上的访谈引起了广泛关注。与CNBC记者Andrew Ross Sorkin的对话中,Suleyman不仅分享了他对OpenAI人事变动的看法,还深入探讨了AI行业的现…

2024年亚太中文赛数学建模竞赛B题 洪水灾害的数据分析与预测详细思路解析

2024年亚太中文赛数学建模竞赛B题 洪水灾害的数据分析与预测详细思路解析 解题方法: 首先就是对数据进行数据的预处理包括缺失值和异常值处理,之后就是分析哪些指标与洪水的发生有着密切的关联,可以使用相关性分析(建议使用斯皮尔…

InetAddress.getLocalHost().getHostAddress()阻塞导致整个微服务崩溃

InetAddress.getLocalHost().getHostAddress()阻塞导致整个微服务崩溃 import java.net.InetAddress;public class GetHostIp {public static void main(String[] args) {try {long start System.currentTimeMillis();String ipAddress InetAddress.getLocalHost().getHostA…

Python和MATLAB微机电健康推导算法和系统模拟优化设计

🎯要点 🎯惯性测量身体活动特征推导健康状态算法 | 🎯卷积网络算法学习惯性测量数据估计六自由度姿态 | 🎯全球导航卫星系统模拟,及惯性测量动态测斜仪算法、动态倾斜算法、融合算法 | 🎯微机电系统加速度…