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

SSRF漏洞

1、SSRF的概念

SSRF(服务器端请求伪造英文缩写)主要指攻击者利用服务端构造恶意请求,利用服务器作为代理访问内网或其他受限资源。

2、SSRF漏洞的成因

SSRF漏洞形成的原因:主要是因为服务端提供了从其他服务器应用获取数据的功能,然后服务端又未对用户输入的URL进行严格的过滤和验证,导致攻击者可以控制服务器发起任意HTTP请求。(能对外网发起网络请求就有可能存在SSRF漏洞)

典型的场景有:

网页内容抓取(如RSS订阅、URL预览)

文件下载功能(如通过URL下载图片或文档或源代码)

代理服务(如转发表单数据到第三方)

3、SSRF漏洞的危害

内网渗透:可以通过SSRF访问内网敏感服务(如数据库)

云环境风险:攻击者可以访问云服务元数据接口(如AWS/azure)

文件读取:可以利用 file:// 协议协议读取服务器本地文件 (如 /etc/passwd)

4、SSRF漏洞的攻击方式

1、对外网、服务器所在内网、本地 进行端口扫描(获取一些服务的banner信息)

2、攻击运行在内网或本地的应用程序 (如溢出)

3、攻击内外网的web应用,主要使用get参数就可以实现攻击(如sqli、struts2)

4、对内网web应用进行指纹识别,通过访问默认文件实现(就是通过访问一些常见的默认文件或路径来确定内网 Web 应用的类型和版本)

5、利用 file:// 协议读取本地文件

攻击手法

绕过内网IP限制

利用URl解析歧义(如PHP的 parse_url() 函数会解析 host=jd.com ,但实际请求的是127.0.0.1)

特殊IP格式:八进制IP(0177.0.0.1)或十六进制IP(0x7f000001

访问元数据服务

攻击者可以获取云服务器的 IAM 角色、临时密钥等

结合Redis反弹shell

通过 SSRF 访问内网 Redis 服务,写入恶意命令实现反弹 Shell

5、实操

今日靶场:

NSSCTF

[NSSRound#28 Team]ez_ssrf

$host = parse_url($url, PHP_URL_HOST);  

使用 parse_url 函数解析 $url 并提取主机部分,赋值给变量 $host ;

gethostbyname()函数将主机名解析为ip地址,赋值给变量 $ip;

禁止访问的ip地址列表包含 127.0.0.1 和 ::1(IPv6的本地回环地址),如果包含就报错;

初始化一个 cURL 会话,并设置目标 URL 为 $url;

设置 CURLOPT_RETURNTRANSFERtrue,使 cURL 将返回的数据作为字符串返回,而不是直接输出;

执行 cURL 会话,将结果存储在 $response 中;

    if (curl_errno($ch)) {
        echo json_encode(["error" => curl_error($ch)]);
    } else {
        echo $response;
    } 

剩下就是检查cURL是否发生错误,没有就输出请求响应内容

所以需要用url作为参数,以 http:// 开头构造请求,让服务器访问本地的 /flag 路由就能拿到flag。

那本地的ip无疑就是 127.0.0.1 但其为黑名单,无法直接用

那么可以利用域名解析的一些特性,例如使用 0.0.0.0 来代替 127.0.0.1,在某些网络配置中,0.0.0.0  可能被解析为 127.0.0.1 即可能被解析为服务器的本地网络接口,从而允许访问内网资源

然后接上 /flag 即可得到想要的信息

[NISACTF 2022]easyssrf

 我上来就输了个 flag 结果得到了提示

直接 fl4g 是不行的,都害羞上了

回去看到题目知识点提示php伪协议

那就用伪协议读取一下 /fl4g

file:///fl4g

注意这里为什么是3个/

(因为 file:// 是一个协议前缀,用于告诉PHP你想要访问的是本地文件系统。而 file:// 之后,路径的解析规则与URL类似,在URL中,路径通常以 / 开头,表示根目录。)

又得到提示

然后一访问,得到代码

看出来是文件包含了,直接用 file 读取flag即可

[HNCTF 2022 WEEK2]ez_ssrf

进来就是Apache服务器的貌似是配置信息页面还是什么

注意到提示让我们访问 index.php

访问后又得到一串代码

 

相关文章:

  • SQL SERVER中获取外部数据的两种方法!
  • Conda 基本使用命令大全
  • Wireshark使用教程(含安装包和安装教程)
  • 解构与重构:PLM 系统如何从管理工具进化为创新操作系统?
  • 缓解停车难:4G地磁如何重构车位分配?
  • DeepSeek提示词撰写心得
  • DeepSeek 赋能智能安防:从行为预测到即时预警的革新之路
  • 快速用 uv 模拟发布一个 Python 依赖包到 TestPyPI 上,以及常用命令
  • 使用 uv 工具快速部署并管理 vLLM 推理环境
  • Amazing晶焱科技:电子系统产品在多次静电放电测试后的退化案例
  • 【Fifty Project - D33】
  • 仓库拉下ssm项目配置启动
  • ros2--图像/image
  • YOLO在C#中的完整训练、验证与部署方案
  • 数据分析后台设计指南:实战案例解析与5大设计要点总结
  • Java开发中复用公共SQL的方法
  • 测试W5500的第11步_使用ARP解析IP地址对应的MAC地址
  • Postgresql字符串操作函数
  • 【笔记】解决MSYS2安装后cargo-install-update.exe-System Error
  • 如果科技足够发达,是否还需要维持自然系统(例如生物多样性)中那种‘冗余’和‘多样性’,还是可以只保留最优解?
  • 做网站分辨率设置多少/网站域名购买
  • 网站布局教程/济南优化seo公司
  • 动漫网站开发毕业设计/2022年今天新闻联播
  • 创建网站的目的是什么/新乡seo推广
  • 重庆药师网/seo网站关键词优化软件
  • 建站哪个网站比较好/东莞百度seo新网站快速排名