首页 > 其他分享 >web安全漏洞之ssrf入门

web安全漏洞之ssrf入门

时间:2024-11-14 09:43:38浏览次数:3  
标签:web ch ssrf SSRF 漏洞 etc 安全漏洞 curl setopt

      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,ch,ssrf,SSRF,漏洞,etc,安全漏洞,curl,setopt
From: https://blog.csdn.net/2402_87039650/article/details/143638025

相关文章

  • Stable Diffusion教程|SD WebUI必备插件教程 菜鸟轻松成高手第二期Free U插件
    今天要给大家介绍一款进阶插件——FreeU。这个插件是一个很有意思的插件,可以为生成出来的图片在底噪上进行调整从而展现出完全不同的风格,以下是具体的使用教程。在教程开始前要事先申明,本教程的使用是建立在使用算网云平台SDWebuiforge镜像的基础上,如果使用秋叶安装包则不......
  • WEB3.0介绍
    Web3.0是对Web2.0的改进,被视为互联网潜在的下一阶段。以下是对Web3.0的详细介绍:一、定义与概念Web3.0被描述为一个运行在区块链技术之上的去中心化互联网。它旨在构建一个更加自主、智能和开放的互联网环境,其中用户不必在不同中心化的平台创建多种身份,而是能打造一......
  • CICD03 Jenkins对golang项目构建, 结合ansible, 构建通知, 自动化构建(定时,webhook),
    2.7.2基于Maven风格的任务构建基于WAR包运行Tomcat服务器JAVA项目maven配置繁琐,功能固定不灵活,不如自由风格好用,这里推荐用自由风格脚本实现更好目前最高依赖到tomcat9,更高版本的tomcat不支持2.7.2.2安装tomcat服务器和配置#在gitlab新建java项目(此项目使用JD......
  • WebXR:增强现实(AR)基础理论_2024-07-26_15-35-39.Tex
    WebXR:增强现实(AR)基础理论WebXR:增强现实(AR)基础理论WebXR简介WebXR的历史与发展WebXR是WebXRDeviceAPI的简称,它是一个由Web标准组织W3C开发的API,旨在为Web开发者提供一个统一的接口,用于创建虚拟现实(VR)和增强现实(AR)体验。WebXR的历史可以追溯到2016年,当......
  • WebXR与WebGL集成开发教程_2024-07-26_15-03-25.Tex
    WebXR与WebGL集成开发教程WebXR简介WebXR的由来与优势WebXR是WebXRDeviceAPI的简称,它是一个用于在Web浏览器中创建沉浸式虚拟现实(VR)和增强现实(AR)体验的API。WebXR的设计旨在提供一个统一的接口,让开发者能够更容易地在不同的设备和平台上创建和部署XR(扩......
  • WebXR与Web组件结合:创建沉浸式Web体验_2024-07-26_16-47-08.Tex
    WebXR与Web组件结合:创建沉浸式Web体验WebXR简介WebXR的定义WebXR是一个WebAPI,它允许开发者创建沉浸式的虚拟现实(VR)和增强现实(AR)体验,直接在网页浏览器中运行。这个API是WebVR的后继者,旨在提供更广泛、更统一的设备支持,以及更强大的功能,如空间追踪、手部追......
  • 应急响应-知攻善防web3
    应急响应-知攻善防web3前景需要:小苕在省护值守中,在灵机一动情况下把设备停掉了,甲方问:为什么要停设备?小苕说:我第六感告诉我,这机器可能被黑了。这是他的服务器,请你找出以下内容作为通关条件:Windows:administrator/xj@1234561.请输入攻击者第一个ip地址:192.168.75.129在p......
  • WebXR:虚拟现实(VR)基础理论_2024-07-26_15-18-02.Tex
    WebXR:虚拟现实(VR)基础理论WebXR:虚拟现实(VR)基础理论WebXR简介WebXR的历史与发展WebXR是WebXRDeviceAPI的简称,它是一个用于在网页上创建沉浸式虚拟现实(VR)和增强现实(AR)体验的API。WebXR的目标是简化开发者在不同设备和平台上创建XR体验的过程,提供一个......
  • 在webstorm里面使用prettier
    1.安装Prettierbash复制代码npminstall--save-devprettier2.创建Prettier配置文件在项目根目录下创建一个.prettierrc文件来定义Prettier的代码风格规则。以下是一个简单的Prettier配置文件示例:json复制代码{"semi":false,//不加分号......
  • [开题报告]基于javaweb的宠物医院平台dz56j9计算机毕业设计源码、研究背景、意义、目
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着人们生活水平的提高和城市化进程的加速,宠物已成为许多家庭的重要成员。宠物数量的增加带动了宠物相关产业的发展,其中宠物医院作为宠物健康保障的......