对印度某电子商务公司从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 长期防护

  1. 输入验证

    • 对所有用户输入进行严格验证
    • 实施白名单机制
  2. 权限控制

    • 遵循最小权限原则
    • 限制EC2实例的IAM角色权限
  3. 敏感信息保护

    • 避免在配置文件中存储明文凭据
    • 使用密钥管理系统
  4. 日志监控

    • 实施异常访问监控
    • 设置敏感操作告警
  5. 架构安全

    • 使用私有子网隔离元数据服务
    • 实施网络访问控制

7. 渗透测试方法论总结

  1. 信息收集

    • 分析应用功能点
    • 审查前端代码
  2. 漏洞探测

    • 测试边界条件
    • 尝试非常规输入
  3. 漏洞利用

    • 单一漏洞到组合利用
    • 权限提升路径探索
  4. 横向移动

    • 利用获取的凭证访问其他服务
    • 查找敏感数据存储位置
  5. 影响评估

    • 确定泄露数据范围
    • 评估业务影响

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安全最佳实践

  1. 使用IMDSv2替代IMDSv1
  2. 为EC2实例配置最小必要权限的IAM角色
  3. 使用S3 bucket策略限制访问
  4. 启用S3 bucket加密和日志记录

8.3 开发安全建议

  1. 避免直接文件操作
  2. 使用安全的文件包含方法
  3. 实施严格的输入过滤
  4. 禁用危险PHP函数如file_get_contents()
从LFI到数据库获取的渗透测试实战教学 1. 漏洞发现阶段 1.1 初始目标分析 目标:印度某大型电子商务公司 初始测试方向:本地文件包含漏洞(LFI) 测试重点:文件交互功能和特性 1.2 关键页面发现 发现一个APP下载页面,根据设备类型显示不同下载选项: "Android Google play" "iPhone App store" 点击按钮后的跳转行为: 随后重定向到相应APP下载页面 1.3 漏洞触发条件分析 在隐身模式下移除引用页面(Referrer Page)后,返回"404 Page not found" 分析HTML源码发现关键线索: 关键发现: download_handler.php 文件处理下载请求 使用 path 参数指定下载路径 最终URL格式应为: 2. LFI漏洞利用 2.1 目录遍历攻击 测试payload: 成功读取系统文件,证明存在LFI漏洞 可读取的文件类型: Linux系统文件 配置文件 访问日志 用户access token 其他敏感信息 2.2 漏洞分析 download_handler.php 文件问题: 直接执行用户输入 无充分输入验证 返回请求响应 3. 转化为SSRF攻击 3.1 SSRF验证 使用 file:/// 协议读取本地文件: 可访问内部服务: 本地系统文件 内部API 元数据服务 3.2 AWS ElasticBeanstalk发现 读取 /etc/motd 文件发现系统部署在AWS ElasticBeanstalk上 利用SSRF探测AWS元数据服务: 获取的信息: AWS账号ID 云服务区域信息 4. AWS凭证获取 4.1 关键API发现 获取AWS凭证的API: 返回的敏感信息: AWS Access Key Secret Access Key Token 4.2 AWS CLI操作 使用获取的凭证配置aws-cli: 可执行的操作: 列出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: AWS元数据服务端点: 8.2 AWS安全最佳实践 使用IMDSv2替代IMDSv1 为EC2实例配置最小必要权限的IAM角色 使用S3 bucket策略限制访问 启用S3 bucket加密和日志记录 8.3 开发安全建议 避免直接文件操作 使用安全的文件包含方法 实施严格的输入过滤 禁用危险PHP函数如 file_get_contents()