SSRF思路及步骤

news2025/1/21 1:05:14

什么是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);    
    }i
    fclose($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.coloradmin.cn/o/1789950.html

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

相关文章

electron-Vue: Module parse failed: Unexpected character ‘ ‘

​ electron-Vue项目中&#xff0c;我自己写了一个node的C扩展&#xff08;xx.node&#xff09;&#xff0c;然后在.vue文件里import它&#xff0c;然后运行npm run electron:serve&#xff0c;报错如下: ​​ electron-Vue打包默认使用webpack&#xff0c;默认情况下webpack没…

Android Coil的简单介绍及使用

前言&#xff1a; 本文是借鉴网上大佬的Coil相关技术文章及结合自己项目中的实际使用情况&#xff0c;对Coil作一个简单介绍。 简介&#xff1a; Coil是一个Android的图片加载框架库&#xff0c;是通过Kotlin协程的方式加载图片的&#xff0c;相对于Glide、Picasso、Fresco等…

AWVS+BP+XRAY三层联动扫描漏洞

1. 前言 本报告详细记录了使用AWVS&#xff08;Acunetix Web Vulnerability Scanner&#xff09;、Burp Suite和Xray进行的漏洞扫描结果。旨在帮助开发团队识别和修复系统中的安全漏洞&#xff0c;提升整体安全性。 2. 扫描工具简介 AWVS&#xff08;Acunetix Web Vulnerabi…

公钥身份验证被拒绝

vim /etc/ssh/sshd_config 确保以下选项设置如下&#xff1a; PermitRootLogin no PubkeyAuthentication yes 注释掉GSSAPI 相关的选项 #GSSAPIAuthentication yes #GSSAPICleanupCredentials no 确保该UsePAM行设置为yes&#xff1a; UsePAM yes 保存文件并重启 sshd 服…

从零开始:如何通过美颜SDK构建自己的直播美颜工具

今天&#xff0c;我将详细介绍如何通过美颜SDK从零开始构建自己的直播美颜工具。 一、了解美颜SDK 什么是美颜SDK 开发者可以通过集成SDK&#xff0c;快速在应用中实现这些功能&#xff0c;而无需从头编写复杂的图像处理算法。 选择合适的美颜SDK 选择时可以根据以下几个方…

响应式网站设计:为何成为首选及其优点

随着近 35 亿万人使用不同的设备访问互联网&#xff0c;响应性网站的设计变得越来越重要。大多数网站的宽度 720 到 1,000 像素间。假如网站访问者的显示器设置为 800 像素或更大且页面宽度超过 720 像素&#xff0c;那么必须向右滚动屏幕来显示所有的信息。目前的问题是不清楚…

科普丨什么是数字孪生灌区(平台)?如何建设?有何好处?

在农业发展的新时代&#xff0c;数字孪生灌区的概念逐渐走进大众视野&#xff0c;成为推动农业现代化、提升粮食安全保障能力的关键力量。那么&#xff0c;究竟什么是数字孪生灌区&#xff1f;它又是如何建设的&#xff1f;又能为我们带来哪些好处呢&#xff1f; 数字孪生灌区…

【TB作品】msp430g2553单片机,家用可燃气体监测报警器,MQ-2,MQ5,PWM风扇

功能 //家用可燃气体监测报警器 //硬件&#xff1a;MQ-2 MQ5 OLED 蜂鸣器 按键 风扇 //1 OLED显示天然气、液化气浓度 //2 OLED显示可燃气体报警临界值 //3 2个按键用于修改可燃气体报警临界值 //4 MQ2检测到的浓度或者MQ7检测到的浓度 高于临界值时&#xff0c;蜂鸣器报警风扇…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-25 多点电容触摸屏实验

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

qlv文件怎么转换成mp4,qlv文件转换成mp4文件的工具软件

qlv转MP4的方法&#xff0c;一直是广大视频爱好者关注的问题。qlv是一种较为特殊的视频格式&#xff0c;而MP4则以其广泛的兼容性和优秀的播放效果&#xff0c;成为众多设备上的首选格式。因此&#xff0c;掌握qlv转MP4的技巧&#xff0c;对于提升视频观看体验至关重要。本文将…

svg使用 element plus 使用外部下载的svg,使用或作为背景图片的使用方式,svg背景填充自适应父级宽高

friger.vue 注意&#xff1a;引入路径后加#svgView(preserveAspectRatio(none))&#xff0c;可解决宽高设置无效的问题 代码上就这两句就行&#xff0c;它去这个路径下去找/assets/svgs/login-bg.svg&#xff0c;往这个目录下放svg文件就行<template><div class&quo…

D435相机结合Yolo V8识别出目标物体,并转点云出抓取位姿。

最近项目上需要完成整个识别、定位、到最后的抓取流程。 分享一下&#xff0c;通过使用D435相机并结合Yolo V8识别出目标物体后&#xff0c;抠取出目标物体部分的有效深度图&#xff0c;最后将前景物体部分的RGB D435相机结合Yolo V8识别出目标物体&#xff0c;并转点云出抓取位…

chatgpt之api的调用问题

1.调用api过程中&#xff0c;出现如下报错内容 先写一个测试样例 import openaiopenai.api_key "OPEN_AI_KEY" openai.api_base"OPEN_AI_BASE_URL" # 是否需要base根据自己所在地区和key情况进行completion openai.ChatCompletion.create(model"g…

空调外机清洁机器人设计

现在的空调&#xff0c;有很多安装在高层&#xff0c;一旦安装使用后&#xff0c;外机几乎不可能再清洗。因为费用高&#xff0c;清洁工人的钱应该是好几百还不止&#xff1b;清洁风险高&#xff0c;空调师傅需要高空作业&#xff0c;如果发生意外业主难以承担。但空调运行几年…

2024年分布式存储技术趋势:高性能、灵活架构与广泛应用

在数据驱动的世界中&#xff0c;存储技术的进步对于支撑现代企业和社会的数字化需求至关重要。2024年&#xff0c;分布式存储技术的发展呈现出一系列令人兴奋的趋势&#xff0c;预示着存储行业的未来走向。让我们一起探索这些关键趋势&#xff0c;并了解它们如何塑造我们的数据…

陆面生态水文模拟与多源遥感数据同化的实践技术应用

了解陆表过程的主要研究内容以及陆面模型在生态水文研究中的地位和作用&#xff1b;熟悉模型的发展历程&#xff0c;常见模型及各自特点&#xff1b;理解Noah-MP模型的原理&#xff0c;掌握Noah-MP模型在单站和区域的模拟、模拟结果的输出和后续分析及可视化等方法&#xff1b;…

Servlet详解(下)

目录 一、Servlet详解1.1、核心接口和类1.1.1、Servlet接口1.1.2、GenericServlet1.1.3、HttpServlet(推荐) 1.2、两种配置方法1.2.1、使用web.xml1.2.2、使用注解 二、Servlet应用2.1、request对象2.2、request主要方法2.2、response对象2.3、response主要方法 三、转发与重定…

LangChain框架介绍

LangChain 的核心组件 模型 I/O 封装 LLMs&#xff1a;大语言模型Chat Models&#xff1a;一般基于 LLMs&#xff0c;但按对话结构重新封装PromptTemple&#xff1a;提示词模板OutputParser&#xff1a;解析输出 数据连接封装 Document Loaders&#xff1a;各种格式文件的加载…

大数据数据治理

大数据数据治理介绍 大数据数据治理是一个复杂的过程&#xff0c;涉及到数据的标准化、融通、关联、解析、聚合等一系列活动。其核心目标是在确保数据安全的基础上&#xff0c;提高大数据资源和资产的可用性、易用性和可靠性&#xff0c;从而显著提升大数据资源和资产的价值7。…