基础漏洞——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请求。
相关文章:

基础漏洞——SSRF
目录 一.原理 二.引起ssrf的函数 三.这些函数具体作用 (1)File_get_content() (2)Fsockopen() (3)Curl_exec() 四.常见的业务场景(可能出现的漏洞的地方,漏洞挖掘)…...

报错解决方案
大模型-报错解决方案 百度千帆大模型 仅个人笔记使用,感谢点赞关注 百度千帆大模型 未开通付费模型 qianfan.errors.APIError: api return error, req_id: code: 17, msg: Open api daily request limit reached 可能的原因: 未开通所调用服务的付费权限࿰…...

机器人的动力学——牛顿欧拉,拉格朗日,凯恩
机器人的动力学推导方法有很多,常用得有牛顿,拉格朗日,凯恩等方法,接下来,简单说说他们之间的使用。注:这里不考虑怎么来的,只说怎么应用。 参考1:4-14动力学分析方法-牛顿—欧拉方…...
【AI写作】解释区块链技术的应用场景和优势
【AI写作】解释区块链技术的应用场景和优势 浅浅的玩一下这个 AI 写作,本内容全为 AI 生成,仅为 AI 观点,无作者本人的观点。 区块链技术是一种去中心化的分布式账本技术,具有以下应用场景和优势: 金融领域ÿ…...

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...

一日连发两款视频大模型,火山引擎杀疯了!
9月24日,字节跳动旗下火山引擎在深圳举办AI创新巡展,并首次对外发布豆包视频生成-PixelDance、豆包视频生成-Seaweed两款AI大模型,并公布了多项AI大模型的全新升级,以一种全新的姿态迎接AI时代的到来。 雷科技此次受邀参与巡展&a…...

JavaScript --数字Number的常用方法
toFixed(保留几位小数) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthde…...

GIS开发常用的开源地图数据框架有哪些?
学完Web前端开发,还需要掌握哪些内容?本篇文章再给大家主要讲讲针对WebGIS开发的地图和可视化数据库。 Echarts ECharts是一个使用 JavaScript 实现的开源可视化库。它可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(…...

SPSS26统计分析笔记——2 描述统计
1 统计量 1.1 集中量数 (1)平均值:最常用的集中趋势统计指标,包括算术平均值、几何平均值和调和平均值等。 ①算术平均数:最常见的平均数,是所有数据的总和除以数据的个数。它能简单地反映数据的整体水平&…...
C++——输入一个字符串,把其中的字符按逆序输出。如输入LIGHT,输出THGIL。用string方法。
没注释的源代码 #include <iostream> #include <string.h> using namespace std; int main() { string a; cout<<"请输入字符串a:"; cin>>a; int k; ka.size(); for(int ik-1;i>0;i--) { cout<<a[i]; } return 0; }...

基于区块链的相亲交易系统源码解析
随着区块链技术的成熟与发展,其去中心化、不可篡改的特性逐渐被应用于各行各业。特别是在婚恋市场中,区块链技术的应用为相亲平台带来了新的可能性 。本文将探讨如何利用区块链技术构建一个透明、高效的相亲交易系统,并提供部分源码示例。 区…...

win11 wsl2安装ubuntu22最快捷方法
操作系统是win11,wsl版本是wsl2,wsl应该不用多介绍了,就是windows上的虚拟机,在wsl上可以很方便的运行Linux系统,性能棒棒的,而且wsl运行的系统和win11主机之间的文件移动是无缝的,就是两个系统…...
jekyll相关的技术点
jekyll相关的技术点 1. gem bundle jekyll 三者的关系gembundleJekyll 2. jekyll命令3. 注意事项 如果你用过github的Pages功能(现在在Action功能中),或者gitee中的Pages,那么对于jekyll你一定不陌生。今天研究部署了一下,供参考 1. gem bund…...

【Golang】Go语言中如何面向对象?
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

E2VPT: An Effective and Efficient Approach for Visual Prompt Tuning
论文汇总 存在的问题 1.以前的提示微调方法那样只关注修改输入,而应该明确地研究在微调过程中改进自注意机制的潜力,并探索参数效率的极限。 2.探索参数效率的极值来减少可调参数的数量? 解决办法 提示嵌入进行transformer中 提示剪枝 Token-wise …...

影刀RPA实战:网页爬虫之天猫商品数据
1.实战目标 1.1 实战目标 在电商行业,我们经常爬取各个平台的商品数据,通过收集和分析这些商品数据,企业可以了解市场趋势、消费者偏好和竞争对手的动态,从而制定更有效的市场策略。爬取商品数据对于企业在市场竞争中把握先机、…...

微信小程序注册流程及APPID获取(完整版图文教程)
文章目录 前言1. 注册微信小程序账号1.1微信小程序注册1.2 点击注册按钮,进入小程序注册步骤。1.3 填写邮箱、密码、验证码1.4 用户信息登记1.5 微信扫码认证后,回到微信公众平台点击确认提交1.6 进小程序后台,完成注册 2.完善小程序账号信息…...

分享课程:VUE数据可视化教程
在当今这个数据驱动的世界中,数据可视化已经成为了一种至关重要的工具,它帮助我们理解复杂的数据集,发现模式、趋势和异常。数据可视化不仅仅是将数字转换成图表,它是一种将数据转化为洞察力的艺术。 1.什么是数据可视化…...
Flink的反压机制:底层原理、产生原因、排查思路与解决方案
反压(Backpressure)是流处理框架(如 Apache Flink)中非常重要的概念。反压的产生和有效处理,直接影响整个流处理作业的稳定性和性能。本文将从 Flink 的底层原理、反压产生的原因、如何排查反压问题,以及如…...
Unity DOTS系列之Aspect核心机制分析
最近DOTS发布了正式的版本, 我们来分享一下DOTS里面Aspect机制,方便大家上手学习掌握Unity DOTS开发。 Aspect 机制概述 当我们使用ECS开发的时候,编写某个功能可能需要某个entity的一些组件,如果我们一个个组件的查询出来,可能…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...