对印度某电子商务公司从LFI到数据库获取的渗透测试过程
字数 1603 2025-08-18 11:38:08
从LFI到数据库获取的渗透测试实战教学
1. 漏洞发现阶段
1.1 初始目标分析
- 目标:印度某大型电子商务公司
- 初始测试方向:本地文件包含漏洞(LFI)
- 测试重点:文件交互功能和特性
1.2 关键页面发现
-
发现一个APP下载页面,根据设备类型显示不同下载选项:
- "Android Google play"
- "iPhone App store"
-
点击按钮后的跳转行为:
http://www.xxxx.com/downloadcallback/null随后重定向到相应APP下载页面
1.3 漏洞触发条件分析
-
在隐身模式下移除引用页面(Referrer Page)后,返回"404 Page not found"
-
分析HTML源码发现关键线索:
<form action="downloadcallback/download_handler.php" method="get"> <input type="hidden" name="path" value="finaldownloadlink" id="nameURL"> </form> -
关键发现:
download_handler.php文件处理下载请求- 使用
path参数指定下载路径 - 最终URL格式应为:
downloadcallback/download_handler.php?path=
2. LFI漏洞利用
2.1 目录遍历攻击
-
测试payload:
path=etc/passwd -
成功读取系统文件,证明存在LFI漏洞
-
可读取的文件类型:
- Linux系统文件
- 配置文件
- 访问日志
- 用户access token
- 其他敏感信息
2.2 漏洞分析
download_handler.php文件问题:- 直接执行用户输入
- 无充分输入验证
- 返回请求响应
3. 转化为SSRF攻击
3.1 SSRF验证
-
使用
file:///协议读取本地文件:file:///etc/passwd -
可访问内部服务:
- 本地系统文件
- 内部API
- 元数据服务
3.2 AWS ElasticBeanstalk发现
-
读取
/etc/motd文件发现系统部署在AWS ElasticBeanstalk上 -
利用SSRF探测AWS元数据服务:
http://169.254.169.254/latest/dynamic/instance-identity/document -
获取的信息:
- AWS账号ID
- 云服务区域信息
4. AWS凭证获取
4.1 关键API发现
-
获取AWS凭证的API:
http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbeanstalk-ec2-role -
返回的敏感信息:
- AWS Access Key
- Secret Access Key
- Token
4.2 AWS CLI操作
-
使用获取的凭证配置aws-cli:
aws configure -
可执行的操作:
- 列出S3 bucket信息
- 下载S3 bucket数据到本地
5. 数据库获取
5.1 敏感文件发现
-
在S3 bucket中发现的关键文件:
- database.js
- config.js
- app.js
- payment.config
-
包含的敏感信息:
- 支付相关哈希键值
- 加盐值
- 数据库密码凭据
- 内部工具名称和密码
5.2 MongoDB访问
- 发现运行中的MongoDB实例
- 使用配置文件中明文的密码连接
- 获取的数据:
- 10,000+客户数据
- 部分用户详细信息
6. 漏洞修复建议
6.1 立即措施
- 轮换所有受影响的密钥和凭据
- 修复LFI漏洞
- 限制元数据服务访问
6.2 长期防护
-
输入验证:
- 对所有用户输入进行严格验证
- 实施白名单机制
-
权限控制:
- 遵循最小权限原则
- 限制EC2实例的IAM角色权限
-
敏感信息保护:
- 避免在配置文件中存储明文凭据
- 使用密钥管理系统
-
日志监控:
- 实施异常访问监控
- 设置敏感操作告警
-
架构安全:
- 使用私有子网隔离元数据服务
- 实施网络访问控制
7. 渗透测试方法论总结
-
信息收集:
- 分析应用功能点
- 审查前端代码
-
漏洞探测:
- 测试边界条件
- 尝试非常规输入
-
漏洞利用:
- 单一漏洞到组合利用
- 权限提升路径探索
-
横向移动:
- 利用获取的凭证访问其他服务
- 查找敏感数据存储位置
-
影响评估:
- 确定泄露数据范围
- 评估业务影响
8. 技术要点备忘
8.1 关键测试技术
-
LFI测试payload:
?path=../../../../etc/passwd ?path=file:///etc/passwd -
AWS元数据服务端点:
http://169.254.169.254/latest/meta-data/ http://169.254.169.254/latest/user-data/ http://169.254.169.254/latest/dynamic/instance-identity/document
8.2 AWS安全最佳实践
- 使用IMDSv2替代IMDSv1
- 为EC2实例配置最小必要权限的IAM角色
- 使用S3 bucket策略限制访问
- 启用S3 bucket加密和日志记录
8.3 开发安全建议
- 避免直接文件操作
- 使用安全的文件包含方法
- 实施严格的输入过滤
- 禁用危险PHP函数如
file_get_contents()