【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.mzph.cn/diannao/41746.shtml

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

相关文章

w3wp.exe 中发生未处理的 Microsoft ,NETFramework 异常。

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

Spring 6.1.10版本源码编译

每篇一句 我们对时间的感知其实非常主观,我们越习惯于我们的生活方式,生活里面的新鲜感就越少,我们对时间 的感知就越快,生命就越短。 1.源码下载 进入Spring官网 https://spring.io/ 按照上图步骤进入如下Spring Framework链…

罗剑锋的C++实战笔记学习(二):容器、算法库、多线程

4、容器 1)、容器的通用特性 所有容器都具有的一个基本特性:它保存元素采用的是值(value)语义,也就是说,容器里存储的是元素的拷贝、副本,而不是引用 容器操作元素的很大一块成本就是值的拷贝…

RAG 工业落地方案框架(Qanything、RAGFlow、FastGPT、智谱RAG)细节比对!CVPR自动驾驶最in挑战赛赛道,全球冠军被算力选手夺走了

RAG 工业落地方案框架(Qanything、RAGFlow、FastGPT、智谱RAG)细节比对!CVPR自动驾驶最in挑战赛赛道,全球冠军被算力选手夺走了。 本文详细比较了四种 RAG 工业落地方案 ——Qanything、RAGFlow、FastGPT 和智谱 RAG,重…

git push之后回滚到某个版本

背景 因为粗心在主分支上修改了代码,push了上去,污染了主分支,希望将主分支之后的修改回滚,包括提交记录,就是远程的记录中回到希望回到的版本,保持干净。 git push -f 可以做到,会冲掉所有的…

SwiftUI 6.0(iOS 18.0)滚动视图新增的滚动阶段(Scroll Phase)监听功能趣谈

何曾几时,在 SwiftUI 开发中的秃头小码农们迫切需要一种能够读取当前滚动状态的方法。 在过去,他们往往需要借助于 UIKit 的神秘力量。不过这一切在 SwiftUI 6.0 中已成“沧海桑田”。 在本篇博文中,您将学到如下内容: 1. Scroll…

一份适合新手的软件测试练习项目

最近,不少读者托我找一个能实际练手的测试项目。开始,我觉得这是很简单的一件事,但当我付诸行动时,却发现,要找到一个对新手友好的练手项目,着实困难。 我翻了不下一百个web网页,包括之前推荐练…

nginx的知识面试易考点

Nginx概念 Nginx 是一个高性能的 HTTP 和反向代理服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。 Nginx 专为性能优化而开发,性能是其最重要的考量指标,实现上非常注重效率&#…

C#用链表和数组分别实现堆栈

1.链表 实现栈的四个基本功能 入栈 出栈 长度 栈顶值 public class 基础 : MonoBehaviour {public class MyStack{//定义每一个元素的数据结构 //下一个元素 和 该元素的值public class StackData{public StackData next;public object data;public StackData(StackData next,…

linux驱动编程 - kfifo先进先出队列

简介: kfifo是Linux Kernel里面的一个 FIFO(先进先出)数据结构,它采用环形循环队列的数据结构来实现,提供一个无边界的字节流服务,并且使用并行无锁编程技术,即当它用于只有一个入队线程和一个出…

nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点

目录 安装nginx配置nginx其它权限配置 安装nginx dnf install -y nginx配置nginx whereis nginxcd /etc/nginx llcd conf.d touch vhost.conf vim vhost.conf 命令模式下输入:set nu或:set number可以显示行号 复制如下内容: server {listen 80;server_name…

【0294】Postgres内核 dynahash 之 hash_search 实现原理

相关文章: 【0289】Postgres内核之哈希表(Hash Tables) 【0290】Postgres内核之dynahash(动态哈希表,dynamic hash tables)(概念篇) 【0291】Postgres内核之dynahash table 创建 【0292】Postgres内核源码之dynahash 插入entry实现 【0293】Postgres内核之创建 dynahas…

ESP32 通过蓝牙显示歌词代码示例

通过蓝牙协议播放音乐,有的时候需要显示歌词,这里就是a2dp库获取了歌词 值得注意的是要想正确获取到歌词,必须打开各种播放器的字幕(歌词)开关 本项目用了三个开源库 a2dp,tft_espi,xfont. a2dp &#x…

基于python实现的监听服务接口是否正常,发送异常消息到钉钉群

获取钉钉机器人 创建钉钉群组(要求至少三个成员)进入群组 设置>机器人>添加机器人选择自定义机器人 按照要求填写完获取到 Webhook的链接 实现代码 from time import sleep import requests import json from datetime import datetime import logging# 配置日志记录的…

数据结构第11节: B树

B树是一种自平衡的树数据结构,它能够保持数据排序,并且在插入、删除和查找操作中具有对数时间复杂度。B树广泛应用于文件系统、数据库和索引中,因为它们可以有效地处理大量数据。 B树的特点: 所有叶子节点都位于同一层。每个节点…

【】AI八股-神经网络相关

Deep-Learning-Interview-Book/docs/深度学习.md at master amusi/Deep-Learning-Interview-Book GitHub 网上相关总结: 小菜鸡写一写基础深度学习的问题(复制大佬的,自己复习用) - 知乎 (zhihu.com) CV面试问题准备持续更新贴 …

.net 调用海康SDK的跨平台解决方案

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔序言 上2篇海康SDK使用以及常见的坑…

PCL 点云PFH特征描述子

点云PFH特征描述子 一、概述1.1 概念1.2 算法原理一、代码实现二、结果示例一、概述 1.1 概念 点特征直方图PFH(Point Feature Histograms)描述子:用于表示点云中每个点的局部几何形状信息,它是一种直方图描述子,包括了点云的法线方向和曲率信息,PFH描述子可以帮助区分不同…

深入Django(八)

掌握Django的管理后台 引言 在前七天的教程中,我们介绍了Django的基础架构、模型、视图、模板、URL路由、表单系统以及数据库迁移。今天,我们将深入了解Django的管理后台,这是一个功能强大的内置管理界面,用于创建、更新、查看和…

【JavaEE精炼宝库】文件操作(1)——基本知识 | 操作文件——打开实用性编程的大门

目录 一、文件的基本知识1.1 文件的基本概念:1.2 树型结构组织和目录:1.3 文件路径(Path):1.4 二进制文件 VS 文本文件:1.5 其它: 二、Java 操作文件2.1 方法说明:2.2 使用演示&…