SSRF基础原理(浅层面解释 + 演示)

简介: 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); // 设置要访问的URL
    curl_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 方式获取数据。

相关文章
|
弹性计算 数据库 数据安全/隐私保护
阿里云服务器申请免费试用图文教程(个人和企业均可申请)
阿里云服务器有免费试用的吗?应该如何申请?很多用户在购买阿里云服务器之前都想申请一台免费的云服务器来试用一下,本文以图文形式教大家如何申请阿里云免费试用云服务器。
1731 0
阿里云服务器申请免费试用图文教程(个人和企业均可申请)
|
6月前
|
Ubuntu 安全 网络安全
Docker镜像:Ubuntu支持systemctl、SSH和VNC
总的来说,Docker提供了一个灵活且强大的方式来创建和运行自定义的Ubuntu镜像。通过理解和使用Dockerfile,你可以轻松地创建一个支持systemctl、SSH和VNC的Ubuntu镜像。
405 21
|
JSON API 开发工具
gitlab如何实现批量clone仓库
在Windows环境下,通过GitLab Group ID获取项目URL的步骤概要: 1. 使用API `http://gitlab域名/api/v4/groups/你的group id` 获取JSON,提取`http_url_to_repo`。 2. 在Sublime中处理JSON,用快捷键选中并提取所有`http_url_to_repo`值。 3. 保存到h.txt,去除其他信息,仅保留URL。 4. 创建e.bat文件,内容为克隆h.txt中所有URL的批处理命令。 5. 放置h.txt和e.bat在同一文件夹,运行e.bat批量克隆仓库。URL含凭证,便于后续操作。
531 8
|
存储 开发者 Python
【阿里云镜像】配置阿里巴巴开源镜像站镜像——PyPI 镜像
【阿里云镜像】配置阿里巴巴开源镜像站镜像——PyPI 镜像
5336 0
【阿里云镜像】配置阿里巴巴开源镜像站镜像——PyPI 镜像
|
XML 安全 网络安全
XXE漏洞详解(三)——XXE漏洞实际运用
XXE漏洞详解(三)——XXE漏洞实际运用
669 4
|
11月前
|
人工智能 供应链 数据挖掘
跨境电商目前现状
2024年,跨境电商市场持续增长,全球市场规模预计达2.1万亿美元,中国跨境电商进出口额达1.22万亿元。行业竞争加剧,技术创新和政策支持成为重要推动力。市场多元化趋势明显,新兴市场增长迅速,销售渠道多样化,但海外政策调整带来一定挑战。
|
数据采集 人工智能 数据可视化
云上数据可视化:解锁数据价值,洞见未来趋势
五、未来展望 随着技术的不断进步和应用场景的不断拓展,云上数据可视化将迎来更加广阔的发展前景。未来,云上数据可视化将更加注重数据的实时性、交互性和智能化。同时,随着人工智能、大数据等技术的深度融合,云上数据可视化将更加
593 7
|
监控 前端开发 NoSQL
基于jeecgboot的flowable复杂会签加用户选择流程实现
基于jeecgboot的flowable复杂会签加用户选择流程实现
371 2
|
存储 网络协议 安全
获取真实 IP 地址(二):绕过 CDN(附链接)
获取真实 IP 地址(二):绕过 CDN(附链接)