ssrf简介

news2024/12/24 20:00:11

目录

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.coloradmin.cn/o/2072803.html

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

相关文章

【原创】java+swing+mysql健身房管理系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片&#xff0c;希望和大家…

无人机RTK定位定向技术详解

无人机RTK&#xff08;Real-Time Kinematic&#xff0c;实时动态差分技术&#xff09;定位定向技术&#xff0c;是无人机领域的一项高精度导航与定位技术。它结合了全球导航卫星系统&#xff08;如GPS、GLONASS、Galileo、BDS等&#xff09;与实时差分技术&#xff0c;通过地面…

精彩管道不会梦到深沉蓝调

如果上天开了眼 请多给我点蓝调 多给我点沙锤 多给我点甲壳 让我吃鸡&#xff01; 星元自动机&#xff0c;新的版本之神 给宁磕一个 完蛋 你说这不是问题吗 我这篇文章从我写开始&#xff0c;到写完 炉石都换赛季了&#xff01;&#xff01;&#xff01;&#xff01…

HTB-Redeemer(redis)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解Redeemer这台机器&#xff0c;主要是对redis组件进行渗透&#xff0c;了解思路 渗透过程 更改一下 目录结构&#xff0c;先写 渗透过程&#xff0c;再写 题解 信息搜集 通过nmap扫描 发现开启了6379…

sklearn中的线性回归

多元线性回归 指的 是一个样本 有多个特征的 线性回归问题。 w 被统称为 模型的 参数&#xff0c;其中 w0 被称为截距&#xff08;intercept&#xff09;&#xff0c;w1~wn 被称为 回归系数&#xff08;regression coefficient&#xff09;。这个表达式和 yazb 是同样的…

CMake构建学习笔记4-libjpeg库的构建

libjpeg是一个广泛使用的开源库&#xff0c;用于处理JPEG&#xff08;Joint Photographic Experts Group&#xff09;图像格式的编码、解码、压缩和解压缩功能&#xff0c;是许多图像处理软件和库的基础。 libjpeg本身的构建没什么特别的&#xff0c;不过值得说道的是libjpeg存…

『功能项目』摄像机跟随角色【07】

我们打开上一篇06新输入系统项目&#xff0c; 本章要做的事情是摄像机跟随主角移动&#xff0c; 给主角增加一个Player标签方便主摄像机查找主角对象 在编辑场景调好角度&#xff0c;选择Main Camera对象按键盘Ctrl Shift F使运行场景与编辑场景相同 新建CameraCtrl脚本代码 …

Linux_NAT网络原理图,网络配置指令

目录 linux网络配置原理图 查看网络IP和网关 查看虚拟网络编辑器和修改IP地址 查看网关 ping测试主机之间网络连通性 linux网络配置原理图 ping指令的意思是连通上网&#xff0c;可以检测是否这个地址是否通。 比如我们在虚拟机里可以在火狐浏览器上打开百度。 使用ifco…

框架——动态SQL

目录 1.Mybatis动态SQL 2.MyBatis 中用于实现动态 SQL 的元素 3.查所有 4.If 元素 5.trim 元素 6.Choose 元素 7.set 元素 8.foreach 元素 根据传入id删除学生信息 根据传入列名查询学生相关信息 1.Mybatis动态SQL MyBatis 的一个强大的特性之一通常是它的动态 SQL 能…

CSRF简单介绍

欢迎交流 CSRF 条件&#xff1a; 需要请求伪造数据包无过滤防护&#xff0c;有过滤防护能绕过受害者需要触发&#xff08;诱惑&#xff09; 流程图 解决方案一&#xff1a; 检查Referer字段 解决方案二&#xff1a; CSRFToken 发货100CMS示例&#xff08;无过滤&#xff…

数据仓库系列4-什么是维度建模,它与关系型建模有什么区别

想象一下,你正在分析一家大型零售连锁店的销售数据。突然,你意识到传统的数据库模型无法有效地回答"去年黑色星期五当天,哪个地区的哪类产品销售额最高?"这样的复杂问题。这就是维度建模发挥作用的时候了 目录 引言:维度建模的魔力什么是维度建模?维度建模的定义维…

在我的博士科研生活中,SCI的英语写作一直是我的挑战。

在我的博士科研生活中&#xff0c;SCI的英语写作一直是我的挑战。尽管我不断地努力提高自己的语言水平&#xff0c;但每当我提交文章后&#xff0c;审稿人或编辑总是会指出语言表达的不足之处&#xff0c;让我深感苦恼。于是&#xff0c;我开始寻找专业的润色服务来帮助我提升文…

大模型之二十六-Diffusion model实例浅析

在2022年&#xff0c;midjourney、DALL-E以及Stable Diffusion三个文生图模型引爆了机器生产文生图领域&#xff0c;他们的模型能够在可控条件&#xff08;标签、文本描述&#xff09;下生成高分辨率、细节丰富的多样性图像&#xff0c;这在视觉上往往难以与真实图像区分。配套…

其它特殊库存

自有特殊库存 对于特殊库存&#xff0c;我们通常认为是由于所有权或存储地点与其它库存分开管理的物料库存。当过帐涉及特殊库存的货物移动时&#xff0c;除了移动类型外&#xff0c;必须&#xff08;如向特定供应商或客户或销售订单&#xff09;提供相关特殊库存标识以及更多…

3秒内搞定服务器端口扫描!用RustScan快速查看开放端口

文章目录 3秒内搞定服务器端口扫描&#xff01;用RustScan快速查看开放端口1. RustScan简介2. RustScan特点3. RustScan的基本使用3.1 创建alias别名3.2 基本用法3.3 常用参数说明3.4 示例4. 注意事项 最近开始公众号文章也开始同步更新了&#xff0c;对Java、大数据、人工智能…

游戏开发设计模式之命令模式

目录 命令模式的定义和工作原理 应用场景 实现方式 优点 缺点 结论 命令模式在游戏开发中的具体实现案例是什么&#xff1f; 如何在Unity3D中有效地实现和管理命令模式以提高游戏性能&#xff1f; 命令模式与其他设计模式&#xff08;如观察者模式、状态模式&#xff…

【C++ 面试 - 内存管理】每日 3 题(一)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

JavaScript解构介绍

​在JavaScript中&#xff0c;解构赋值&#xff08;Destructuring Assignment&#xff09;是一种方便的语法&#xff0c;用于从数组或对象中提取值并将其赋给变量。解构使得代码更简洁、可读性更高&#xff0c;同时减少了重复的代码。 1. 数组解构 数组解构允许我们从数组中提…

2024最新、最热、最全Java容器【知识点】!!!

文章目录 Java容器种类详细说说他们都有哪些内容Collection :存储对象的集合 为什么HashSet和ArrayDeque不支持有序性操作Map&#xff1a;存储键值对的映射表 ArrayList和LinkedList的区别&#xff1f;ArrayList的增删一定比LinkedList的增删慢吗&#xff1f;native()方法是什么…

SOMEIP_ETS_064: String_UTF16FIXED_too_short

测试目的&#xff1a; 验证当设备&#xff08;DUT&#xff09;接收到一个小于64字节的UTF16FIXED字符串时&#xff0c;是否能够返回错误消息。 描述 本测试用例旨在检查DUT在接收到一个长度小于64字节的UTF16FIXED字符串的SOME/IP消息时&#xff0c;是否能够返回格式错误&am…