【web渗透】SSRF漏洞超详细讲解

article/2025/8/11 23:10:34
SSRF漏洞
  • 一、原理简介
  • 二、漏洞形成的原因
  • 三、SSRF和CSRF的区别
  • 四、SSRF的攻击方式
  • 五、寻找漏洞的方法
  • 六、伪协议的介绍
  • * 1、ftp:// 协议
    
    • 2、Gopher://协议
    • 3、Dict:// 协议
  • 七、绕过姿势
  • 八、漏洞修复
  • * 1、防护措施
    
    • 2、最佳防护
  • 九、本章小结

一、原理简介

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

是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)

二、漏洞形成的原因

SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。

在这里插入图片描述

由于存在防火墙的防护,导致攻击者无法直接入侵内网;

这时攻击者可以以服务器为跳板发起一些网络请求,从而攻击内网的应用及获取内网数据。

三、SSRF和CSRF的区别

1、CSRF是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以利用用户的cookie信息伪造用户请求发送至服务器;

2、SSRF是服务器对用户提供的可控URL过于信任,没有对攻击者提供的URL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或者其它服务器

四、SSRF的攻击方式

1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;

2.攻击运行在内网或本地的应用程序(比如溢出);

3.对内网web应用进行指纹识别,通过访问默认文件实现;

4.攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);

5.利用file协议读取本地文件等。

在这里插入图片描述

五、寻找漏洞的方法

1.能够对外发起网络请求的地方,就可能存在SSRF漏洞

2.从远程服务器请求资源(Upload from URL,Import & Export RSS feed)

3.数据库内置功能(Oracle、MongoDB、MSSQL、Postgres、CouchDB)

4.Webmail收取其他邮箱邮件(POP3/IMAP/SMTP)

5.文件处理,编码处理,属性信息处理(ffpmg,ImageMaic,DOCX,PDF,XML处理器)

六、伪协议的介绍

1、ftp:// 协议

功能:

探测目标端口

实操:

如果目标未开放探测的端口,则会立马产生回显

在这里插入图片描述

如果对方开放了所探测的端口,页面将会一直处于加载中的状态

在这里插入图片描述

2、Gopher://协议

俗称万金油协议,可以任意的构造请求
payload:

gopher://192.168.5.111:80/_POST%20/aa.php%20HTTP/1.1%0d%0aHost:%20192.168.5.111:80%0d%0aUser-Agent:%20Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/103.0.5060.134%20Safari/537.36%20Edg/103.0.1264.77

在这里插入图片描述

此时可以查看到目标的信息

3、Dict:// 协议

功能:

探测主机信息

实操:

在这里插入图片描述
此时发现可以探测到目标的信息

七、绕过姿势

对于SSRF的限制大致有如下几种:

1、 限制请求的端口只能为Web端口,只允许访问HTTP和HTTPS的请求。

采用HTTP基本身份认证的方式绕过
即@: http://www.xxx.com@www.evil.com

2、限制域名只能为 http://www.xxx.com

采用无效的伪协议头,例:httpssssss://就会将他当做文件夹,然后再配合目录穿越即可读取文件

3、限制不能访问内网的IP,以防止对内网进行攻击。

可以采用短链接或者ip指向来解决

4、屏蔽返回的详细信息。

八、漏洞修复

1、防护措施

(1)过滤10.0.0.0/8 、172.16.0.0/12、192.168.0.0/16、localhost私有地址​、IPv6地址
(2)过滤file:///、dict://、gopher://、ftp:// 危险schema
(3)​对返回的内容进行识别
(4)内网服务开启鉴权​(Memcached, Redis, Elasticsearch and MongoDB)

2、最佳防护

(1)使用地址白名单
(2)对返回内容进行识别
(3)需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:
首先禁用CURLOPT_FOLLOWLOCATION;然后通过域名获取目标ip,并过滤内部ip;最后识别返回的内容是否与假定内容一致

九、本章小结

通过SSRF漏洞的学习,我发现SSRF漏洞果然比CSRF漏洞的利用的局限性要小,并且SSRF漏洞对内网的一些应用危害比较大。所以在开发过程中,警惕大家要尽量避免产生SSRF漏洞。

另外警惕大家,网络并非法外之地,大家要谨遵网络安全法,不要做违纪违规的事情!

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

网络安全学习资源分享:

最后给大家分享我自己学习的一份全套的网络安全学习资料,希望对想学习 网络安全的小伙伴们有帮助!

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

【点击领取】网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。【点击领取视频教程】

在这里插入图片描述

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取技术文档】

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取书籍】

在这里插入图片描述

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

在这里插入图片描述

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

!(https://img-blog.csdnimg.cn/8de5365b55fd4a929e0cef43c14ce512.png)
在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享


http://www.hkcw.cn/article/FvfSBIYxWc.shtml

相关文章

【M365运维】Sharepoint文档库无法编辑页面

【问题】 Sharepoint文档库设计开发人员反馈说,文档库页面左上角的“编辑页面”变灰了,无法使用。 另外,如果使用Sharepoint Designer去打开文档库链接,登录时会出现下面的提示。 【解决】 1、启用 Custom Script, 步骤&#xff1…

Spring Boot 整合 RabbitMQ 实现延迟消息

关于 RabbitMQ 消息队列(Message Queuing,简写为 MQ)最初是为了解决金融行业的特定业务需求而产生的。慢慢的,MQ 被应用到了更多的领域,然而商业 MQ 高昂的价格让很多初创公司望而却步,于是 AMQP&#xff0…

RabbitMQ Java客户端安装与配置指南

RabbitMQ Java客户端安装与配置指南 rabbitmq-java-client RabbitMQ Java client 项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-java-client 1. 项目基础介绍 RabbitMQ Java客户端是RabbitMQ消息队列系统的官方Java客户端库。它允许Java应用程序通过AMQP协议…

如何保证RabbitMQ消息的可靠传输?

在这个图中,消息可能丢失的场景是1,2,3 1.在生产者将消息发送给RabbitMQ的时候,消息到底有没有正确的到达服务器呢,RabbitMQ提供了两种解决方案: a. 通过事务机制实现(比较消耗性能&#xff0…

RabbitMQ3.9.13与ErLang24.2版本下载资源:消息队列与编程语言的最佳搭档

RabbitMQ3.9.13与ErLang24.2版本下载资源:消息队列与编程语言的最佳搭档 【下载地址】RabbitMQ3.9.13与ErLang24.2版本下载资源 本项目为开发者提供了RabbitMQ 3.9.13和ErLang 24.2的便捷下载资源,旨在简化开发环境搭建流程。资源文件经过精心整理&#…

RabbitMQ 工作模式使用案例之(发布订阅模式、路由模式、通配符模式)

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:RabbitMQ 📚本系列文章为个人学…

【RabbitMQ】路由模式和通配符模式的具体实现

文章目录 路由模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费者 通配符模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费…

【RabbitMQ】RabbitMQ配置与交换机学习

文章目录 简介安装和部署1. 安装RabbitMQ2.创建virtual-host3. 添加依赖4.修改配置文件 WorkQueues模型1.编写消息发送测试类2.编写消息接收(监听)类3. 实现能者多劳 交换机Fanout交换机1.消息发送2.消息监听 Direct交换机1.消息发送2.消息接收 Topic交换…

详解RabbitMQ工作模式之发布订阅模式

目录 发布订阅模式 概念 概念介绍 特点和优势 应用场景 注意事项 代码案例 引入依赖 常量类 编写生产者代码 编写消费者1代码 运行代码 发布订阅模式 概念 RabbitMQ的发布订阅模式(Publish/Subscribe)是一种消息传递模式,它允许消…

Java操作RabbitMQ

文章目录 Spring集成RabbitMQ1. AMQP&SpringAMQP2. SpringBoot集成RabbitMQ3. 模型work模型 4.交换机Fanout交换机Direct交换机Topic交换机 5.声明式队列和交换机基于API声明基于注解声明 6.消息转换器 Spring集成RabbitMQ 1. AMQP&SpringAMQP AMQP(高级消…

女龙队从佛山九江“扒”向世界 农村大妈划出国际范

临近端午,广东多地的河道里又开始热闹起来,特别是佛山地区的龙舟活动历史悠久。九江镇被誉为全国首个龙舟名镇,赛龙舟的传统已有300年历史。九江是典型的水乡,河网密布,几乎每个村子都有河流经过,划船出行是最便捷的交通方式。在村民眼中,龙舟不仅能聚人气,还能增强村里…

同济大学教授路秉杰逝世 建筑学界痛失“中国塔王”

著名建筑历史学家、建筑教育家路秉杰先生因病医治无效,于2025年5月29日在上海逝世,享年90岁。他生前是中国建筑学会史学分会原副理事长,同济大学建筑与城市规划学院教授及博士生导师。路秉杰出生于1935年,山东聊城人。他在中日两国建筑史、园林史以及中国伊斯兰教建筑等领域…

武汉警界科技精英万松因公牺牲 幕后英雄悄然离去

5月27日0时33分,湖北省武汉市公安局科技信息化支队警务技术四级主任万松因公牺牲,享年50岁。两天后的早晨,武昌殡仪馆告别大厅内庄严肃穆,花圈环绕,哀乐低回。他的遗属、生前亲友及同事百余人含泪忍悲,送别这位警界科技精英。5月26日早上7时30分,青年民警王国栋送完孩子…

UniGUI DBGrid 实现多选

设置unidbgrid属性添加多选框 Options —> dgRowSelect、dgCheckSelect、dgMultiSelect —> True 属性完成后,保存运行,unidbgrid前面就会出现多选框,多选时质检选中前面的多选框或者 shift鼠标左键 将两次点击范围内的数据全选 或是 c…

常见位运算总结

位运算 常见位运算总结位1的个数比特位计数汉明距离只出现一次的数字 常见位运算总结 位1的个数 191. 位1的个数 给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数(也被称为汉明重量&#xf…

离散化算法的二分法应用

我们思考一个问题:其实这里的二分法回归本源也是基于下标映射的原理,只是实现是借助二分的形式。 在排序好的数组中对目标数值进行二分搜索,在 O(logn) 的时间复杂度内找到该数值是整体数据中的第几个。 具体的我们可以如下操作: …

字节流操作:InputStream类 读取文件的操作(三种 read 方法)

字节流操作:InputStream类 和 OutputStream类 文章目录 字节流操作:InputStream类 和 OutputStream类观前提醒:InputStream类 读取文件的操作(三种 read 方法)1. 不带参数的 read( )方法,返回值是&#xff…

day13 leetcode-hot100-22(链表1)

160. 相交链表 - 力扣(LeetCode) 1.哈希集合HashSet 思路 (1)将A链的所有数据存储到HashSet中。 (2)遍历B链,找到是否在A中存在。 具体代码 /*** Definition for singly-linked list.* pu…

《在人间》葛铮:以无言演绎孤独,肢体语言传递情绪

如何塑造一个全剧中几乎没有台词的角色?葛铮认为关键在于认真体验角色的内心,由心而发地去感受,在镜头前自然地表现。5月28日,他出演的高概念意象情感剧《在人间》播出,他在剧中饰演铁林一角,多数镜头中只能用肢体语言、面部表情等方式传递角色的情绪,这对葛铮来说无疑是…

【docker部署】 Windows版docker部署harbor镜像

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Windows版docker部署harbor镜像 Windows版dock…