SSRF思路及步骤

什么是SSRF?

SERVER SIDE REQUEST FORGERY的简写

因为服务器本身提供了资源获取相关的服务,在资源地址能够被用户控制时,将可能导致攻击者利用服务器身份获取预期外的资源的后果

危害?

条件满足的情况下:突破网络防护边界,造成内部信息或资源1被外部攻击者获取,比如探测内网存活主机、获取信任身份、攻击内网服务等。

原理?

利用服务器能够发送网络请求的特点,攻击者控制了服务器指定的发送内容。

支持那些请求协议?各个协议作用?

http:// 探测内网主机存活、端口开放情况

gopher:// 发送GET和POST请求:用TCP包攻击内网应用,如FastCGI、Redis

dict:// 泄露安装软件版本信息,查看端口,操作内网redis访问等(需要加上端口号)

file:// 读取本地文件

相关PHP函数和类

  • file_get_contents():将整个文件或一个url所指向的文件内容读入一个字符串中
  • readfile():读取一个文件的内容并输出
  • fsockopen():打开一个网络连接或者Unix套接字连接
  • curl_exec():初始化一个新的会话,返回一个cURL句柄,供curlsetopt(),curlexec()和curlclose()函数使用
  • fopen():打开一个文件或者URL

上述函数使用不当造成SSRF漏洞。此外,PHP原生类SoapClient在触发反序列化时可导致SSRF

测试代码:

//ssrf1.php
<?php
show_source(_file_);
&url=&_GET['url'];
echo file_get_contents(&url);
?>

上述测试代码中,file_get_contents()函数将整个文件或一个url所指向的文件读入一个字符串中,并展示给用户,我们构造蕾丝ssrf.php?url=../../../../etc/passwd的paylaod即可读取服务器本地的任意文件。也可以进行远程访问。

readfile()函数与file_get_contents()函数相似

fsockopen()

不能读取文件、能发起网络请求

fsockopen(&hostname,&port,&errno,&errstr,&tieout)用于打开一个网络连接或者Unix套装接字连接,初始化一个套接字连接到指定主机(hostname),实现对用户指定url数据的获取。改函数会使用socket跟服务器建立tcp连接,进行传输原始数据。fsockopen()将返回一个文件句柄,之后可以被其他文件类函数调用(例如:fgets(),fgetss(),fwrite(),fclose()还有feof())如果电泳失败,将返回false

测试代码:

<?
$host=$_GET['url'];
$fp = fsockopen($host,80,$errno,$errstr,30);
if(!$fp){echo"$errstr($errno)<br/>\n";
}else{$out="GET/HTTP/1.1\r\n";$out="Host:$host\r\n";$out="Connection:Close\r\n\r\n";fwrite($fp,$out);while(!feof($fp)){echo fgets($fp,128);    }ifclose($fp);
}
?>

构造ssrf,php?url=www.baidu.com即可成功触发ssrf并返回百度主页。但是该函数的ssrf无法读取本地文件

curl_exec()

能读文件、能发起网络请求

curl_init(url)函数初始化一个新的会话,返回一个cURL句柄,供curlsetopt(),curlexec()和curlclose()函数使用

测试代码:

<?
$url=$_REQUEST['url'];
$ch=curl_init($url);//创造一个curl资源
curl_setopt($ch,CURLOPT_HEADER,0);//设置url和响应的选项
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result=curl_exec($ch);//抓取curl并将其传递给浏览器
curl_close($ch);//关闭curl资源echo($result);
?>

构造ssrf.php?url=http://www.baidu.com/即可成功触发ssrf并返回百度主页

如何挖掘?挖掘场景?

看url、看功能、看代码

服务器调用三方资源时,其资源URL前端可控,比如:

  1. 找特征URL:通过URL地址分享内容,如?url=、src 、from、img、u、link、share wap urllink src source target u 3g display sourceURl imageURL domain res resource file host...

http://www.server.com/?url=xxxxx

  1. 找特殊场景:
  • 转码服务
  • 在线翻译
  • 图片加载与下载:通过URL地址加载或下载图片
  • 图片、文章收藏功能
  • 网站采集、网页抓取的地方
  • 头像的地方(远程加载头像)
  • 一切要你输入网址的地方和可以输入ip的地方
  • 文件下载
  • 连接其他网络服务

未公开的api实现以及其他调用url的功能

  1. 源码审计特殊函数

php相关ssrf函数

漏洞条件

受害服务器可通内网,或者,受害者服务器接受前端自定义资源URL并解析

相关协议限制

没有回显:带回原址

gopher://在各类脚本语言中利用限制?

注意

  1. 一半情况下PHP不会开启fopen的gopher wrapper
  2. file_get_contents的gopher协议不能URL编码
  3. file_get_contents关于Gopher的302跳转会出现bug,导致利用失败
  4. curl/libcurl 7.43 上gopher协议存在bug(%00截断) 经测试7.49 可用
  5. curl_exec() //默认不跟踪跳转
  6. .file_get_contents() // 支持php://input协议

防范思路?

  1. 过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
  2. 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
  3. 限制请求的端口为http常用的端口,比如,80,443,8080,8090
  4. 黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网
  5. 禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题
  6. 使其与内网隔离

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

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

相关文章

佛教祭拜小程序-寺庙小程序-纪念馆小程序

大家好&#xff0c;我是程序员小孟。 现在有很多的产品或者工具都开始信息话了&#xff0c;寺庙或者佛教也需要小程序吗&#xff1f; 当然了&#xff01; 前面我们还开发了很多寺庙相关的小程序&#xff0c;都有相关的介绍&#xff1a; 1,优质的寺庙小程序-H5寺庙网页 今天…

机器学习多场景实战

机器学习已不再局限于理论探讨&#xff0c;而是广泛渗透到我们生活的方方面面&#xff0c;成为解决复杂问题、优化决策过程的强有力工具。从智能推荐系统个性化推送你可能喜爱的电影和商品&#xff0c;到金融风控领域精准识别欺诈交易&#xff1b;每一个应用场景都是机器学习技…

(学习笔记)数仓建模

数仓建模 OLAP数仓分层数据模型数据模型建设方法模型建设具体流程模型数据域事实表设计事实表拉链表 数据模型规范表命名(采用阿里one-data设计)字段命名(采用阿里one-data设计)数据模型标注规范 数据模型发展周期 OLAP OLTP&#xff1a;概念全称OnLine Transaction Processin…

实验七、创建小型实验拓扑《计算机网络》

早检到底是谁发明出来的。 一、实验目的 完成本实验后&#xff0c;您将能够&#xff1a; • 设计逻辑网络。 • 配置物理实验拓扑。 • 配置 LAN 逻辑拓扑。 • 验证 LAN 连通性。 二、实验任务 在本实验中&#xff0c;将要求您连接网络设备并配置主机实现基本的网络…

【YOLO系列】YOLOv10论文超详细解读(翻译 +学习笔记)

前言 研究AI的同学们面对的一个普遍痛点是&#xff0c;刚开始深入研究一项新技术&#xff0c;没等明白透彻&#xff0c;就又迎来了新的更新版本——就像我还在忙着逐行分析2月份发布的YOLOv9代码&#xff0c;5月底清华的大佬们就推出了全新的v10。。。 在繁忙之余&#xff0…

第101天:权限提升-Win 本地用户进程注入令牌窃取ATSCPS 服务命令

目录 思维导图 案例一&#xff1a; WIN-本地用户-AT&SC&PS 命令 AT命令 sc PS 案例二&#xff1a;WIN-本地用户-进程迁移注入获取 msf 案例三&#xff1a;WIN-本地&Web-令牌窃取&土豆溢出 令牌窃取 土豆溢出 案例四&#xff1a; uac原理与绕过 思维…

【Qt】Frame和Widget的区别

1. 这两个伙计有啥区别&#xff1f; 2. 区别 2.1 Frame继承自Widget&#xff0c;多了一些专有的功能 Frame Widget 2.2 Frame可以设置边框

C51学习归纳4 --- 矩阵键盘

一、开发板原理图 我们可以看到这个键盘是4*4的&#xff0c;行可以由4个数据接口接收&#xff08;P1_4~7&#xff09;&#xff0c;列可以由4个数据接口接收&#xff08;P1_0~3)。 所以我们可让行作为扫描方向&#xff0c;或者列作为扫描方向&#xff0c;进行按键扫描。如何扫描…

VS2017配置OpenCV4.5.1

VS2017配置OpenCV 一、下载OpenCV二、配置OpenCV的电脑环境变量三、配置visual Studio添加路径复制文件到C盘 四、如何使用注意运行时选择Debug x64 五、报错&#xff1a;VSOpencv出现&#xff1a;xxx处有未经处理的异常: Microsoft C 异常: cv::Exception&#xff0c;位于内存…

@vue-office/excel遇到的问题 error in ./src/components/gem-histogram.base.vue?vuetype=templateid=691572

下载后一直抱这个错误 10:39:39 - Building for production... 10:40:36 ERROR Failed to compile with 41 errors2:40:31 AM 10:40:36 10:40:36 error in ./src/components/gem-histogram.base.vue?vue&typetemplate&id691572bb&scopedtrue 10:40:36 …

GaussDB的数种形态

GaussDB作为一种新兴的关系型数据库产品&#xff0c;似乎有点让人摸不着头脑。有朋友问我GaussDB单机版怎么样&#xff0c;有人说GaussDB是分布式数据库&#xff0c;还有人说它是云数据库&#xff0c;还有人会把GaussDB和华为的数据仓库GaussDB DWS混为一谈。确实&#xff0c;公…

算法学习笔记——时间复杂度和空间复杂度

时间复杂度和空间复杂度 常数操作&#xff1a; 固定时间的操作&#xff0c;执行时间和数据量无关 位运算 > 算数运算 > 寻址 > 哈希运算&#xff0c;都是常数操作&#xff0c;哈希运算操作时间最慢 链表的get(i)方法不是常数操作&#xff0c;因为链表不是连续的存储…

颠沛流离学二叉树(完结撒花篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

MT2083 屠龙勇者

思路&#xff1a; 跟上题类似&#xff0c;贪心策略&#xff1a;w从小到大排序&#xff0c;每个头找到第一个>d的w 代码&#xff1a; #include <bits/stdc.h> using namespace std; #define ll long long const int N 1e5 10; int n, m; int d[N]; int w[N]; int …

Spring Security 注册过滤器关键点与最佳实践

在 Spring Security 框架中&#xff0c;注册过滤器是实现身份验证和授权的关键组件。正确配置和使用注册过滤器对于确保应用程序的安全性至关重要。以下是一些关于 Spring Security 注册过滤器的注意事项和最佳实践。 过滤器链顺序&#xff1a; 注册过滤器通常位于过滤器链的末…

[next.js]pwa缓存

配置Next.js (v14 App Router模式) 使其支持PWA缓存&#xff0c;配置server worker和mainfest.json&#xff0c;让项目支持离线访问和可安装。 安装依赖next-pwa npm i next-pwa配置next.config.js const path require(path);const withPWAInit require(next-pwa);// 判断…

想要成长就要持续地学习,而如何学习更有效率呢

为什么很多人学了知识&#xff0c;但是总感觉记不住&#xff0c;用不上呢&#xff1f; 在学习的过程中&#xff0c;为什么总感觉没什么进步呢&#xff1f; 看了很多书&#xff0c;为什么总感觉没什么用呢&#xff1f; 要说明这些问题&#xff0c;首先我们要知道一个好的、完整的…

Chrome跳转新的标签页自动打开控制台设置方法

Chrome跳转新的标签页自动打开控制台设置方法 文章目录 Chrome跳转新的标签页自动打开控制台设置方法1. 首先打开控制台2. 点击设置3. 选择Preferences -> Global -> 选中 Auto-open DevTools for popups4. 回到控制台勾选 preserve log保留日志![请添加图片描述](https:…

图像背景去除工具:removebg

文章目录 简介面向不同用户价格 简介 removebg&#xff0c;就是remove background&#xff0c;是一款智能图片背景去除工具。 在免费使用时&#xff0c;用到的是本地的CPU。我第一次试用时&#xff0c;图片刚上传之后&#xff0c;电脑的帧率便直线下降&#xff0c;鼠标都拖不…

硬件26、EDA绘制板框

1、放置-板框-矩形 2、在pcb上绘制出需要大小的板框 3、设置板框四个角为圆弧状&#xff0c;在右侧属性栏设置圆角半径