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

web安全漏洞之ssrf入门

      web安全漏洞之ssrf入门

 

                     1.什么是ssrf

 

SSRF(Server Side Request Forgery,服务端请求伪造)是一种通过构造数据进而伪造成服务端发起请求的漏洞。因为请求是由服务器内部发起,所以一般情况下SSRF漏洞的目标往往是无法从外网访问的内系统。

SSRF漏洞形成的原理多是服务端提供了从外部获取数据的功能但没有对目标地址、协议等重要参数进行过滤和限制,从而导致可以自由构造参数并发出预期之外的请求。

 

                      2.URL结构

 

URL的结构如下: URL = scheme:[//authority]path[?query][#fragment]

 

 scheme由一串大小写不敏感的字符组成,表示获取资源所需的协议。

 

 authority中,userinfo用于进行身份验证,格式为username:password 

 

host表示服务器地址,一般是域名,也可能是ipv4或者ipv6地址

 

port表示服务器端口,如果不填,则使用协议的默认端口,比如http的80,ftp的21

 

path为资源路径,一般用"/"来分层 ,表示目录

 

query为查询字符串,接收用户输入参数,以"? "作为起点标识,比如"?name=crane"

 

fragment为片段ID,与query不同的是,它不会发送到服务端,只作为一个标记

 

                 3.ssrf漏洞利用方式

 

 

1.以PHP为例,实现了个包含SSRF漏洞的代理程序(帮你转发你的请求),代码如下:

 

```php

<?php $url = $_GET['url'];//从get参数中获取url的值

$ch = curl_init();//然后创建了curl这个对象

curl_setopt($ch, CURLOPT_URL, $url);//通过curl_setopt函数来给这个curl设置一些参数

curl_setopt($ch,CURLOPT_HEADER,false);//输出中不包含HTTP的header

curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); //表示跟随跳转

curl_setopt($ch, CURLOPT_TIMEOUT, 3);//大于3秒后会强制结束

curl_exec($ch);//开始执行

curl_close($ch);//关闭

?>

```

 

如果url=https://www.baidu.com,可以代理访问 www.baidu.com

 

2.但是因为代理程序的url未作任何过滤处理,所以可以修改url协议来发起SSRF。例如, 修改访问URL为:"file:///etc/passwd ",即可使用FILE协议访问本地文件/etc/passwd

这是SSRF最常见的利用方式,但更多的是读他的源码

 

3.SSRF漏洞通常出现在应用程序中,当它调用外部资源时可能会出现这种问题。

比如在社交服务中的分享功能、图片识别服务、网站采集服务以及远程资源请求或文件处理服务等场景下。

 

针对存在SSRF漏洞的应用程序进行测试的方法包括尝试控制和支持常见的协议:

 

 

file:从本地文件系统中读取文件的例子为file:///etc/passwd.

 

 

dict:字典服务器协议,原本用于查询词典信息,但由于支持自定义内容,因此可以用来探测端口并获取banner(例如Redis), 或者发送一些简单的流量给其他服务(比如MySQL)。

 

 

gopher:gopher是一种分布式文档传递服务,在SSRF攻击中有重要作用。通过使用gopher协议向特定IP地址及端口号发送任意内容,这可能模拟HTTP、Redis或者Mysql等网络请求行为。

 

4.在CTF和实战中,如果发现了目标存在SSRF漏洞,首先可以尝试通过file协议读取本地文件,了解目标系统的相关信息。

常见的文件路径如下:

/etc/passwd 几乎所有的linux发行版都会有这个文件,可以作为是否能读取本地文件的评判标准。同时他还保存了系统中有哪些用户

/etc/apache2/* 这个目录包含了apache2的配置文件,可以了解web目录,开放端口等信息

/etc/issue 这个文件一般表示该系统是什么linux发行版

/proc 这个目录存放着系统运行的状态信息,其中含有以pid命名的文件夹,保存着这个进程的信息。

还有一个self软连接指向当前运行的进程

/proc/[pid]/cmdline 程序运行的命令行

/proc/[pid]/env 程序运行的环境变量

/proc/[pid]/fd/* 程序打开的文件

/proc/net 系统的网络状态信息

 

相关文章:

web安全漏洞之ssrf入门

web安全漏洞之ssrf入门 1.什么是ssrf SSRF(Server Side Request Forgery,服务端请求伪造)是一种通过构造数据进而伪造成服务端发起请求的漏洞。因为请求是由服务器内部发起&#xff0c;所以一般情况下SSRF漏洞的目标往往是无法从外网访问的内系统。 SSRF漏洞形成的原理多是服务…...

《NoSQL 基础知识总结》

在当今的数据存储和管理领域&#xff0c;NoSQL 数据库正逐渐崭露头角&#xff0c;成为许多应用场景下的有力选择。今天&#xff0c;我们就来一起深入了解一下 NoSQL 的基础知识吧。 一、什么是 NoSQL&#xff1f; NoSQL&#xff0c;即 “Not Only SQL”&#xff0c;它是一种不…...

高校宿舍信息管理系统小程序

作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参…...

2.索引:MySQL 索引分类

MySQL中的索引是提高数据查询速度的重要工具&#xff0c;就像一本书的目录&#xff0c;可以帮助我们快速定位到所需的内容。选择适合的索引类型对数据库设计和性能优化至关重要。本文将详细介绍MySQL中常见的索引类型&#xff0c;并重点讲解聚集索引和二级索引的概念及应用。 1…...

sklearn红酒数据集分类器的构建和评估

实验目的&#xff1a; 1. 掌握sklearn科学数据包中决策树和神经网络分类器的构建 2. 掌握对不同分类器进行综合评估 实验数据&#xff1a; 红酒数据集 红酒数据集利用红酒的化学特征来描述三种不同类型的葡萄酒。 实验内容与要求&#xff1a; 解压文件得到wine数据。利用pa…...

【IC验证面试常问-4】

IC验证面试常问-4 1.11 struct和union的异同1.13 rose 和posedge 的区别&#xff1f;1.14 semaphore的用处是什么&#xff1f;1.15 类中的静态方法使用注意事项有哪些&#xff1f;1.16 initial和final的区别&#xff1f; s t o p , stop, stop,finish的区别1.17 logic,wire和re…...

【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!

数据集介绍 【数据集】道路事故识别数据集 8939 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。数据集中包含2种分类&#xff1a;{0: accident, 1: non-accident}。数据集来自国内外图片网站和视频截图。检测范围道路事故检测、监控视角检测、无人机视角检测、等&…...

书生浦语第四期基础岛L1G4000-InternLM + LlamaIndex RAG 实践

文章目录 一、任务要求11.首先创建虚拟环境2. 安装依赖3. 下载 Sentence Transformer 模型4.下载 NLTK 相关资源5. 是否使用 LlamaIndex 前后对比6. LlamaIndex web7. LlamaIndex本地部署InternLM实践 一、任务要求1 任务要求1&#xff08;必做&#xff0c;参考readme_api.md&…...

基于ViT的无监督工业异常检测模型汇总

基于ViT的无监督工业异常检测模型汇总 论文1&#xff1a;VT-ADL: A Vision Transformer Network for Image Anomaly Detection and Localization&#xff08;2021&#xff09;1.1 主要思想1.2 系统框架 论文2&#xff1a;Inpainting Transformer for Anomaly Detection&#xf…...

数据库管理-第258期 23ai:Oracle Data Redaction(20241104)

数据库管理258期 2024-11-04 数据库管理-第258期 23ai&#xff1a;Oracle Data Redaction&#xff08;20241104&#xff09;1 简介2 应用场景与有点3 多租户环境4 特性与能力4.1 全数据编校4.2 部分编校4.3 正则表达式编校4.4 随机编校4.5 空值编校4.6 无编校4.7 不同数据类型上…...

运放进阶篇-多种波形可调信号发生器-产生方波-三角波-正弦波

引言&#xff1a;前几节我们已经说到硬件相关基础的电路&#xff0c;以及对于运放也讲到了初步的理解&#xff0c;特别是比较器的部分&#xff0c;但是放大器的部分我们对此并没有阐述&#xff0c;在这里通过实例进行理论结合实践的学习。而运放真正的核心&#xff0c;其实就是…...

CSS中的变量应用——:root,Sass变量,JavaScript中使用Sass变量

:root—— 原生CSS 自定义属性&#xff08;变量&#xff09; 在 SCSS 文件中定义 CSS 自定义属性。然后通过 JavaScript 读取这些属性。 // variables.scss :root { --login-bg-color: #293146;--left-menu-max-width: 200px;--left-menu-min-width: 64px;--left-menu-bg-…...

WPF+MVVM案例实战与特效(二十八)- 自定义WPF ComboBox样式:打造个性化下拉菜单

文章目录 1. 引言案例效果3. ComboBox 基础4. 自定义 ComboBox 样式4.1 定义 ComboBox 样式4.2 定义 ComboBoxItem 样式4.3 定义 ToggleButton 样式4.4 定义 Popup 样式5. 示例代码6. 结论1. 引言 在WPF应用程序中,ComboBox控件是一个常用的输入控件,用于从多个选项中选择一…...

速盾:怎么使用cdn加速?

CDN&#xff08;Content Delivery Network&#xff09;即内容分发网络&#xff0c;是一种通过在网络各处部署节点来缓存和传输网络内容的技术。通过使用CDN加速&#xff0c;可以提高网站的访问速度、减轻服务器负载、提供更好的用户体验。 使用CDN加速的步骤如下&#xff1a; …...

C++ 优先算法 —— 三数之和(双指针)

目录 题目&#xff1a;三数之和 1. 题目解析 2. 算法原理 ①. 暴力枚举 ②. 双指针算法 不漏的处理&#xff1a; 去重处理&#xff1a; 固定一个数 a 的优化&#xff1a; 3. 代码实现 Ⅰ. 暴力枚举&#xff08;会超时 O&#xff08;N&#xff09;&#xff09; Ⅱ.…...

YOLOv7-0.1部分代码阅读笔记-yolo.py

yolo.py models\yolo.py 目录 yolo.py 1.所需的库和模块 2.class Detect(nn.Module): 3.class IDetect(nn.Module): 4.class IAuxDetect(nn.Module): 5.class IBin(nn.Module): 6.class Model(nn.Module): 7.def parse_model(d, ch): 8.if __name__ __main__…...

【缓存与加速技术实践】Web缓存代理与CDN内容分发网络

文章目录 Web缓存代理Nginx配置缓存代理详细说明 CDN内容分发网络CDN的作用CDN的工作原理CDN内容的获取方式解决缓存集中过期的问题 Web缓存代理 作用&#xff1a; 缓存之前访问过的静态网页资源&#xff0c;以便在再次访问时能够直接从缓存代理服务器获取&#xff0c;减少源…...

MySQL的约束和三大范式

一.约束 什么是约束&#xff0c;为什么要用到约束&#xff1f; 约束就是用于创建表时&#xff0c;给对应的字段添加对应的约束 约束的作用就是当我们用insert into时&#xff0c;如果传入的数据有问题&#xff0c;不符合创建表时我们定的规定&#xff0c;这时MySQL就会自动帮…...

Unity网络通信(part7.分包和黏包)

目录 前言 概念 解决方案 具体代码 总结 分包黏包概念 分包 黏包 解决方案概述 前言 在探讨Unity网络通信的深入内容时&#xff0c;分包和黏包问题无疑是其中的关键环节。以下是对Unity网络通信中分包和黏包问题前言部分的详细解读。 概念 在网络通信中&#xff0c;…...

练习题 - DRF 3.x Overviewses 框架概述

Django REST Framework (DRF) 是一个强大的工具,用于构建 Web APIs。作为 Django 框架的扩展,DRF 提供了丰富的功能和简洁的 API,使得开发 RESTful Web 服务变得更加轻松。对于想要在 Django 环境中实现快速且灵活的 API 开发的开发者来说,DRF 是一个非常有吸引力的选择。学…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

Git 命令全流程总结

以下是从初始化到版本控制、查看记录、撤回操作的 Git 命令全流程总结&#xff0c;按操作场景分类整理&#xff1a; 一、初始化与基础操作 操作命令初始化仓库git init添加所有文件到暂存区git add .提交到本地仓库git commit -m "提交描述"首次提交需配置身份git c…...

华为云Flexus+DeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手

华为云FlexusDeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手 一、构建知识库问答助手引言二、构建知识库问答助手环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建知识库问答助手实战3.1 配置Dify环境3.2 创建知识库问答助手3.3 使用知…...