SSRF(Server-Side Request Forgery)
服务器端请求伪造
在服务器上的文件发起的请求访问本机或其他机器上的文件
攻击者构造形成由服务端发起请求的安全漏洞
相关函数
curl_exec
可以执行cURL会话,返回网站代码
用途:爬虫、获取接口数据、FTP下载文件
使用时需要添加php_从curl.dll扩展
file_get_contests()
将整个文件读入到一个字符串中
fsockopen()
打开一个网络连接或者Unix套接字连接
相关协议
file
查看文件
curl -v 'file:///etc/passwd'(三斜杠/// : 表示本地文件资源的路径)
dict
探测端口
用于搭建在线字典服务,还可以强行读取tcp协议内容
http://....?url=dict://127.0.0.1:3306
gopher
一种信息查找系统
反弹shell
出现相关协议或者函数则是存在这种SSRF漏洞
危害
1、扫描资产
2、获取敏感信息
3、攻击内网服务器(sql注入等绕过防火墙)
4、通过Redis写入WebShell或建立反弹连接
常见的场景
在读取解析地址的内容容易出现漏洞
1、社会化分享功能
2、转码服务
3、在线翻译
有些网站可以翻译整个网站的内容,那么翻译之前需要先解析漏洞
4、图片加载、下载功能
5、图片、文章收藏内容
6、网站采集、网站抓取
如何发现SSRF漏洞
1、爬取地址
抓取通信数据
2、查看是否请求了其他资源
使用Google语法搜索关键字
share、wap、url、link、src、source、target、u、3g、display、sourceURL、domin
拥有源码的情况下,搜索curl_exec(),file_get_contents(),fsockopen()三个函数
搜索SSRF漏洞的工具
https://github.com/cujanovic/SSRF-Testing
https://github.com/tarunkant/Gopherus
https://github.com/swisskyrepo/SSRFmap
pikachu靶场
curl
url中有资源请求
使用url读取本机文件
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=file://C:\windows\system32\drivers\etc\hosts
file_get_cintent
查询端口开放情况
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=http://127.0.0.1:7788
查询文件
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=file://C:\windows\system32\drivers\etc\hosts
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=php://flter/read=covert.base64-encode/resource=ssrf.php
如何防范SSRF漏洞
1、禁用协议
2、限制请求端口
3、设置URL白名单 只允许访问固定内容
4、过滤返回信息 只允许返回固定的内容
5、统一错误信息,不让用户看到报错信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义