Pikachu | SSRF

漏洞概述

SSRF(server-side request forgery,服务器端请求伪造),在存在url包含的地址中,因服务器未对请求的目标地址做严格校验,攻击者利用服务器的合法请求能力诱导服务器向攻击者指定的目标(内网/外网、敏感服务)发送请求并获取请求结果。可突破网络边界,实现内网探测,敏感信息泄露甚至远程代码执行。

SSRF漏洞主要出现在需要服务器代用户发起请求的功能模块,例如:分享链接、图片/文件在线下载或文档的在线转换、网页截图工具等。

靶场复现

SSRF(curl)

crul函数介绍

crul函数可以让PHP代码模拟客户端(如浏览器)与远程服务器交互,支持HTTP/HTTPS、FTP、FILE、SMTP、Telnet多种协议的HTTP/HTTPS的GET/POST/PUT/DELETE请求场景。能够从远程URL上抓取内容(如接口数据、网页源码),或向接口提交表单、JSON等数据,支持FTP上传/下载文件或通过HTTP上传文件,也是PHP处理网络通信的核心工具。相比file_get_contents更加灵活:支持自定义请求头、POST数据、超时设置、SSL验证等。

复制代码
http://192.168.10.9:8086/vul/ssrf/ssrf_curl.php?
url=http://127.0.0.1:8086/vul/ssrf/ssrf_info/info1.php

http访问本地文件:

复制代码
http://192.168.10.9:8086/vul/ssrf/ssrf_curl.php?
url=http://127.0.0.1:8086/vul/unsafeupload/uploads/backdoor.php

dict扫描端口下的开放服务:

复制代码
http://192.168.10.9:8086/vul/ssrf/ssrf_curl.php?
url=dict://127.0.0.1:8086
复制代码
http://192.168.10.9:8086/vul/ssrf/ssrf_curl.php?
url=dict://127.0.0.1:3306

file读取本地文件:

*后跟文件绝对路径。

复制代码
http://192.168.10.9:8086/vul/ssrf/ssrf_curl.php?
url=file:///C:/Windows/System32/drivers/etc/hosts

*http与file访问本地文件之区别:http访问web服务器会识别未见后缀,如.php后缀,然后调用PHP解释器执行文件代码,最终返回执行后的HTML/JSON等结果。file访问不会触发PHP代码,直接读取.php文件的原始代码,如<?php phpinfo(); ?>。

SSRF(fiel_get_ content)

fiel_get_ content函数介绍

fiel_get_ content函数把整个文件读入到一个字符串中。支持http/https(需开启allow_url_fopen=On)、file协议(复现方式同上)。

利用时间差验证主机地址是否存在。

不存在的主机地址:192.168.32.130

复制代码
http://pikachu:8086/vul/ssrf/ssrf_fgc.php?
file=http://192.168.32.130

存在的主机地址:192.168.32.129

复制代码
http://pikachu:8086/vul/ssrf/ssrf_fgc.php?
file=http://192.168.32.129

SSRF(curl)方法同理。

漏洞加固

SSRF加固主要从参数校验、协议限制、权限控制、配置加固四个方面:

1、严格校验请求目标

对用户可控的URL/IP参数进行白名单校验,只允许访问可信域名/IP。

禁止访问内网地址或过滤所有内网地址。

标准化URL解析,避免绕过:使用语言内置的URL、解析函数(如PHP的parse_url()、java的java.net.URL),而非手动分割字符串,防止攻击者特使格式绕过校验。

2、限制请求协议和请求方法

禁用伪协议使用:gopher://、dict()://、ladp://、telnet://、ftp://、file://

保留使用:http://、https://

限制请求方法:仅允许业务的请求方法(get),禁用post、put、delete方法防止构造恶意请求。

3、配置加固

禁用allow_url_fopen(禁止file_get_contents()访问远程资源)、allow_url_include(禁止include/require包含远程文件)、限制oprn_basedir的默认目录(禁止file://协议读取敏感文件)

java环境中禁用URLConnection、HttpClient的协议支持,自定义URLStreamHandler仅允许http/https。

4、SSRF盲打防御

禁之服务器访问指定域名。

配置请求延迟阈值。

开启日志审计,记录所有服务器发起的请求(目标IP、端口、时间)等。监控大量内网IP扫描等异常请求。

相关推荐
guo_wen_qiang23 分钟前
mac中iTerm有没有类似xshell远程连接服务器的用户名密码方式,不用每次都要输入用户密码
运维·服务器·macos
ai小陈36 分钟前
PyTorch多GPU分布式训练实战:从单卡脚本迁移到DDP
服务器·人工智能·pytorch·分布式·深度学习·ai·gpu算力
沫璃染墨43 分钟前
《从零入门Linux系统篇(二十九):文件篇·二——深入文件描述符:从文件描述符表到重定向,再到Shell实现》
linux·运维·服务器·c++·驱动开发·系统架构
云上工程笔记1 小时前
2026 年 GPU 云服务器成本对比榜单:显存、算力、单小时价格和任务完成成本怎么算
运维·服务器
团子股股东峥哥1 小时前
day27-RHEL-访问Linux文件系统
linux·运维·服务器
佳児素花痴╮2 小时前
Linux IO模型详解:从阻塞到多路复用
linux·运维·服务器
tg_xianheyun2 小时前
2026BytePlus CDN加速应用场景全面解析
服务器·数据库·阿里云·云计算·cdn·全球访问优化·云直播
朝发如雪2 小时前
快速掌握Linux(4)(进程)
java·linux·服务器
啦啦啦啦啦zzzz2 小时前
共享内存的网络聊天室
linux·服务器·网络·c++·网络编程
菜根Sec2 小时前
信息安全工程师该怎么准备考试
web安全·网络安全·信息安全·信息安全工程师