Loading ...
SSRF 面试题

1. 什么是 SSRF?请简述其原理。

SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者诱导服务器发起恶意请求的漏洞。 原理:攻击者通过构造恶意输入(如 URL、参数等),诱导服务器后端程序(如爬虫、资源加载功能)发起请求。由于服务器通常拥有内网访问权限或本地资源访问权限,攻击者可借助服务器访问原本无法直接触及的资源(如内网服务、本地文件、受限 API 等),实现对内部网络或服务器自身的攻击。

2. SSRF 的成因及防御措施是什么?

  • 成因:开发人员未对用户输入的 URL / 参数进行严格校验(如未过滤内网 IP、危险协议),直接将用户可控内容传递给后端请求函数(如curl_execfile_get_contents等),导致服务器按攻击者意图发起请求。

  • 防御措施:

    • 限制协议:仅允许http/https,禁用file/gopher/ftp等危险协议;

    • 限制端口限制请求的端口为http常用的端口,比如,80,443,8080,8090:

    • 过滤内网 IP:禁止访问内网 IP(如10.0.0.0/8192.168.0.0/16127.0.0.1)和本地回环地址;

    • 过滤返回信息:在返回结果展示给用户之前先验证返回的信息是否符合标准;

    • 统一错误信息:避免用户可以根据错误信息来判断远端服务器的端口状态。

    • 禁止跳转:关闭 HTTP 自动跳转,阻止服务器在发起请求时自动跟随 301/302 等重定向响应;

3. SSRF 常见于哪些应用场景?

常见于需要服务器主动发起外部请求的功能,例如:

  • URL 分享 / 预览功能(自动抓取链接标题、图片);

  • 远程资源加载(如从 URL 上传图片、视频,加载外部脚本);

  • 在线翻译工具(通过 URL 翻译网页内容);

  • 云服务内部调用(如跨服务 API 请求、CDN 节点资源拉取);

  • 爬虫服务(批量抓取外部网站内容)。

4. SSRF 漏洞可能出现的场景有哪些?

与应用场景类似,更侧重具体功能点:

  • 社交平台的 “链接预览” 功能(自动请求用户输入的 URL);

  • 电商平台的 “外部商品导入”(从 URL 加载商品信息);

  • 企业内部系统的 “远程数据同步”(未过滤同步目标地址);

  • 物联网设备的 “远程控制接口”(通过 URL 发送控制指令);

  • API 网关的 “第三方服务代理”(直接转发用户输入的 API 地址)。

5. SSRF 重点函数有哪些?

不同语言中常用于发起请求且易引发 SSRF 的函数:

  • PHP:curl_execfile_get_contentsfsockopenfopenreadfile

  • Python:urllib.urlopenrequests.gethttplib.HTTPConnection

  • Java:URL.openStreamHttpClient.executeOkHttpClient.newCall

  • Node.js:http.getaxios.getfetch

6. PHP 站点中,哪些函数或者类可能会引发 SSRF?

  • 函数:curl_exec(curl 系列)、file_get_contentsfsockopenfopenreadfilestream_socket_client

  • 类 / 方法:SimpleXMLElement(加载外部 XML 时)、DOMDocument::load(加载外部资源)、GuzzleHttp\Client(HTTP 客户端类)。

7. SSRF 常见的相关协议有哪些?(及作用)

  • http/https:访问内网或外部 Web 服务,探测端口、服务版本;

  • file:读取服务器本地文件(如file:///etc/passwd);

  • ftp:访问内网 FTP 服务,读取 / 上传文件;

  • gopher:构造复杂请求(如 POST 数据、多协议数据包),攻击内网服务(如 Redis 未授权访问、MySQL 注入);

  • dict:查询端口信息(如dict://127.0.0.1:6379/info探测 Redis 端口);

  • ldap:访问内网 LDAP 服务,获取目录信息或注入攻击。

8. SSRF 利用方式有哪些?

  • 探测内网:扫描内网 IP 段和端口,获取存活主机、服务版本(如http://192.168.0.1:8080);

  • 读取文件:通过file协议读取服务器本地敏感文件(如/etc/passwd/proc/self/environ);

  • 攻击内网服务:利用内网服务漏洞(如 Redis 未授权、Weblogic 反序列化),执行命令或写入文件;

  • 反弹 shell:通过gopher协议构造恶意请求,向内网漏洞服务(如 Struts2)发送 shell 指令;

  • DOS 攻击:请求大文件或高频访问内网端口,消耗服务器资源。

9. 你发现一个 SSRF 漏洞你会怎么利用?

  • 第一步:验证漏洞存在(如请求http://127.0.0.1看响应,或用file:///etc/passwd测试文件读取);

  • 第二步:探测内网范围(扫描192.168.0.0/2410.0.0.0/8等网段,通过响应时间判断存活 IP 和开放端口);

  • 第三步:识别内网服务(访问常见端口如 8080、3306、6379,结合响应内容判断服务类型,如 Tomcat、MySQL、Redis);

  • 第四步:针对性攻击(如利用 Redis 未授权写公钥、Weblogic 反序列化漏洞执行命令);

  • 第五步:扩大影响(读取内网凭证、横向移动攻击其他主机)。

10. SSRF 可以用来攻击内网哪些应用?

常见内网应用及攻击点:

  • Redis:未授权访问时,通过gopher协议写入计划任务或 ssh 公钥;

  • MySQL/MSSQL:弱口令情况下,通过http/tcp请求执行 SQL 注入;

  • Weblogic:利用其 HTTP 接口漏洞(如 CVE-2017-10271)执行反序列化攻击;

  • Tomcat:访问默认管理页面(/manager),尝试弱口令登录;

  • Elasticsearch:未授权访问时,读取敏感索引数据或执行脚本;

  • 邮件服务器(SMTP):发送恶意邮件或枚举用户。

11. SSRF 绕过姿势有哪些?

  • IP 绕过:用 IP 变种(如127.0.0.12130706433十进制、0x7F000001十六进制、localhost);

  • 协议绕过:加特殊符号(如http://@192.168.0.1@后 IP 优先解析);

  • 端口绕过:用端口注释(如192.168.0.1:80#192.168.0.1:80/);

  • 跳转绕过:通过 302 跳转(先请求外部可控域名,再跳转到内网 IP);

  • DNS 重绑定:利用 DNS 解析延迟,先返回合法域名,再返回内网 IP;

12. 如何检测和挖掘 SSRF 漏洞?(含检测思路)

  • 思路 1:定位用户可控参数(如urlimage_urlsource等可能传入 URL 的参数);

  • 思路 2:构造测试 payload :

    • 访问内网 IP(192.168.0.1)和本地 IP(127.0.0.1),对比响应差异;

    • 访问内网127.0.0.180端口和55555端口,对比响应差异

    • 访问不存在的 IP 和存在的 IP,观察响应时间(存在的 IP 通常响应更快);

    • file:///etc/passwd测试是否能读取文件;

    • 调用dnslog平台(如xxx.dnslog.cn),若服务器请求该域名,说明存在请求发起行为;

  • 思路 3:结合业务功能(如 URL 预览、远程上传),主动测试是否会触发服务器请求。

13. SSRF 不出网怎么探测?

不出网时无法通过外部dnslog验证,需依赖内网特征:

  • 探测内网 IP 段(192.168.0.0/2410.0.0.0/8),通过响应时间差异判断端口是否开放(开放端口响应更快);

  • 访问内网常见服务的默认页面(如 Tomcat 默认页/、Nginx 欢迎页),对比响应内容;

  • 测试本地服务(如127.0.0.1:22(SSH)、127.0.0.1:3306(MySQL)),不同服务的响应头或状态码不同;

  • 利用服务器读本地文件(如file:///proc/self/cmdline),若能读取则确认漏洞存在。

14. SSRF 只能用 http 怎么打 weblogic?

Weblogic 存在多个 HTTP 协议可利用的漏洞,通过 SSRF 发起 HTTP 请求攻击:

  • 利用其内置 SSRF 漏洞(如 CVE-2014-4210):向 Weblogic 的uddiexplorer/SearchPublicRegistries.jsp传入内网 IP,探测并攻击其他 Weblogic 节点;

  • 利用反序列化漏洞(如 CVE-2017-10271):通过 SSRF 向 Weblogic 的/wls-wsat/路径发送恶意 HTTP POST 数据(含反序列化 payload),触发命令执行;

  • 访问管理端口(默认 7001):尝试弱口令登录管理控制台,或利用控制台部署恶意 war 包。

15. SSRF 的检测工具有哪些?

  • Burp Suite 插件:SSRF Scanner(自动检测请求中的 SSRF 参数)、Param Miner(发现隐藏参数并测试)。

  • 开源工具:ssrf-test.py(自定义 Payload 测试脚本)、OWASP ZAP(集成 SSRF 检测规则)。

  • 手动工具:通过 Burp 拦截请求,手动修改 URL/IP 参数(如将http://example.com改为http://127.0.0.1)验证是否可访问内网。

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇