挖洞经验丨看我如何发现谷歌某生产系统中的LFI漏洞($13,337)
字数 1658 2025-08-18 11:38:41
谷歌生产系统LFI漏洞分析与利用教学文档
漏洞概述
本教学文档详细分析了一个在谷歌生产系统(springboard.google.com)中发现的本地文件包含(LFI)漏洞,该漏洞最终获得了$13,337的漏洞奖励。漏洞通过重定向组合构造方式被发现,能够远程在目标服务器上实现本地系统命令运行,获取系统敏感运行信息。
漏洞发现过程
第一次尝试:身份验证绕过
-
初始访问:
- 访问
https://springboard.google.com/会重定向到https://cloudsearch.google.com/cloudsearch/error?et=6 - 页面提示"只有内部工作人员才有权限执行应用服务"
- 访问
-
目录访问发现:
- 访问特定目录
https://springboard.google.com/REDACTED_DIR - 出现"OnContent Debug for"调试窗口
- 初步判断为内部信息泄露
- 访问特定目录
-
谷歌回应:
- 第一次评估认为"不算太严重以致可以分类为某种漏洞"
- 一周后确认"暂未达到奖励标准"
第二次尝试:深入挖掘LFI漏洞
-
使用工具:
- 使用Web应用暴破工具wfuzz发现隐藏目录
-
漏洞确认:
- 访问
https://springboard.google.com/REDACTED_DIR/ANOTHER_DIR - 显示"Redacted status main"(FrameworkInfo)的运行状态信息
- 点击"Show REDACTED"按钮重定向到包含文件参数的URL
- 访问
-
LFI验证:
- 重定向到
https://springboard.google.com/REDACTED_DIR/ANOTHER_DIR?file=/proc/self/environ - 成功加载并显示
/proc/self/environ内容 - 验证了LFI漏洞的存在
- 重定向到
漏洞利用技术细节
LFI漏洞利用方法
-
基础利用:
- 通过
file参数直接读取系统文件 - 示例:
?file=/proc/self/environ显示环境变量
- 通过
-
系统信息收集:
/proc/version- 获取系统版本信息/proc/self/environ- 获取当前进程环境变量(每次刷新不同,说明有多个服务器)
-
尝试进一步利用:
- 尝试读取
/proc/*/fd- 文件描述符信息 - 尝试获取ssh keys和server keys等敏感信息
- 尝试从LFI升级到RCE(未成功)
- 尝试读取
技术要点
-
重定向构造:
- 通过特定目录访问触发重定向
- 重定向URL中包含文件参数
-
信息泄露范围:
- 系统环境变量
- 进程信息
- 系统版本信息
-
权限级别:
- 具备管理员权限的LFI
- 可以访问系统级文件
漏洞修复建议
-
输入验证:
- 对文件路径参数进行严格过滤
- 限制可访问的文件路径范围
-
访问控制:
- 加强内部系统的身份验证机制
- 限制调试信息的公开访问
-
错误处理:
- 统一错误页面,避免泄露系统信息
- 禁用生产环境中的调试功能
教学总结
-
漏洞挖掘思路:
- 从简单的信息泄露入手
- 使用工具辅助发现隐藏资源
- 不满足于初步发现,深入挖掘潜在漏洞
-
LFI漏洞利用技巧:
- 尝试读取/proc目录下的各类文件
- 观察系统响应,寻找可利用点
- 尝试从信息泄露升级到代码执行
-
漏洞报告经验:
- 第一次报告可能不被认可,需要提供更有力的证据
- 展示漏洞的实际危害和影响范围
- 坚持深入挖掘,可能发现更严重的漏洞
附录:关键命令和URL结构
-
关键URL结构:
https://springboard.google.com/REDACTED_DIR/ANOTHER_DIR?file=[文件路径] -
有用的/proc路径:
/proc/self/environ- 环境变量/proc/version- 系统版本/proc/[pid]/fd/- 文件描述符
-
工具使用:
- wfuzz - Web目录和文件暴破工具
- 浏览器开发者工具 - 观察重定向和网络请求
通过本案例的学习,安全研究人员可以掌握从简单信息泄露到发现严重LFI漏洞的完整思路和方法,以及如何有效报告漏洞以获得认可和奖励。