SSRF漏洞基础原理(浅层面解释 + 靶场演示)

一、SSRF漏洞的基本概念:

SSRF--全名:Server-Side Request Forgery,汉译:服务端请求伪造,漏洞别名“借刀杀人”。

想象以下,现存在一个 Web应用,这个Web应用可以帮助我们能=爬取互联网上的其他内容,如将别处网站的照片爬取过来等等,这时我们尝试构造一个恶意的URL让它去访问,比如让它去访问 127.0.0.1,也就是本机或者是内网里的一个地址,Web应用如果按照我们的要求去访问并且把访问结果返回的话,那么此处就存在SSRF漏洞。

图示流程如下:

(1)若不存在SSRF漏洞,流程图如下:

(2)若存在SSRF漏洞,流程图如下:

更详细的关于SSRF漏洞类型、协议等内容请参考下面一片文章:

SSRF漏洞原理攻击与防御(超详细总结)


二、靶场漏洞复现(pikachu靶场):

1、SSRF(curl):

(1)curl函数造成漏洞原理:

curl 是常用的命令行工具,可以用来请求 Web 服务器。同时也支持其他协议,如FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和 RTSP,curl中也包含了用于程序开发的libcurl。

造成SSRF漏洞的根本原因是:服务端提供了从其他服务器获取数据的功能,而没有对目标地址进行限制和过滤,导致产生SSRF漏洞。

(2)curl函数实现源码:
<?php
function curl($url){$ch=curl_init(); // 初始化cURL会话curl_setopt($ch,CURLOPT_URL,$url); // 设置要访问的URLcurl_setopt($ch,CURLOPT_HEADER, 0); // 不返回HTTP头部信息curl_exec($ch); // 执行cURL会话,发送请求并获取响应curl_close($ch); // 关闭cURL会话
}
$url=$_GET['url']; // 从GET请求中获取参数'url'的值
curl($url); // 调用curl函数,传入URL参数
?>
(3)漏洞复现:

进入靶场,页面如下图所示:

发现一句话,可点击,点击进入,页面显示如下图所示:

出现一段文字,同时我们发现URL中多出了一个参数url,分析后端代码:

通过分析后端代码,我们得知url参数被赋值给$URL,并且使用curl()函数进行请求访问,最后 echo $RES 将响应结果返回给了前端,显示在用户的页面中,这就是典型的SSRF漏洞。

我们可以对URL中的url参数进行修改来复现SSRF漏洞:

1、http协议访问本地文件:

2、file协议读取C盘下的配置文件:

3、利用curl函数打开百度:

除以上功能外,利用SSRF(curl)漏洞还可以利用dic协议扫描内网各个端口的开放情况。


2、SSRF(file_get_content):

(1)file_get_content 后端源码:

代码大体意思为:将指定URL的文件读入为一个字符串并返回前端。

(2)file_get_content()函数造成漏洞的原理:

file_get_contents函数本身是一个强大的工具,它能够读取文件或URL的内容到字符串中。然而,当这个函数与用户输入相结合时,如果未对用户输入进行适当的验证和限制,就可能允许攻击者构造特定的URL,使服务器发起对内网或互联网上其他服务器的请求。

(3)漏洞复现:

2、file协议读取C盘下的配置文件:

3、http协议读取根目录下文件:

(4)curl() 函数 和 file_get_content() 的区别:

1、curl_exec 支持更多协议,有http、https、ftp、gopher、telnet、dict、file、ldap;模拟 Cookie 登录,爬取网页;FTP 上传下载。

2、file_get_contents 只能使用 GET 方式获取数据。

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

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

相关文章

好的软件测试人员简历是什么样子的?

简历是入职职场的一张名片&#xff0c;也是进入职场一块“敲门砖”。从某种角度说&#xff0c;简历也是一张专业人员的说明书。 软件测试人员作为IT行业具有技术含量的职业&#xff0c;一份优秀的简历包含的内容以及如何写好简历尤为重要。接下来从以下两方面来介绍这个话题&a…

cannot import name ‘Flask‘ from partially initialized module ‘flask‘

bug&#xff1a; ImportError: cannot import name Flask from partially initialized module flask (most likely due to a circular import) (G:\pythonProject6\flask.py) 这个是因为包的名字和文件的名字一样 修改文件名&#xff1a; 结果 &#x1f923;&#x1f923;&…

preg_replace漏洞e模式函数执行

关于PHP函数preg_replace \e 模式函数执行漏洞 preg_replace&#xff1a; ​ 该函数执行一个正则表达式的搜索和替换。 ​ 语法&#xff1a; mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit -1 [, int &$count ]] )​ 搜索…

“删边“的并查集------反向并查集

目录 1.题目2.思路3.代码 默认大家都会并查集了 1.题目 小美认为&#xff0c;在人际交往中&#xff0c;但是随着时间的流逝&#xff0c;朋友的关系也是会慢慢变淡的&#xff0c;最终朋友关系就淡忘了。 现在初始有一些朋友关系&#xff0c;存在一些事件会导致两个人淡忘了他们…

Offer必备算法12_链表_五道力扣题详解(由易到难)

目录 ①力扣2. 两数相加 解析代码 ②力扣24. 两两交换链表中的节点 解析代码 ③力扣143. 重排链表 解析代码 ④力扣23. 合并 K 个升序链表 解析代码1&#xff08;小根堆优化&#xff09; 解析代码2&#xff08;递归_归并&#xff09; ⑤力扣25. K 个一组翻转链表 解…

MongoDB开启事务

MongoDB开启事务 配置单节点。到路径C:\Program Files\MongoDB\Server\4.0\bin 使用记事本以管理员权限打开文件mongod.cfg添加如下配置&#xff1a; replication:replSetName: rs02. 重启MongoDB服务 3. 重启后执行命令 rs.initiate()

【蓝牙协议栈】【经典蓝牙】【BLE蓝牙】蓝牙协议规范(射频、基带链路控制、链路管理)

目录 1. 蓝牙协议规范&#xff08;射频、基带链路控制、链路管理&#xff09; 1.1 射频协议 1.2 基带与链路控制协议 1.3 链路管理器 1. 蓝牙协议规范&#xff08;射频、基带链路控制、链路管理&#xff09; 蓝牙协议是蓝牙设备间交换信息所应该遵守的规则。与开放系…

vue2 div滚动条下拉到底部时触发事件(懒加载) 超级简易版本的懒加载

文章目录 导文文章重点内容效果展示&#xff1a;代码展示这些方法适用于哪些场景 总结 导文 vue2 div滚动条下拉到底部时触发事件(懒加载) 超级简易版本的懒加载 文章重点 内容效果展示&#xff1a; 当div拉到底部的时候&#xff1a; 编辑器返回&#xff1a; 代码展示 在…

【黑马程序员】Python初始

初始Python Python应用场景 什么是编程语言 安装Python开发环境 Python官网 选择Download 选择对应的Python版本和所要下载的操作系统 下载后直接下一步下一步即可安装成功 测试安装效果 重命名python命令让其使用Python3 echo alias python"python3" >…

登录校验认证

会话技术 会话&#xff1a;用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪&#xff1a; 一种维护浏览器状态的方法&#xff0c;服务器需要识别多次请…

Aop注解+Redis解决SpringBoot接口幂等性(源码自取)

目录 一、什么是幂等性&#xff1f; 二、哪些请求天生就是幂等的&#xff1f; 三、为什么需要幂等 1.超时重试 2.异步回调 3.消息队列 四、实现幂等的关键因素 关键因素1 关键因素2 五、引入幂等性后对系统的影响 六、Restful API 接口的幂等性 实战Aop注解redis解…

计算机网络——计算机网络的性能

计算机网络——计算机网络的性能 速率带宽吞吐量时延时延宽带积往返时间RTT利用率信道利用率网络利用率 我们今天来看看计算机网络的性能。 速率 速率这个很简单&#xff0c;就是数据的传送速率&#xff0c;也称为数据率&#xff0c;或者比特率&#xff0c;单位为bit/s&#…

神经网络 梯度与神经元参数w、b关系;梯度与导数关系

参考&#xff1a;https://blog.csdn.net/weixin_44259490/article/details/90295146 视频&#xff1a;https://www.bilibili.com/video/BV1a14y167vh 概念 梯度与w的关系可以用梯度下降公式来表示&#xff1a;ww−α ∂ c o s t ∂ w \frac{\partial cost}{\partial w} ∂w∂…

vs创建asp.net core webapi发布到ISS服务器

打开服务器创建test123文件夹&#xff0c;并设置共享。 ISS配置信息&#xff1a; 邮件网站&#xff0c;添加网站 webapi asp.net core发布到ISS服务器网页无法打开解决方法 点击ISS Express测试&#xff0c;可以成功打开网页。 点击生成&#xff0c;发布到服务器 找到服务器IP…

idm对比aria2哪个好 aria2和idm哪个快 Aria2和IDM的原理

一、idm对比aria2哪个好 下面对aria2和idm进行对比&#xff0c;看看哪款更好。 idm: 优势&#xff1a; 1&#xff09;可将下载速度提升5倍以上&#xff1b; 2&#xff09;界面友好&#xff0c;操作简便&#xff1b; 3&#xff09;支持多个主流的浏览器&#xff1b; 4&am…

基于Vue的娱讯移动端APP前端设计与实现

目 录 摘 要 Abstract 引 言 1绪论 1.1课题背景及目的 1.1.1移动端APP发展简介 3 1.1.2移动端APP的优势 3 1.2前端开发相关技术 1.2.1前端开发工具介绍 3 1.2.2 前端开发相关技术介绍 4 1.3本章小结 2系统分析 2.1功能需求分析 2.2系统工作流程 2.3本章小结 3系统设…

【论文阅读】Segment Anything论文梳理

Abstract 我们介绍了Segment Anything&#xff08;SA&#xff09;项目&#xff1a;新的图像分割任务、模型和数据集。高效的数据循环采集&#xff0c;使我们建立了迄今为止最大的分割数据集&#xff0c;在1100万张图像中&#xff0c;共超过10亿个掩码。 该模型被设计和训练为可…

一例APC注入型病毒分析

概述 这个病毒通过可移动存储介质传播&#xff0c;使用了应用层APC注入和dga域名技术&#xff0c;整个执行过程分为4个阶段&#xff0c;首先从资源节中解密出一段shellcode和一个PE&#xff0c;执行shellcode&#xff0c;创建一个同名的傀儡进程&#xff0c;将解密出来的PE注入…

2024蓝桥杯每日一题(归并排序)

一、第一题&#xff1a;火柴排队 解题思路&#xff1a;归并排序 重点在于想清楚是对哪个数组进行归并排序求逆序对 【Python程序代码】 from math import * n int(input()) a list(map(int,input().split())) b list(map(int,input().split())) na,nb [],[] for …

【嵌入式】字体极限瘦身术:Fontmin在嵌入式UI中的魔法应用(附3500常用汉字)

1. 概述 在嵌入式系统的用户界面&#xff08;UI&#xff09;设计中&#xff0c;字体的选择和优化至关重要。一个恰当的字体不仅能够提升用户体验&#xff0c;还能彰显产品特色。然而&#xff0c;由于嵌入式设备常常受限于存储空间和处理能力&#xff0c;大型字体文件可能成为性…