SSRF(服务器端请求伪造)漏洞

news2024/9/24 17:09:29
CSRF漏洞与SSRF漏洞的主要区别在于伪造目标的不同。

一、SSRF是什么

SSRF漏洞:(Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)。

简易理解:
比如 : A网站,是一个所有人都可以访问的外网网站,B网站是一个他们内部的OA网站。我们普通用户只可以访问a网站,不能访问b网站。但是我们可以通过a网站做中间人,访问b网站,从而达到攻击b网站需求。
   
正常用户访问网站的流程是:
    输入A网站URL --> 发送请求 --> A服务器接受请求(没有过滤),并处理 -->返回用户响应
【那网站有个请求是www.baidu,com/xxx.php?image=URL】
那么产生SSRF漏洞的环节在哪里呢?安全的网站应接收请求后,检测请求的合法性
产生的原因:服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以及限制,导致A网站可以从其他服务器的获取数据
例如:
www.baidu.com/xxx.php?image=www.abc.com/1.jpg
如果我们将www.abd.com/1.jpg换为与该服务器相连的内网服务器地址会产生什么效果呢?
如果存在该内网地址就会返回1xx 2xx 之类的状态码,不存在就会其他的状态码。
   
终极简析 : SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的资源。

二、SSRF形成原因

前提:服务器具有主动发起请求的功能
   
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。利用的是服务端的请求伪造
  
ssrf是利用存在缺陷的web应用作为代理攻击远程和本地的服务器。

三、SSRF危害

1、可以对外网服务器所在的内网、本地进行端口扫描,获取一些服务的banner信息 。
2、攻击运行在内网或者本地的应用程序。
3、对内网web应用进行指纹识别,通过访问默认文件实现 。
4、攻击内外网的web应用。sql注入、redis等。
5、利用file协议读取本地文件等。(文件包含漏洞类似)

四、SSRF漏洞寻找

个人觉得所有调外部资源的参数都有可能存在ssrf漏洞。
   
1)分享:通过URL地址分享网页内容
2)转码服务
3)在线翻译
4)图片加载与下载:通过URL地址加载或下载图片
5)图片、文章收藏功能
6)未公开的api实现以及其他调用URL的功能
7)从URL关键字中寻找Share、wap、url、link、src、source、target、u、3g、display、sourceURL、imageURL、domain

五、SSRF防护

重点解决两个问题:
  • 用户请求的合法性
  • 服务器行为的合规性
1、过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
2、统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
3、限制请求的端口为http常用的端口,比如,80,443,8080,8090。
4、黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。
5、禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。
6、双向过滤用户端参数

六、Pikachu靶场中的SSRF

搭建环境: Pikachu靶场

docker安装:docker run -d  --rm --name pikachu -p 8765:80 area39/pikachu

 pikachu——SSRF - 学安全的小白 - 博客园 (cnblogs.com)

6.1、SSRF(curl)

漏洞产生的地方: /app/vul/ssrf/ssrf_curl.php
 
服务器没有对传进来的URL参数进行过滤,并且把服务器请求的结果输出到了前端。

6.1.1、读取本地文件

6.1.2、扫描内网端口(http/s和dict协议)

说明主机开启了22端口
如果没没有响应就说明该端口处于关闭状态。

6.1.3、 探测内网主机存活(http/s协议)

可以借助burp中的爆破模块进行存活主机探测
 
 
通过截图可以看出136主机存活。

6.2、SSRF(file_get_contents

漏洞产生的地方: /app/vul/ssrf/ssrf_fgc.php
 

七、靶机部署

实战 | 利用SSRF渗透内网主机-上 - 墨天轮   实战 | 利用SSRF渗透内网主机-上
实战 | 利用SSRF渗透内网主机-中 - 墨天轮   实战 | 利用SSRF渗透内网主机-中
实战 | 利用SSRF渗透内网主机-下 - 墨天轮   实战 | 利用SSRF渗透内网主机-下
Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。
CVE编号:CVE-2014-4210
靶机:192.168.11.135
下载vulhub:git clone https://github.com/vulhub/vulhub.git
进入目录:cd ./vulhub-master/weblogic/ssrf/
启动环境:docker-compose up -d
 
访问:http://192.168.3.222:7001/uddiexplorer/SearchPublicRegistries.jsp,出现如下页面说明测试环境ok

7.1、漏洞复现

开启Burp代理,提交表单
从返回页面的结果的报错上看,当提交表单的时候会访问下面这个URL,并做XMLSoap解析,这个错误就是我们SSRF漏洞产生的关键点
operator=http%3A%2F%2Fwww-3.ibm.com%2Fservices%2Fuddi%2Finquiryapi&rdoSearch=name&txtSearchname=1&txtSearchkey=2&txtSearchfor=3&selfor=Business+location&btnSubmit=Search
为了验证是否存在SSRF漏洞,将operator的值改为DNSLog生成的记录:
在DNSLog中可以看到请求的内容,说明存在SSRF漏洞。

7.2、探测内网存活IP

>>> 若ip不存在时返回如下信息(会一直请求该地址,直到超时)
 
  
>>> 若ip存在则返回如下信息

7.3、探测端口

>>> 端口不存在,将会返回`could not connect over HTTP to server`。
  
>>> 可访问的端口将会得到错误,一般是返回status code(如下图),如果访问的非http协议,则会返回`did not have a valid SOAP content-type`。
通过错误的不同,即可探测内网状态。

八、检测SSRF的方法与工具

8.1、Burp Collaborator

渗透测试:Burp suite 之 Burp Collaborator模块-【黑基网】 (hackbase.net)
10 SSRF 漏洞:外网隔离就绝对安全了吗?_哔哩哔哩_bilibili
只有pro版本可以使用该功能: 

8.2、SSRFmap

https://github.com/swisskyrepo/SSRFmap
  
利用它 可检测与利用SSRF 漏洞, 同时它也整合了一些常用漏洞可以结合 SSRF 去利用,比如 fastjson、mysql、github 的一些历史漏洞,还有端口扫描、读取文件等利用功能,都是实用的漏洞利用能力。
SSRF 通常用于利用对其他服务的操作,此框架旨在轻松查找和利用这些服务。 SSRFmap 将 Burp 请求文件作为输入和模糊参数
$ git clone https:// github.com/ swisskyrepo/ SSRFmap
$ cd SSRFmap/
$ pip3 install - r requirements.txt
$ python3 ssrfmap.py
   
使用:
1、 首先,您需要一个带有模糊参数的请求,Burp 请求与 SSRFmap 配合得很好。 它们应如下所示。 https://github.com/swisskyrepo/SSRFmap/tree/master/data 文件夹中提供了更多示例。
复制到data/目录下的一个文件中:
python3 ssrfmap.py -r data/pikachu_ssf.txt -p url -m readfiles,portscan  # -m的取值来自于 SSRFmap/modules/下的文件

九、参考

84、ssrf服务器请求伪造_哔哩哔哩_bilibili

10 SSRF 漏洞:外网隔离就绝对安全了吗?_哔哩哔哩_bilibili

检测 SSRF 的通用方法和工具 - 知乎 (zhihu.com)

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

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

相关文章

【MySQL】范式 (十五)

🚗MySQL学习第十五站~ 🚩本文已收录至专栏:MySQL通关路 ❤️文末附全文思维导图,感谢各位点赞收藏支持~ ⭐学习汇总贴,超详细思维导图:【MySQL】学习汇总(完整思维导图) 一.引入 在关系型数据库中&#xf…

浅谈AI浪潮下的视频大数据发展趋势与应用

视频大数据的发展趋势是多样化和个性化的。随着科技的不断进步,人们对于视频内容的需求也在不断变化。从传统的电视节目到现在的短视频、直播、VR等多种形式,视频内容已经不再是单一的娱乐方式,更是涉及到教育、医疗、商业等各个领域。 为了满…

一、初识 Spring MVC

文章目录 一、初始 Spring MVC1.1 回顾 MVC 模式1.2 回顾 Servlet 一、初始 Spring MVC 什么是 Spring MVC Spring MVC就是一个 Spring 内置的 MVC 框架。 MVC框架,它解决WEB开发中常见的问题(参数接收、文件上传、表单验证、国际化等等),而且使用…

Stable Diffusion - 俯视 (from below) 拍摄的人物图像 LoRA 与配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132192139 图像来自 哥特风格 LoRA 俯视 LoRA&#xff0c;提升视觉冲击力&#xff0c;核心配置 <lora:view_from_below:0.6>,(from below,…

Linux6.36 Kubernetes Pod进阶

文章目录 计算机系统5G云计算第三章 LINUX Kubernetes Pod进阶一、资源限制1.CPU 资源单位2.内存 资源单位3.重启策略&#xff08;restartPolicy&#xff09;4.健康检查&#xff1a;又称为探针&#xff08;Probe&#xff09;5.启动、退出动作 计算机系统 5G云计算 第三章 LIN…

WMS系列:层级树的surface 的创建

WMS 创建的surface 与 surfaceflinger 创建的Layer 是一一对应的&#xff0c;只不过可能是创建不同的 Layer 1. DefaultTaskDisplayArea 对应的surface 的创建 DefaultTaskDisplayArea 的调用栈如下&#xff0c;是在系统进程启动服务的时候&#xff0c;去创建对应的SurfaceCont…

研发提测前测试到底能做些什么

目录 需求分析 研发设计分析 测试用例编写 接口文档测试 内部业务逻辑 数据库测试 jimdb测试 异常流程测试 总结 作为测试&#xff0c;经常会遇到倒排期的项目&#xff0c;当研发已经占用了很多资源的情况下&#xff0c;此时测试要想提高效率。就不得不在研发提测前多做…

【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio构建SpringSecurity权限框架

1.Cloud Studio&#xff08;云端 IDE&#xff09;简介 Cloud Studio 是基于浏览器的集成式开发环境&#xff08;IDE&#xff09;&#xff0c;为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装&#xff0c;随时随地打开浏览器就能在线编程。 Clou…

Towards Open World Object Detection【论文解析】

Towards Open World Object Detection 摘要1 介绍2 相关研究3 开放世界目标检测4 ORE:开放世界目标检测器4.1 对比聚类4.2 RPN自动标注未知类别4.3 基于能量的未知标识4.4 减少遗忘 5 实验5.1开放世界评估协议5.2 实现细节5.3 开放世界目标检测结果5.4 增量目标检测结果 6 讨论…

1999-2021年全国各地级市专利申请与获得情况、绿色专利申请与获得情况面板数据

1999-2021年全国各地级市专利申请与获得情况、绿色专利申请与获得情况面板数据 1、时间&#xff1a;2000-2021年 2、来源&#xff1a;国家知识产权局 3、范围&#xff1a;地级市&#xff08;具体每年地级市数量参看下文图片&#xff09; 4、指标&#xff1a;申请专利数&…

吐血整理,Python接口自动化测试-接口关联依赖处理(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 场景说明 在面试…

【TypeScript】类型断言-类型的声明和转换(五)

【TypeScript】类型断言-类型的声明和转换&#xff08;五&#xff09; 【TypeScript】类型断言-类型的声明和转换&#xff08;五&#xff09;一、简介二、断言形式2.1 尖括号语法2.2 as形式 三、断言类型3.1 非空断言3.2 肯定断言-肯定化保证赋值3.3 将任何类型断言为any3.4 调…

【STL】优先级队列反向迭代器详解

目录 一&#xff0c;栈_刷题必备 二&#xff0c;stack实现 1.什么是容器适配器 2.STL标准库中stack和queue的底层结构 了解补充&#xff1a;容器——deque 1. deque的缺陷 2. 为什么选择deque作为stack和queue的底层默认容器 三&#xff0c;queue实现 1. 普通queue …

RobotFramework之接口自动化流程测试

Robot Framework之接口测试自动化&#xff08;数据准备、数据脚本实现、实现层和断言层、测试报告&#xff09; 脚本用例通用模板设计 单接口用例测试 数据准备&#xff0c;已经取出了该接口的所有正向和逆向接口测试用例&#xff0c;那现在如何把数据和用例结合起来&#xff0…

fastadmin 自定义弹窗大小,遮罩关闭弹窗问题

// 更改表格里面的默认编辑按钮弹窗table.on(post-body.bs.table,function(){// 这里就是数据渲染结束后的回调函数$(".btn-editone,.btn-add").data("area", [80%,90%]);$(".btn-editone,.btn-add").data("shade", [0.6,"#000&q…

测试经理应该怎么写测试部门年终总结报告?

年终总结一般对季度、半年度或年度总结的一个整理&#xff0c;我们需要定期对工作中的内容进行定期总结和复盘。将每一次复盘中总结出来的一些收获叠加起来&#xff0c;在针对性地调整一下&#xff0c;就是一份合格的年终总结。具体可以分为如下几个步骤&#xff1a; 1.先把这…

【第一阶段】kotlin语言的Nothing类型

fun main() {show(60) } //两种写法一样 private fun show(num:Int){when(num){//下面这句话不是注释提示&#xff0c;会终止程序-1->TODO("不符合")in 0..59->println("不及格")in 60..89->println("及格")in 90..100->println(&qu…

Zookeeper特性与节点数据类型详解

CAP&Base理论 CAP理论 cap理论是指对于一个分布式计算系统来说&#xff0c;不可能满足以下三点: 一致性 &#xff1a; 在分布式环境中&#xff0c;一致性是指数据在多个副本之间是否能够保持一致的 特性&#xff0c;等同于所有节点访问同一份最新的数据副本。在一致性的需…

PPT颜色又丑又乱怎么办?

一、设计一套PPT时&#xff0c;可以从这5个方面进行设计 二、PPT颜色 &#xff08;一&#xff09;、PPT常用颜色分类 一个ppt需要主色、辅助色、字体色、背景色即可。 &#xff08;二&#xff09;、搭建PPT色彩系统 设计ppt时&#xff0c;根据如下几个步骤&#xff0c;依次选…

时间复杂度空间复杂度相关练习题

1.消失的数字 【题目】&#xff1a;题目链接 思路1&#xff1a;排序——》qsort快排——》时间复杂度O&#xff08;n*log2n&#xff09; 不符合要求 思路2&#xff1a;&#xff08;0123...n)-(a[0]a[1][2]...a[n-2]) ——》 时间复杂度O&#xff08;N&#xff09;空间复杂度…