web安全漏洞之ssrf入门

news/2024/11/14 17:28:21/

      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 系统的网络状态信息

 


http://www.ppmy.cn/news/1546987.html

相关文章

WPF 应用程序中使用 Prism 框架时,有多种方式可以注册服务和依赖项

Prism 提供了更多的注册方式&#xff0c;适应不同的需求和场景。下面我会全面列出 IContainerRegistry 提供的所有常见注册方式&#xff0c;并附带相应的示例。1. 注册单例&#xff08;Singleton&#xff09; 注册单例类型服务&#xff0c;整个应用生命周期内只会创建一个实例&…

并发编程(10)——内存模型和原子操作

文章目录 十、day101. 内存模型基础1.1 对象和内存区域1.2 改动序列 2. 原子操作及其类型2.1 原子操作2.2 原子类型2.3 内存次序2.4 std::atomic_flag2.4.1 自旋锁 2.5 std::atomic&#xff1c;bool&#xff1e;2.6 std::atomic<T*>2.7 标准整数原子类型2.8 std::atomic&…

CSS Modules在框架中的使用

CSS Modules 是一种与框架无关的技术&#xff0c;然而不同的前端框架&#xff08;如 React、Vue、Angular&#xff09;对它的使用方式会有所不同。下面分别讲解如何在这几个框架中使用 CSS Modules。 1. React 中使用 CSS Modules React 是 CSS Modules 最常用的框架之一&…

本地源配置 以及ssh 和 nfs

安装软件的三种方式 apt 仓库 在/etc/apt/sources.list文件下 在线源 离线包 修改离线包 挂载并更新 ssh远程管理 sshd的配置文件 服务器命令行的远程登录方式 远程复制 先在第一台主机上创建文件 使用scp命令复制 sftp ssh的密钥登录 创建rsa密钥 将密钥文件传给另一台主机…

2024年交安安全员考试题库及答案

一、单选题 11.在2014年12月1日经修订后开始实施的《安全生产法》规定我国的安全生产工作方针是&#xff08;&#xff09;。 A.以人为本、安全第一、预防为主 B.安全第一、预防为主、政府监管 C.安全第一、预防为主、综合治理 D.安全第一、预防为主、群防群治 答案&#…

游戏引擎学习第四天

视频参考:https://www.bilibili.com/video/BV1aDmqYnEnc/ BitBlt 是 Windows GDI&#xff08;图形设备接口&#xff09;中的一个函数&#xff0c;用于在设备上下文&#xff08;device context, DC&#xff09;之间复制位图数据。BitBlt 的主要用途是将一个图像区域从一个地方复…

02-1_MVCC版本链清理

MVCC-版本链清理 文章目录 MVCC-版本链清理简介依赖机制Purge 操作的触发时机版本链清理的详细过程示例操作流程延迟清理配置和监控总结 简介 MySQL 中的 MVCC 机制通过版本链来管理数据的多版本存储&#xff0c;以支持高并发的读写操作。然而&#xff0c;随着事务的进行&…

普林斯顿:LLM基于边际优化的梯度纠缠

&#x1f4d6;标题&#xff1a;A Common Pitfall of Margin-based Language Model Alignment: Gradient Entanglement &#x1f310;来源&#xff1a;arXiv, 2410.13828 &#x1f31f;摘要 &#x1f538;从人类反馈中强化学习&#xff08;RLHF&#xff09;已成为对齐语言模型…