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

SSRF(Server-Side Request Forgery:服务器端请求伪造) - 指南

SSRF的概念

其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制

导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据

是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)

数据流:攻击者----->服务器---->目标地址

根据后台使用的函数的不同,对应的影响和利用方法又有不一样

PHP中下面函数的使用不当会导致SSRF:

file_get_contents()

fsockopen()

curl_exec()

如果一定要通过后台服务器远程去对用户指定("或者预埋在前端的请求")的地址进行资源请求,则请做好目标地址的过滤。

1.file_get_contents()

下面的代码使用file_get_contents函数从用户指定的url获取图片。然后把它用一个随即文件名保存在硬盘上,并展示给用户。

";
}
echo $img;
?>

2. fsockopen()

以下代码使用fsockopen函数实现获取用户制定url的数据(文件或者html)。这个函数会使用socket跟服务器建立tcp连接,传输原始数据。

3. curl_exec()

cURL这是另一个非常常见的实现,它通过 PHP获取数据。文件/数据被下载并存储在“curled”文件夹下的磁盘中,并附加了一个随机数和“.txt”文件扩展名。

注意事项:

一般情况下PHP不会开启fopen的gopher wrapper

file_get_contents的gopher协议不能URL编码

file_get_contents关于Gopher的302跳转会出现bug,导致利用失败

curl/libcurl 7.43 上gopher协议存在bug(%00截断) 经测试7.49 可用

curl_exec() 默认不跟踪跳转,

file_get_contents() file_get_contents支持php://input协议

常见的 SSRF 绕过技巧

服务器可能会做基础校验(如过滤localhost、内网 IP),攻击者常用绕过方法:

IP 地址变形

内网 IP 的十进制 / 八进制 / 十六进制转换:如192.168.1.100转为十进制3232235876、八进制0300.0250.01.0144、十六进制0xC0.0xA8.0x01.0x64

利用域名解析:将内网 IP 绑定到公网域名(如attacker.com解析到192.168.1.100)。

关键字绕过

过滤localhost时,用0(等价于127.0.0.1)、localhost.localdomain127.0.0.0/8内的其他 IP(如127.0.0.2);

过滤192.168时,用192.168.0.0/16的子网变种(如192.168.0.1192.168.0.01)。

协议与特殊符号绕过

利用@符号:http://example.com@192.168.1.100(服务器解析为访问192.168.1.100);

非 HTTP 协议:如gopher://(可构造任意 TCP 请求,攻击 Redis、MySQL)、dict://(端口扫描)、file://(读取服务器本地文件)。

302 跳转绕过构造公网服务器的 302 跳转,指向内网目标:攻击者先搭建http://attacker.com,返回 302 响应跳转到http://192.168.1.100,再让漏洞服务器请求http://attacker.com

SSRF(curl)

进入平台

点击

发现url栏中出现了url地址?url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php

由题目可知则会使一个curl,因为curl支持很多协议,我们就可以做以下尝试:

1.通过网址访问链接

修改url为:url=http://www.baidu.com,访问百度页面

2.利用file协议查看本地文件(前提是那个地方有这个文件)

修改url为:url=file:///D:/download/111.txt,查看文件的内容

3.dict协议扫描内网主机开放端口

使用dict协议可以获取内网主机开放端口相应服务的指纹信息,比如说内网主机开了http端口的话,

可以修改url为:url=dict://自己的主机ip

SSRF(file_get_content)

点击

发现url变成了file,跟上一关类似

1、file读取本地文件(本地必须有该文件)

file=file:///D:/download/111.txt

2、http协议请求内网资源

file=http://127.0.0.1/pikachu/vul/sqli/1.php

http://www.jsqmd.com/news/269690/

相关文章:

  • 痞子衡嵌入式:如果你在找针对i.MX RT系列的OTA参考设计,可以持续关注Tiny OTA
  • 聊聊A*算法与Dijkstra算法的Matlab及C实现
  • 大学生“特种兵出游”网站开发任务书
  • 测试经理的AI助手:自动分配任务与资源‌
  • 探索MATLAB图像检索的多样世界
  • AI实时监控测试进度:预警延误与风险‌
  • LT6911UXC 与 LT9611UXC 视频桥接芯片固件架构与功能详解
  • 中华老黄历正版-分享几个正宗中华老黄历网站
  • 正宗中华老皇历-分享几个正宗中华老黄历网站
  • 【MySQL性能优化】MySQL8.0定时删除数据
  • 大学校园体育运动会管理系统开题报告
  • 配电网二阶锥节点电价(DLMP)优化模型MATLAB代码功能介绍
  • 国产化建设:从“可替代”走向“可控可演进”!
  • Comsol电磁波模型:研究金属超表面光栅在TE/TM偏振下斜入射的衍射级反射光谱计算
  • 测试团队的知识管理:AI自动归纳最佳实践
  • 基于Hadoop的出租房源信息分析系统开题报告
  • 【开题答辩全过程】以 基于Python的健康食谱规划系统的设计与实现为例,包含答辩的问题和答案
  • 锌枝晶 Comsol 仿真:三次电流分布建模探秘
  • SAP智能测试中心:重构企业级ERP的质量守护范式
  • 基于AI+Web的商品预购平台的设计与实现 #计算机毕业设计 论文 答辩PPT 毕设
  • 情感AI崩溃测试:当心理咨询机器人自己抑郁时的全链路检测方案
  • ue c++ 编译常量
  • Comsol超声管道导波模拟探索
  • 【开题答辩全过程】以 高校体育赛事管理系统的设计与实现为例,包含答辩的问题和答案
  • Google Cloud与AWS大数据AI服务对比(2026)
  • 浅析Agent Skills理解、Rules与Skills区别及Skills解决AI Agent的三大核心痛点
  • 人群仿真软件:AnyLogic_(13).人群仿真案例研究
  • 小程序毕设选题推荐:基于django+微信小程序的考研信息查询系统考研学习资源信息查询系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 【课程设计/毕业设计】基于nodejs的大众点评美食版小程序美食分享系统【附源码、数据库、万字文档】
  • 论文AI查重率爆表怎么办?揭秘2026年最有效的降AI策略与工具,助你顺利毕业!