基础漏洞——SSRF

目录

一.原理

二.引起ssrf的函数

三.这些函数具体作用

(1)File_get_content()

(2)Fsockopen()

(3)Curl_exec()

四.常见的业务场景(可能出现的漏洞的地方,漏洞挖掘)

1.分享,通过URL地址分享网页内容,通过URL获取目标页标签等内容

第一种情况

第二种情况

第三种情况

第四种情况:这种就是没有开放

2.转码服务,适配手机屏幕大小,通过URL地址进行图片转码

3.图片加载与下载,通过URL加载网络图片(头像上传、等)

4.图片、文章收藏,通过URL获取目标的title等信息

五.从URL关键字中寻找

五.SSRF漏洞利用(危害)

六.SSRF漏防御


一.原理

由web应用去请求其他服务器加载图片,文件,如果加载文件这里的参数可以控制,就可以构造恶意的代码,形成由服务器端发起的请求的安全漏洞。

二.引起ssrf的函数

File_get_content()

Fsockopen()

Curl_exec()

三.这些函数具体作用

注释:这三个代码是我从SSRF漏洞原理攻击与防御(超详细总结)-CSDN博客博主那里借鉴的。解读了一下

(1)File_get_content()

下面的代码使用file_get_content()函数从用户指定的url获取图片。然后把它用一个随机文件名保存在硬盘上,并展示给用户。

<?phpif (isset($ _POST['url']))
{$content = file_get_contents($ _POST['url']);//漏洞点,通过POST传输,获取web页面数据$filename='./images/'.rand().';img1.jpg';//rand,随机产生文件名字.file_put_contents($filename,$content);echo $_POST['url'];$img = "<img src=\"".$filename."\"/>";}echo $img;?>

(2)Fsockopen()

以下代码使用fsockopen函数实现获取用户制定ur的数据(文件或者html)。这个函数会使用socket跟服务器建立tcp连接,传输原始数据。

前提:PHP fsockopen需要 PHP.ini 中 allow_url_fopen 选项开启。

allow_url_fopen = On

<?php 
function GetFile($host,$port,$link) 
{ 
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
/*$host:包含要连接的主机名(例如 "example.com")或 IP 地址。这就是漏洞点参数。intval($port):将端口号转换为整数,通常是服务器监听的端口(例如 HTTP 的 80,HTTPS 的 443)。
$errno:连接失败时捕获错误编号的变量。
$errstr:连接失败时捕获错误信息的变量。
这两个导致敏感信息泄露,特别是在错误消息中暴露了系统或服务器的详细信息30:连接尝试的超时时间(单位:秒)。*/if (!$fp) { 
echo "$errstr (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($fp, $out); 
$contents=''; 
while (!feof($fp)) { 
$contents.= fgets($fp, 1024); 
} 
fclose($fp); 
return $contents; 
} 
}
?>

(3)Curl_exec()

在 PHP 中,`curl_exec()` 函数用于执行一个 cURL 会话。cURL(Client URL Library)是一个用来传输数据的工具和库,支持各种协议,如 HTTP、FTP、SMTP 等。文件/数据被下载并存储在"cured"文件夹下的磁盘中,并附加一个随机数和“.txt”文件扩展名。

<?php 
if (isset($_POST['url']))//检查 POST 请求:
{
$link = $_POST['url'];//获取 URL
$curlobj = curl_init();//初始化 cURL,初始化一个 cURL 会话。
curl_setopt($curlobj, CURLOPT_POST, 0);//设置为 GET 请求(CURLOPT_POST, 0)。
curl_setopt($curlobj,CURLOPT_URL,$link);//设置要访问的 URL。
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);/*将返回结果作为字符串而不是直接输出(CURLOPT_RETURNTRANSFER, 1)。*/$result=curl_exec($curlobj);//执行 cURL 请求,执行 cURL 请求并将结果存储在 $result 中。
curl_close($curlobj);//关闭 cURL 会话,关闭 cURL 会话,释放资源。
$filename = './curled/'.rand().'.txt';
file_put_contents($filename, $result); /*生成文件名并保存结果,生成一个随机命名的文件名,将结果写入该文件。*/
echo $result;
}
?>

四.常见的业务场景(可能出现的漏洞的地方,漏洞挖掘)

1、分享,通过URL地址分享网页内容,通过URL获取目标页标签等内容

2、转码服务,适配手机屏幕大小,通过URL地址进行图片转码

3、图片加载与下载,通过URL加载网络图片(头像上传、等)

4、图片、文章收藏,通过URL获取目标的title等信息

5、其他加载URL的功能

1.分享,通过URL地址分享网页内容,通过URL获取目标页标签等内容

它访问了其他的网址

可以修改为内网服务器的IP地址,可以随便访问

实例

Pikachu靶场

点击

观察url

http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php

修改后面的地址,百度域名

http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://www.baidu.com

加载过来了,既然能读取第三方,那我是不是能读取内网里面的东西。

http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=file://D:/1.txt

我想要跨盘读取,这个过程是读不了的。

http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=file://C:/2.txt

这是因为这个不能跨盘读取。

我们可以通过ssrf来进行端口探测,这个的目的:如果探测到你的端口3306是开放的是不是说,知道你是mysql数据。

第一种情况

http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.2.18:3306

不允许连接,说明是开放的。

第二种情况

http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.2.18:445

秒反应,也是开启状态

第三种情况

http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.2.18:135

一直转圈圈,也是开放的

netstat -ant

第四种情况:这种就是没有开放

http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.2.18:1111

转了大概2秒就返回页面,页面没什么变化,说明端口未开放

2.转码服务,适配手机屏幕大小,通过URL地址进行图片转码

转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览

由于手机屏幕大小的关系,直接浏览网页内容的时候会造成许多不便,因此有些公司提供了转码功能,把网页内容通过相关手段转为适合手机屏幕浏览的样式。例如百 度、腾讯、搜狗等公司都有提供在线转码服务。

3.图片加载与下载,通过URL加载网络图片(头像上传、等)

在线翻译:通过URL地址翻译对应文本的内容。提供此功能的百度、有道等

4.图片、文章收藏,通过URL获取目标的title等信息

图片加载与下载:通过URL地址加载或下载图片

图片加载远程图片地址此功能用到的地方很多,但大多都是比较隐秘,比如在有些公司中的加载自家 图片服务器上的图片用于展示。(此处可能会有人有疑问,为什么加载图片服务器上的图片也会有问题,直接使用img标签不就好了,没错是这样,但是开发者为了有更好的用户体验通常对图片做些微小调整例 如加水印、压缩等,就必须要把图片下载到服务器的本地,所以就可能造成SSRF问题)

五.从URL关键字中寻找

share、 wap、 url.link、 src, source,target、 u、 3g、displaysourcellRL. imageURL、 domain

俗称的参数

?share=什么什么

五.SSRF漏洞利用(危害)

1.可以将中间服务当作跳板机,对外网,服务器所在内网,本地进行端口扫描,获取一些服务器的banner信息。

2.攻击运行在本地或内网应用程序,溢出攻击。

3.对内网web应用进行指纹识别。

4.攻击内外网的web应用,主要是使用get参数实现攻击。

5.利用一些伪协议(file)读取本地文件或远程文件。

六.SSRF漏防御

1.过滤返回的信息,也就是在讲返回结果展示给用户之前,先验证这个信息中符不符合标准。

2.同一错误信息,避免用户可以根据错误信息进行判断端口状态。

3.将一些无用的/危险的端口禁用,或者说限制ip访问。

4.制作白黑名单。

5.禁用一些不需要的协议,只用http/https请求。

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

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

相关文章

自动化学习2:pytest的高级用法(mark标记/fixture/hook)

一.mark的用法 概念&#xff1a;Pytest提供的mark标记&#xff0c;允许我们标记测试函数&#xff0c;测试类和整个模块。通过不同的标记实现不同的运行策略&#xff0c;如标记冒烟测试用例。 1.注册标记 可以在pytest.ini文件注册自定义标记 除了自己注册的标记外&#xff0…

蓝队技能-应急响应篇Web内存马查杀JVM分析Class提取诊断反编译日志定性

知识点&#xff1a; 1、应急响应-Web内存马-定性&排查 2、应急响应-Web内存马-分析&日志 注&#xff1a;传统WEB类型的内存马只要网站重启后就清除了。 演示案例-蓝队技能-JAVA Web内存马-JVM分析&日志URL&内存查杀 0、环境搭建 参考地址&#xff1a;http…

Java面试篇基础部分- 锁详解

可重入锁 可重入锁也叫作递归锁,是指在同一个线程中,在外层函数获取到该锁之后,内存的递归函数还可以获取到该锁。在Java语言环境下,ReentrantLock和Synchroinzed都是可重入锁的代表。 公平锁与非公平锁 公平锁(Fair Lock)是指在分配锁之前检查是否有线程在排队等待获取…

搜维尔科技:SenseGlove触觉反馈手套遥操作人形机器人、机械臂解决方案

硬件组成&#xff1a; 1. SenseGlove 力反馈手套&#xff1a;这是整个系统的核心交互设备&#xff0c;手套上配备了多种传感器和执行器。传感器可以精确地捕捉用户手部的动作&#xff0c;包括手指的弯曲程度、手掌的朝向、手部的移动速度等信息。执行器则能够根据系统反馈的信…

SRS流媒体服务器在宝塔面板下的安装

目录 一、安装 1、安装Docker 2、安装srs 二、测试 1、进入后台 2、推流 3、播放测试: (1)网页 (2)拉流 之前一篇文章,我们介绍了SRS流媒体服务器在CentOS下的安装,安装流程还是比较麻烦且耗时的,其实SRS支持Docker部署,今天我们介绍在宝塔面板的Docker中部署…

[C#]winform 使用opencvsharp实现玉米粒计数

【算法介绍】 这段代码是使用OpenCvSharp库&#xff08;OpenCV的C#封装&#xff09;对图像进行处理&#xff0c;主要流程包括图像的二值化、腐蚀操作、距离变换、轮廓检测&#xff0c;并在原图上标出检测到的轮廓位置及数量。下面是对代码的详细解读&#xff1a; 初始化&…

element下拉框联动 或 多选 回显数据后页面操作不生效问题解决

第一种:多选回显不生效 解决方式: 代码: <el-form-item label"系统" prop"Key"> <el-select v-model"addForm.Key" multiple placeholder"请选择" change"$forceUpdate()"> <el-option v-for"item …

【计算机网络 - 基础问题】每日 3 题(十九)

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

肝内胆管癌中三级淋巴结构分布与临床预后的相关性研究|文献精析·24-09-22

小罗碎碎念 这篇文章是关于肝内胆管癌&#xff08;intrahepatic cholangiocarcinoma, iCCA&#xff09;中三级淋巴结构&#xff08;tertiary lymphoid structures, TLSs&#xff09;的分布、密度及其对临床结果的预测价值的研究。 作者类型作者姓名单位名称&#xff08;中文&a…

如何在算家云搭建DiffSynth-Kolors-Painter(图像生成)

一、DiffSynth-Kolors-Painter简介 DiffSynth 画板提供了 Prompt 分区控制技术&#xff0c;可以通过创建图层、调整不同的提示&#xff08;Prompt&#xff09;精细地控制画面的每一部分&#xff0c;影响画面的特定区域&#xff0c;从而实现对画面的精细操控&#xff0c;实现了…

基于单片机的智能窗帘控制系统-设计说明书

设计摘要&#xff1a; 智能窗帘控制系统是一种利用单片机技术实现的智能化控制系统&#xff0c;可以实现窗帘的自动开合和定时控制功能。本系统的设计基于单片机技术&#xff0c;结合传感器、电机和执行器等硬件设备&#xff0c;实现对窗帘的智能化控制。通过传感器采集环境信…

从一个文本文件中挑选出符合条件的内容行

某天&#xff0c;张三得到一个需求&#xff0c;将如下格式的文本文件中的文件名开头的内容行提取出来&#xff0c;存入一个新的文本文件。 ok 0 文件名&#xff1a;1_zoukaige.mp3 index:10 文件名&#xff1a;2_dahan.mp3 index:20 文件名&#xff1a;3_kuai.mp3 index:30 文件…

LTE协议栈学习

1、高通Modem架构 LTE网络架构 3、LTE协议栈 1、 NAS协议栈: EPS Mobility Management (EMM) 支持UE中的移动功能 EPS Session Management (ESM) 支持在UE和PDN网关之间建立和维护IP连接 高通平台NAS层结构 根据3GPP TS 23.122描述&#xff0c; 自动搜网顺序如下 HPLMN EH…

Redisson 总结

1. 基础使用 1.1 引入依赖 <dependencies><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId></dependency> </dependencies>包含的依赖如下 1.2 配置文件 其实默认主机就…

MCU自动测量单元采集振弦式应变计测值的过程

振弦式应变计是一种广泛应用于土木工程、地质勘探等领域的高精度传感器&#xff0c;用于测量结构的应变变化。近年来&#xff0c;随着微控制器单元(MCU)的发展&#xff0c;自动化测量技术得到了极大的提升&#xff0c;使得振弦式应变计的测值采集更加高效和精确。本文将详细介绍…

vue-router路由(重定向,嵌套,动态路由匹配,命名,高亮,守卫)

一、前端路由的概念与原理 路由router就是对应关系。分为前端路由和后端路由。 1后端路由 后端路由指的是&#xff1a;请求方式、请求地址与function处理函数之间的对应关系。在node.js中&#xff0c;express理由的基本用法如下&#xff1a; const express require(expres…

IPsec-Vpn

网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 [FW1000-A]interface GigabitEthernet 1/0/2 [FW1000-A-GigabitEthernet1/0/2]ip address

【编程底层原理】Java常用读写锁的使用和原理

一、引言 在Java的并发世界中&#xff0c;合理地管理对共享资源的访问是至关重要的。读写锁&#xff08;ReadWriteLock&#xff09;正是一种能让多个线程同时读取共享资源&#xff0c;而写入资源时需要独占访问的同步工具。本文将带你了解读写锁的使用方法、原理以及它如何提高…

基于SSM的“银发在线教育云平台”的设计与实现(源码+数据库+文档)

基于SSM的“银发在线教育云平台”的设计与实现&#xff08;源码数据库文档) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 首页页面图 健身养生详情页面 在线课堂界面 …

解决 Prettier ESLint 错误

解决 Prettier ESLint 错误 在 Vue.js 项目中使用 ESLint 和 Prettier 时&#xff0c;你可能会遇到类似以下的错误&#xff1a; frontend\src\views\dashboard\MobileConfigPanel.vue1:25 error Delete ␍ …