SSRF:服务端请求伪造攻击

news2024/11/18 11:46:28

目录

什么是SSRF?

攻击内网应用

端口扫描

攻击非web应用

pikachu中的SSRF

curl(端口扫描)

file_get_content(读取文件)

防御SSRF


什么是SSRF?

服务端请求伪造(Server Side Request Forgery):是最近几年出现的一种web漏洞,2021年,SSRF被OWASP列为Top 10web安全风险之一

其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据

比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。

根据后台使用的函数的不同,对应的影响和利用方法又有不一样

PHP中下面函数的使用不当会导致SSRF:

file_get_contents()
fsockopen()
curl_exec()

如果一定要通过后台服务器远程去对用户指定("或者预埋在前端的请求")的地址进行资源请求,则请做好目标地址的过滤

我们要对目标网站的布局有一定的了解,比如 : A网站,是一个所有人都可以访问的外网网站,B网站是一个公司内部的网站,我们普通用户只可以访问A网站,不能访问B网站。但是我们可以通过A网站做中间人,访问B网站,从而达到攻击B网站需求。

SSRF常见的利用场景:

通过URL地址分享网页内容

转码服务

在线翻译

图片加载与下载:通过URL地址加载或下载图片 图片、文章收藏功能 未公开的api实现以及其他调用URL的功能 从URL关键字中寻找 share、wap、url、src........

总:所有通过调取外部资源的参数都有可能存在SSRF

攻击内网应用

在大部分场景下,存在SSRF漏洞的应用只可以使用HTTP/HTTPS协议发起请求,而且通常限制了请求的方法,但是攻击很多带有漏洞的内网应用,而且很多中间件的管理控制台在内网中是开放的,甚至可以无密码登录

端口扫描

通常SSRF漏洞,攻击者可以他测内网域名或者ip地址是否存在,端口是否开放。

如果服务端会返回错误信息,攻击就可以方便的探测这些信息,通过页面的响应页面,或响应时间的差异来判断传入的值是否正确,这种攻击属于侧信道攻击,另外不同的协议的客户端和服务器的数据交互机制不同,换一种协议可能会拉开响应时间的差异

攻击非web应用

如果整个URL都是由外部输入参数控制的,那么攻击者可以尝试使用其他协议来访问其他非web应用,最基本的就是使用file://协议来访问服务器本地文件系统,比如:

Loading...

此外,很多HTTP库都支持HTTP以外的其他协议,如:LDAP、FTP、Gopher、DICT、IMAP、POP3、SMTP、Telnet等协议

其中对攻击者最有利的是DICT和Gopher协议,基于它们可以实现一种称为“协议走私”的效果,也叫做“协议夹带”。

协议走私:在一个应用协议的数据中注入另外一种应用协议的数据,当攻击者使用一种应用协议发送请求时,如果精心构造请求的内容,就能使其同时满足另外一种协议的数据格式要求

pikachu中的SSRF

这里我使用pikachu靶场来简单演示一下SSRF攻击:

curl(端口扫描)

点击来到了SSRF(curl)这里,然后发现这里在url中使用GET传入了一个网址

那么我们可以尝试一下传入一个别的网址:

 可以看到我传入的www.baidu.com页面显示到了该网站中,这是由于网站没有对其URL进行限制,所以我们可以直接修改该网站的url,实现URL跳转

那么现在就可以尝试在这里进行手动的端口扫描:可以利用dict协议访问ip的某端口来确定该端口是否开启

比如说可以探测3306,返回了数据,说明3306端口是开启的:

再尝试探测3389端口,没有返回数据,说明3389端口是关闭的:

当然也可以使用Burpsuite抓包然后使用里面的扫描模块进行扫描:

设置扫描范围:

开始扫描:

然后根据场地的笔筒就可以扫描出了很多开启的端口:

file_get_content(读取文件)

现在来到file_get_content这里,可以看到这里从一个url中读取了一个php文件

这里我们可以利用file伪协议的方法制造恶意的payload去获取后台代码:

这里就读取到了本地文件中的phpoinfo.php文件,这里是base64编码的,然后进行base64解码就就可以得到文件内容:
 

防御SSRF

1、检验协议类型,应该使用白名单机制做校验,仅允许使用指定的协议来访问

2、如果调用的接口优先,应当使用白名单URL的方式,限制仅能访问指定的URL

3、如果输入的URL中主机名是ip地址,需要校验ip地址是否为公网地址

4、在解析用户输入的url过程中,需要提取协议、主机、端口、路径等信息,应当尽量使用成熟的URL解析库

5、对用户输入的参数作安全校验

6、打部门应用使用HTTP/HTTPS就够了,应当禁用其他多于的协议类型

7、在访问发生错误后,也不要将错误信息的原始内容直接返回给访问者

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

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

相关文章

Python __file__属性:查看模块的源文件路径

除可以查看模块的帮助信息之外,还可以直接阅读模块的源代码来掌握模块功能,提升 Python 编程能力。 不管学习哪种编程语言,认真阅读那些优秀的框架、库的源代码都是非常好的学习方法。 通过模块的 __file__ 属性即可查看到指定模块的源文件…

实践:微服务版本升级步骤以及maven仓库相关概念

进行微服务开发的时候&#xff0c;上层服务依赖于下层的服务的api&#xff0c;比如适配属于上层服务&#xff0c;用户属于下层服务。 例子: 上层服务 <!--订单管理微服务api依赖--> <dependency><groupId>com.jn.server</groupId><artifactId>…

docker部署自己的网站wordpress

目录 安装 1.创建目录 2.创建并启动mysql 3.创建并启动wordpress 使用 1.设置语言 2.设置基础信息 3.首页 安装 1.创建目录 mkdir -p /opt/wordpress/{db,data} 2.创建并启动mysql docker run -d --name my_mysql --restart always -e MYSQL_ROOT_PASSWORD123456 -e …

【网络安全】URL解析器混淆攻击实现ChatGPT账户接管、Glassdoor服务器XSS

文章目录 通配符URL解析器混淆攻击实现ChatGPT账户接管通配符URL解析器混淆攻击实现Glassdoor服务器缓存XSS 本文不承担任何由于传播、利用本文所发布内容而造成的任何后果及法律责任。 本文将基于ChatGPT及Glassdoor两个实例阐发URL解析器混淆攻击。 开始本文前&#xff0c;…

【问题篇】activiti工作流转办并处理备注问题

当处理activiti转办问题时&#xff0c;需要做的就是处理审批人和备注问题。 处理的思路是&#xff0c;先将当前环节标志成转办标签&#xff0c;再通过BUSINESS_KEY_找到流程实例的历史记录&#xff0c;找到最新的一条复制一份出来&#xff0c;表示需要转办到的人的历史记录并设…

【技能树学习】Git入门——练习题解析

前言 本篇文章给出了Git入门技能树中部分的练习题解析&#xff0c;包括分支管理&#xff0c;Git标签&#xff0c;在Mac和Windows上使用GitVSCode的步骤。强调了git cherry-pick不直接支持从标签中选择提交&#xff0c;git tag -d只能删除本地标签&#xff0c;Mac系统的终端可以…

【达梦数据库】使用DBeaver管理达梦数据库

使用DBeaver管理达梦数据库 Step1 安装相关程序 达梦8数据库DBeaver社区版 Step2 新建驱动 类型参数驱动名称DM8驱动类型Generic类名dm.jdbc.driver.DmDriverURL模板jdbc:dm://{host}:{port}默认端口5236默认数据库默认用户SYSDBA Step3 连接服务

ideal打包,如何访问项目根目录的libs中的jar包

参考&#xff1a;idea maven 导入lib中jar 并打包_maven引入lib中的jar包-CSDN博客 解决办法&#xff0c;只需要在pom文件中加入 <includeSystemScope>true</includeSystemScope> <build><!-- <includeSystemScope>true</includeSystemScope&g…

【DC渗透系列】DC-2靶场

arp先扫 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:6b:ed:27, IPv4: 192.168.100.251 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.100.1 00:50:56:c0:00:08 VMware, In…

EasyExcel下载带下拉框和批注模板

EasyExcel下载带下拉框和批注模板 一、 代码实现 controller下载入口 /***下载excel模板* author youlu* date 2023/8/14 17:31* param response* param request* return void*/PostMapping("/downloadTemplate")public void downloadExcel(HttpServletResponse r…

【计算机学院寒假社会实践】——服务走进社区,共绘幸福蓝图

为深入贯彻落实志愿者服务精神&#xff0c;扎实推进志愿者服务质量&#xff0c;2024年1月28日&#xff0c;曲阜师范大学计算机学院“青年扎根基层&#xff0c;服务走进社区”社会实践队队员周兴睿在孙宇老师的指导下&#xff0c;来到山东省滨州市陈集街道社区开展了为期一天的“…

SaperaCamExpert(相机专家)中文使用指南

参考&#xff1a;SaperaCamExpert中文使用指南.PDF 文章目录 软件介绍安装首次打开资源占用率功能主界面布局菜单栏FileViewPre-Processing&#xff1a;预处理 Tools&#xff1a; 快捷键&#xff1a;新建&#xff1b;打开&#xff1b;保存&#xff1b;帮助Device窗体属性树图像…

GPTs保姆级教程之实践

GPTs什么 使用GPTs的前提&#xff1a;ChatGPT Plus帐号 GTPs的作用&#xff1a;把我们和GPT对话的prompt&#xff0c;封装起来成为一个“黑匣子”。 主要有两个作用&#xff1a; 1、避免反复输入prompt&#xff0c;“黑匣子”打开&#xff0c;输入问题即可使用 2、在别人可以…

docker安装etherpad文档系统

效果 安装 1.创建并进入目录 mkdir -p /opt/etherpad cd /opt/etherpad 2.修改目录权限 chmod -R 777 /opt/etherpad 3.创建并启动容器 docker run -d --name etherpad --restart always -p 10054:9001 -v /opt/etherpad/data:/opt/etherpad-lite/var etherpad/etherpad:la…

docker安装zpan

安装 1.创建数据库 docker run -di --namezpan_mysql -p 3309:3306 -e MYSQL_ROOT_PASSWORD123456 mysql 2.手动新建数据库zpan 3.创建目录 mkdir -p /opt/zpan cd /opt/zpan 4.编写配置文件 vim config.yml #详细配置文档可参考&#xff1a; https://zpan.space/#/zh…

Linux 网络:PTP 简介

文章目录 1. 前言2. PTP(Precision Time Protocol​) IEEE 1588 协议简介2.1 PTP IEEE 1588 协议时间同步原理2.2 PTP IEEE 1588 协议时钟类型2.2.1 普通时钟(OC: Ordinary Clock)2.2.2 边界时钟(BC: Boundary Clock)2.2.3 透明时钟(TC: Transparent Clock)2.2.3.1 端对端透明时…

Redis 命令大全

文章目录 启动与连接Key&#xff08;键&#xff09;相关命令String&#xff08;字符串&#xff09;Hash&#xff08;哈希&#xff09;List&#xff08;列表&#xff09;Set&#xff08;集合&#xff09;Sorted Set&#xff08;有序集合&#xff09;其他常见命令HyperLogLog&…

FPGA解码MIPI视频:Xilinx Artix7-35T低端FPGA,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案本方案在Xilinx Artix7-100T上解码MIPI视频的应用本方案在Xilinx Kintex7上解码MIPI视频的应用本方案在Xilinx Zynq7000上解码MIPI视频的应用本方案在Xilinx Zynq UltraScale上解码MIPI视频的应用纯VHDL代码解…

docker-学习-5

docker-学习第五天 docker-学习第五天1. 昨天的练习回顾1.1. 练习11.2. 练习2 2. 命令2.1. 看镜像的详细信息 3. Dockerfile指令3.1. 常见的指令3.2. ENTRYPOINT和CMD的区别3.3. RUN中的set指令 4. 镜像的原理4.1. 为什么 Docker 镜像要采用这种分层结构呢&#xff1f;4.2. doc…

无人机集群协同导航构型自适应选择算法

无人机集群协同导航构型自适应选择算法 Evandworld E-mail&#xff1a;evandworldfoxmail.com 摘要 针对卫星定位系统用于无人机集群时成本高、精度低等问题&#xff0c;本文提出一种基于卡尔曼滤波和概率的无人机集群构型自适应选择算法。在自适应扩展卡尔曼滤波的基础上&a…