ssrf简介

目录

SSRF漏洞

漏洞原理

形成原因

SSRF用途:

怎么找到SSRF漏洞?

漏洞案例


SSRF漏洞

漏洞原理

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

形成原因

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

  • 首先,我们要对目标网站的架构了解,脑子了要有一个架构图。比如︰A网站,是一个所有人都可以访问的外网网站,B网站是一个他们内部的OA网站,我们普通用户只可以访问a网站,不能访问b网站。但是我们可以同过a网站做中间人,访问b网站,从而达到攻击b网站需求。

  • 正常用户访问网站的流程是:

    • 输入A网站URL-->发送请求-->A服务器接受请求(没有过滤),并处理-->返回用户响应[那网站有个请求是www.cJdboyedu,com/xxx.php?image=URL]

    • 那么产生SSRF漏洞的环节在哪里呢?安全的网站应接收请求后,检测请求的合法性

  • 产生的原因:服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以及限制,导致A网站可以从其他服务器的获取数据

  • 例如:

    • www.oldboyedu.com/xxx.php?image=www.luffycity.com/1.jpg

    • 如果我们将www.luffycity.com/1.jpg换为与该服务器相连的内网服务器地址会产生什么效果呢?如果存在该内网地址就会返回1xx2xx之类的状态码,不存在就会其他的状态码

  • 终极简析: SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的资源。

SSRF用途:

  • 攻击者利用ssrf可以实现的攻击主要有5种:︰

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

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

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

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

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

怎么找到SSRF漏洞?

  • 1.能够对外发起网络请求的地方,就可能存在SSRF漏洞(在自己的网站上请求到别人的资源)

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

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

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

  • 5.文件处理,编码处理,属性信息处理(ffpmg,lmageMaic,DOGX,RD;XML处理器)

漏洞案例

  • SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的

  • ssrf攻击可能存在任何语言编写的应用,我们通过一些php实现的代码来作为样例分析。代码 的大部分来自于真实的应用源码。

<?php
if (isset($_POST[ 'url']))
{$content = file_get_contents($_POST [ 'url']);$filename ='./images/ ' .rand( ) . 'img1.jpg';file_put_contents($filename,$content);echo $_POST[ 'url'];$img = "<img src=\"".$filename . "\"/>";
}echo $img;
?>
<?php
function GetFile($host , $port ,$link){$fp = fsockopen( $host, intval($port), $errno,$errstr, 30);if(!$fp){echo "$errstrR ( error number $errno) \n";}else{$out = "GET $link HTTP/1.1\r\n" ;$out .= "Host: $host\r\n";$out .= "connection: Close \r\n\r\n" ;$out .= "\r\n";fwrite($f;$out);$contents='';while (!feof($fp)) {$contents.= fgets($fp,1024);}
fclose($fp);
return $contents;
}
}
?>

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

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

相关文章

初识redis:Zset有序集合

Set作为集合&#xff0c;有两个特点&#xff1a;唯一且无序。 Zset是有序集合&#xff0c;在保证唯一的情况下&#xff0c;是根据什么来排序的呢&#xff1f;排序的规则是什么&#xff1f; Zset中的member引入了一个属性&#xff0c;分数&#xff08;score&#xff09;&#…

NLP从零开始------14.文本中阶序列处理之语言模型(2)

3.2 长短期记忆 梯度消失问题的一个解决方案是使用循环神经网络的变体——长短期记忆( long short- term memory, LSTM)。 长短期记忆的原理是&#xff0c; 在每一步t&#xff0c; 都保存一个隐状态和一个单元状态( cell state) , 通过单元状态来存储长距离信息&#xff0c; 长…

Redis内存淘汰

Redis内存淘汰 文章目录 Redis内存淘汰Redis可以存储多少数据淘汰策略选择哪种淘汰算法LRU什么是LRURedis的近似LRU为什么不直接使用LRU近似的LRU淘汰池的优化LRU优化后的对比 LFU什么是LFU为什么引入LFURedis的LFU策略访问频率衰减频率更新 Redis可以存储多少数据 maxmemory配…

Docker续4:harbar私有仓库管理

一、新建一台docker&#xff08;192.168.1.77&#xff09;&#xff08;用于上篇创建私有镜像后的测试&#xff08;拉取镜像&#xff09;&#xff09; 运行docker安装脚本 [rootlocalhost ~]# vim /etc/docker/daemon.json //编辑配置文件 { "…

uniapp-Vue项目如何实现国际化,实现多语言切换,拒绝多套开发,一步到位,看这篇就够

一 安装 找到自己的项目,输入cmd进入命令行,输入安装命令,点击回车进行下载: npm install vue-i18nnext 下载完将在项目的配置文件中看到: 二 使用 2.1 在项目中创建一个文件夹如:lang 用于存放不同语言的包。这些语言文件通常为JSON格式 2.2 在项目main.js文件中引入并初…

H264编码原理(一)压缩背后的秘密

一、引言 在当今的数字视频世界中&#xff0c;H.264编码技术无疑占据着至关重要的位置。虽然H.264编码原理可能听起来复杂又深奥&#xff0c;但只要深入了解视频的特性&#xff0c;就能明白为什么它需要如此设计。通过利用视频内容的冗余性和人眼的感知特性&#xff0c;H.264能…

后端面试真题整理

面试问题整理 本人主要记录2024年秋招、春招过程中的疑难八股真题&#xff0c;参考来源&#xff1a;牛客网、知乎等。 八股 深拷贝与浅拷贝 浅拷贝&#xff1a; 浅拷贝会在堆上创建一个新的对象&#xff08;区别于引用拷贝的一点&#xff09;&#xff0c;不过&#xff0c;如果…

黑马JavaWeb开发笔记07——Ajax、Axios请求、前后端分离开发介绍、Yapi详细配置步骤

文章目录 前言一、Ajax1. 概述2. 作用3. 同步异步4. 原生Ajax请求&#xff08;了解即可&#xff09;5. Axios&#xff08;重点&#xff09;5.1 基本使用5.2 Axios别名&#xff08;简化书写&#xff09; 二、前后端分离开发1. 介绍1.1 前后台混合开发1.2 前后台分离开发方式&…

linux下一切皆文件,如何理解?

linux下一切皆文件&#xff0c;不管你有没有学过linux&#xff0c;都应该听过这句话&#xff0c;就像java的一切皆对象一样。 今天就来看看它的真面目。 你记住了&#xff0c;只要一个竞争退出它的PCB要被释放文件名&#xff0c;客服表也要被释放。那么&#xff0c;指向这个文件…

使用代理和 Python 高效进行亚马逊数据抓取: 实用指南

文章目录 一、简介二、为什么要抓取亚马逊&#xff1f;三、了解代理3. 1. 搜索亚马逊的代理类型 四、为什么使用 Python&#xff1f;五、设置5. 1. 选择代理5. 2. 设置代理 六、抓取数据七、解析数据八、 结论 一、简介 在现代数字环境中&#xff0c;分析网络流量对于优化网站…

YOLOv10:实时端到端目标检测

摘要 https://arxiv.org/pdf/2405.14458 近年来&#xff0c;YOLO系列模型因其在计算成本与检测性能之间的有效平衡&#xff0c;在实时目标检测领域占据了主导地位。研究人员在YOLO的架构设计、优化目标、数据增强策略等方面进行了探索&#xff0c;并取得了显著进展。然而&…

RabbitMQ的基础概念介绍

MQ的三大特点&#xff1a;削峰、异步、解耦 1.RabblitMQ概念介绍 1.1概念 RabbitMQ是由erlang语言开发&#xff0c;基于AMQP&#xff08;Advanced Message Queue 高级消息队列协议&#xff09;协议实现的消息队列&#xff0c;它是一种应用程序之间的通信方法&#xff0c;消息…

【管理型文档】软件需求管理过程(原件)

软件需求管理规程应明确需求收集、分析、确认、变更控制及验证等流程&#xff0c;确保需求准确反映用户期望&#xff0c;支撑软件开发。该规程要求系统记录需求来源&#xff0c;通过评审确保需求完整、清晰、无歧义&#xff0c;实施变更控制以维护需求基线稳定&#xff0c;并持…

JVM类加载机制—类加载器和双亲委派机制详解

一、概述 上篇我们介绍了JVM类加载机制—JVM类加载过程&#xff0c;类加载过程是类加载机制第一阶段&#xff0c;这一阶段主要做将类的字节码&#xff08;class文件&#xff09;加载JVM内存模型中&#xff0c;并转换为JVM内部的数据结构&#xff08;如java.lang.Class实例&…

软件测试——自动化测试selenium常用函数

目录 元素的定位cssSelectorxpath函数 操作测试对象窗口切换窗口窗口设置大小窗口切换屏幕截图关闭窗口 等待强制等待隐式等待显示等待 浏览器导航弹窗警告弹窗确认弹窗提示弹窗 文件上传浏览器参数设置 元素的定位 web⾃动化测试的操作核⼼是能够找到⻚⾯对应的元素&#xff0…

【操作系统】14.I/O设备怎么分配和回收?

5.2 I/O设备怎么分配和回收&#xff1f; 5.2.1 I/O核心子系统 I/O调度 设备保护 假脱机技术&#xff08;SPOOLing技术&#xff09; ​ 输入井和输出井 ​ 输入进程和输出进程 ​ 输入缓冲区和输出缓冲区 设备分配与回收 ​ 设备分配应考虑的因素 ​ 静态分配与动态分配 ​ 设备…

上传文件(用户导入),第二次选择文件时没有反应(可用)

https://gitee.com/y_project/RuoYi-Cloud/issues/I582YB PS&#xff1a;恰好我使用的版本是 支持 handleRemove &#xff0c;所以很容易就解决了

企业如何选型人力资源管理系统?(附HR系统对比分析)

随着企业规模的扩大&#xff0c;人力资源管理系统成为了大中型企业不可或缺的工具。近年来&#xff0c;众多新技术产品层出不穷&#xff0c;这些技术和产品的实际功能和适用性并不明确&#xff0c;大量的新概念和新厂商通过各种渠道宣传&#xff0c;市场上信息过载使得企业难以…

美畅物联丨物联网平台的标准化之路:物模型设计的创新及应用

随着物联网&#xff08;IoT&#xff09;技术以前所未有的迅猛之势蓬勃发展&#xff0c;海量的物联网终端与应用纷纷接入&#xff0c;这不可避免地引发了数据与应用层面的异构化难题&#xff0c;进而形成了复杂且多变的碎片化问题。物联网感知数据因其具备多源异构的显著特性&am…

Linux中的常见命令——时间日期类命令

1、date显示当前时间 基本语法 写法功能描述date显示当前时间date %Y显示当前年份【四位数】date %m显示当前月份date %d显示当前是哪一天date "%Y-%m-%d %H:%M:%S" 显示年月日时分秒 【由于年月日和时分秒中间有空格所以需要用引号引起来】 实操案例 1、显示当…