web安全---SSRF漏洞

简介

SSRF:服务器请求伪造,是一种攻击者构造形成由服务端发起请求 的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)

个人理解:服务器接收了你构造的代码,然后去执行,执行后将结果返回给你

SSRF原理

大都是因为服务端提供从其他服务器获取数据功能,并且没有对目标地址做过滤和限制造成的、比如从指定URL获取网页加载图片下载等等。
php下面函数的使用不当可能会导致SSRF

curl()
file_get_contents()
fsockopen()
例子

观察URL,发现服务端提供了URL查询
在这里插入图片描述
尝试访问百度及本机3306端口
在这里插入图片描述
在这里插入图片描述
访问成功获取信息,确定存在ssrf漏洞
下面我们来查看一下源码到底为什么会导致这个漏洞

<?php
if (isset($_GET["url"])) {
if (!empty($_GET["url"])) {$url = $_GET['url'];
}
$ch = curl_init();//初始化curl会话
curl_setopt($ch, CURLOPT_URL, $url);//指定请求的url
curl_setopt($ch, CURLOPT_HEADER, 0);// 启用时会将头文件的信息作为数据流输出。参数为1表示输出信息头,为0表示不输出
curl_exec($ch);
curl_close($ch);
}

可以看到采用了curl函数请求URL资源回显在前端,并且没做任何过滤或限制。从而导致了用户可能可以通过这个漏洞进行一些内网服务探测等等。非常危险!

file_get_contents造成的SSRF
$url = $_GET['url'];
echo file_get_contents($url);
利用php://input伪协议
file_get_content如果访问一个不存在的地址,会爆出绝对路径
ssrf危害
1.  扫内网
2.  向内部任意主机的任意端口发送精心构造的Payload
3.  DOS攻击(请求大文件,始终保持连接Keep-Alive Always)
4.  攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如struts2,sqli等)
5.  利用file协议读取本地文件等(file_get_content函数,利用伪协议读取)
ssrf验证方式和常见的地方

1.因为SSRF漏洞是构造服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的来判断是否存在SSRF漏洞
2.在页面源码中查找访问的资源地址 ,如果该资源地址类型为 http://www.xxx.com/a.php?image=(地址)的就可能存在SSRF漏洞

排除法1

你可以直接右键图片,在新窗口打开图片,如果是浏览器上URL地址栏是http://www.baidu.com/img/bd_logo1.png,说明不存在SSRF漏洞。

排除法2

你可以使用burpsuite等抓包工具来判断是否不是SSRF,首先SSRF是由服务端发起的请求,因此在加载图片的时候,是由服务端发起的,所以在我们本地浏览器的请求中就不应该存在图片的请求.(host www.baidu.com就不是)

ssrf修复方式
可以采取白名单,限制内网Ip。
对返回内容进行识别
禁用一些不必要的协议
统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态

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

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

相关文章

集合——对象数组(引用数据类型数组)

案例&#xff1a;我有5个学生&#xff0c;请把这个5个学生的信息存储到引用数据类型数组中&#xff0c;并遍历数组&#xff0c;获取得到每一个学生的信息。 思路分析&#xff1a;首先&#xff0c;想要创建学生对象&#xff0c;就得有学生这个类&#xff0c;所以&#xff0c;首…

提升应用视觉Android效果的10个UI技巧

在Android应用开发中&#xff0c;风格和设计或许不是最关键的要素&#xff0c;但它们在决定Android应用成功与否上确实扮演重要的角色。以下是10个Android应用的UI设计技巧&#xff0c;还有个附加技巧&#xff0c;能够提供你的Android应用的视觉吸引力。 技巧1&#xff1a;使用…

kotlin中判断字符串_Kotlin程序查找字符串中字符的频率

kotlin中判断字符串Given a string and a character, we have to find the frequency of the character in the string. 给定一个字符串和一个字符&#xff0c;我们必须找到字符串中字符的频率。 Example: 例&#xff1a; Input:string "IncludeHelp"character to…

OD使用

0x01 功能界面 序号1是汇编代码对应的地址窗口序号2是汇编对应的十六进制机器码窗口序号3是反汇编窗口序号4是反汇编代码对应的注释信息窗口序号5是寄存器信息窗口序号6是当前执行到的反汇编代码的信息窗口序号7是数据所在的地址序号8是数据的十六进制编码信息&#xff0c;序号…

windows mobile 开发总结--菜单

在开发时经常要创建菜单&#xff0c;并且动态显示和隐藏菜单或者是某个子菜单。以下就是实现的方法&#xff1a; 1。创建并显示菜单,先在资源里添加菜单&#xff0c;然后如下代码 SHMENUBARINFO mbi; ZeroMemory(&mbi, sizeof(SHMENUBARINFO)); mbi.cbSizesizeof(SHMENUBAR…

Java——集合的概述

* A&#xff1a;集合的由来* 数组是容器&#xff0c;集合也是容器* 数组的弊端&#xff1a;数组的长度是固定的&#xff0c;当添加的元素超过了数组的长度时&#xff0c;需要对数组重新定义&#xff0c;太麻烦* Java内部给我们提供了集合类&#xff0c;可以存储任意对象&#x…

排序算法中平均时间复杂度_操作系统中的作业排序(算法,时间复杂度和示例)...

排序算法中平均时间复杂度作业排序 (Job sequencing) Job sequencing is the set of jobs, associated with the job i where deadline di > 0 and profit pi > 0. For any job i the profit is earned if and only if the job is completed by its deadline. To complet…

python---文件处理

0x01 打开一个文件 python中内置了文件对象&#xff0c;通过open()函数就可以制定模式打开指定文件&#xff0c;并创建文件对象。该函数的格式如下&#xff1a; open(file[,moder[,buffering-1]])file&#xff1a;指定要打开或创建的文件名称&#xff0c;如果该文件不存在当前…

简易而又灵活的Javascript拖拽框架(四)

一、开篇 似乎拖拽已经被写烂了&#xff0c;没得写的了&#xff0c;可是我这次又来了&#xff5e; 上一次写的是跨列拖放&#xff0c;这次我要带给大家的是跨页拖放。 可以到这里来看看效果&#xff1a;示例效果 说明&#xff1a;1、如果将方框拖动到页签上立刻释放掉的话&…

Java——集合的基本功能测试

* 1,boolean add<E,e> 添加* 确保此 collection 包含指定的元素&#xff08;可选操作&#xff09;。* 参数&#xff1a;e - 确定此 collection 中是否存在的元素。E - 代表Object类&#xff0c;说明该add可以添加任何对象&#xff0c;任意对象都是Object的子类对象&…

《那些年啊,那些事——一个程序员的奋斗史》——78

招人风波之后&#xff0c;就很少见武总往18楼跑了&#xff0c;大部分时间都是坐在22楼的隔间。而武总对段伏枥的抱怨&#xff0c;也仅仅只有那次&#xff0c;后来就再也没有提过。对于段伏枥而言&#xff0c;还要不要招新人&#xff0c;后续如何去招新人&#xff0c;已经不是自…

python---异常处理结构

python中提供了很多不同形式的异常处理结构&#xff0c;其基本思路都是先尝试执行代码&#xff0c;再处理可能发生的错误。 try…except… 在python异常处理结构中&#xff0c;try…except…使用最为频繁&#xff0c;其中try子句中的代码块为可能引发异常的语句&#xff0c;e…

用css网站布局之十步实录 (转载)

第一步&#xff1a;规划网站http://www.52css.com/article.asp?id175 第二步&#xff1a;创建html模板及文件目录等http://www.52css.com/article.asp?id176 第三步&#xff1a;将网站分为五个div 网页基本布局http://www.52css.com/article.asp?id177 第四步&#xff1a;网…

Java——集合转数组并对其进行遍历

* A&#xff1a;集合的遍历* 其实就是以此获取集合中的每一个元素* B&#xff1a;案例* 把集合转成数组&#xff0c;可以实现集合的遍历* public Object[] toArray() 按适当顺序&#xff08;从第一个到最后一个元素&#xff09;返回包含此列表中所有元素的数组。…

鱼油账号记录程序(续) - 零基础入门学习Delphi39

鱼油账号记录程序&#xff08;续&#xff09; 让编程改变世界 Change the world by program 课件同上一讲&#xff0c;这一讲主要演示编程操作和修改程序&#xff01; [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink hrefhttp://kuai.xunlei.com/d/LDKX…

python---Socket编程

Sockte是计算机之间进行网络通信的一套程序接口&#xff0c;相当于在发送端和接收端之间建立一个通信管道。在实际应用中&#xff0c;一些远程管理软件和网络安全软件大多数依赖于Socket来实现特定功能&#xff0c;由于TCP方式在网络编程中应用非常频繁&#xff0c;此处将对TCP…

格式转换-----PDF格式研究笔记(一)

格式转换-----PDF格式研究笔记&#xff08;一&#xff09; 现在我的几个计划都需要我能够对PDF格式进行解码&#xff0c;所以找了一下资料&#xff0c;找到了一个PDF1.3的手册&#xff0c;特放出下载&#xff0c;如果谁有更高版本的&#xff0c;请给我一份&#xff0c;谢谢。 …

(X)HTML嵌套规则

本文整理于互联网~ 简单认识了块元素和内嵌元素以后&#xff0c;下面就可以罗列 XHTML 标签的嵌套规则了&#xff1a; 1. 块元素可以包含内联元素或某些块元素&#xff0c;但内联元素却不能包含块元素&#xff0c;它只能包含其它的内联元素&#xff1a;<div><h1>&…

Java——集合带All的功能演示

package com.wsq.collection;import java.util.ArrayList; import java.util.Collection; public class Demo4_CollectionAll {public static void main(String[] args) {demo1(); //c1.addAll(c2);将c2整个集合给添加到c1中,即&#xff0c;c2集合中的每…

ASP.NET Web API 处理架构

这篇文章主要是介绍ASP.NET Web API的处理架构&#xff1a;当一个HTTP请求到达直到产生一个请求的过程。ASP.NET Web API 的处理架构图如下&#xff0c;主要有三层组成&#xff1a;宿主&#xff08;hosting&#xff09;&#xff0c;消息处理管道&#xff08;message handler pi…