实战LFI+文件上传组合拳拿RCE
字数 1280 2025-08-26 22:11:45

实战LFI+文件上传组合拳实现RCE教学文档

漏洞概述

本案例展示如何通过结合本地文件包含(LFI)漏洞和任意文件上传漏洞,实现远程代码执行(RCE)。这种组合攻击方式在实际渗透测试中非常有效,特别是在目标系统存在不安全的访问控制措施时。

漏洞发现与分析

1. 路径遍历(Path Traversal)漏洞

目标站点存在一个关键端点:
/se/v92711/generic/gn_deaultframe/2.0/defaultframe_toolbar_load.php

关键参数

  • frameManagerPath:用于加载JS文件的参数,内容经过base64编码

利用步骤

  1. 发现POST请求中的frameManagerPath参数包含base64编码的相对路径
  2. 解码示例:L2V0Yy9wYXNzd2Q=/etc/passwd
  3. 通过修改此参数,可以读取服务器上的任意文件

2. 任意文件上传漏洞

发现点

  • 站点存在一个不受限制的文件上传功能
  • 上传后返回文件的相对路径(如/wwwroot/path:/

限制

  • 上传的文件无法通过外部直接访问(路径受限)
  • 单独利用价值有限

组合攻击实现RCE

攻击流程

  1. 上传Webshell

    • 上传一个包含恶意代码的文件(如PHP webshell)
    • 获取服务器返回的文件存储路径
  2. 路径处理

    • 对获得的文件路径进行base64编码
    • 示例:rant/blog/pathversal/image05.pngcmFudC9ibG9nL3BhdGh0cmF2ZXJzYWwvaW1hZ2UwNS5wbmc=
  3. LFI触发执行

    • 通过之前发现的路径遍历漏洞,包含上传的恶意文件
    • 构造请求将base64编码的路径作为frameManagerPath参数值
  4. 实现RCE

    • 服务器解析并执行上传的恶意文件
    • 获得远程代码执行能力

关键技术点

  1. 路径编码

    • 所有路径操作都需要进行base64编码
    • 确保特殊字符不会破坏请求结构
  2. 文件上传技巧

    • 尝试上传不同扩展名的文件(如.php、.png、.jpg等)
    • 观察服务器对文件内容的处理方式
  3. LFI利用

    • 测试不同的路径遍历技巧(如../..\、编码后的路径等)
    • 尝试包含系统日志、环境变量等常见LFI目标

防御建议

  1. 文件上传防护

    • 实施严格的文件类型验证(白名单方式)
    • 对上传文件进行内容检查
    • 随机化上传文件的存储路径和名称
    • 设置适当的文件权限,防止执行
  2. LFI防护

    • 禁用危险函数如includerequire
    • 实施严格的路径验证
    • 使用绝对路径而非相对路径
    • 对用户输入进行规范化处理
  3. 系统加固

    • 保持系统和应用软件更新
    • 实施最小权限原则
    • 禁用不必要的PHP功能

总结

本案例展示了如何通过组合利用两个看似独立的漏洞(LFI和文件上传)实现严重的RCE攻击。在实际渗透测试中,这种"组合拳"攻击方式往往能绕过单一漏洞的限制,达到更高的攻击效果。防御方需要全面考虑系统各层面的安全性,不能只防护单一漏洞类型。

实战LFI+文件上传组合拳实现RCE教学文档 漏洞概述 本案例展示如何通过结合本地文件包含(LFI)漏洞和任意文件上传漏洞,实现远程代码执行(RCE)。这种组合攻击方式在实际渗透测试中非常有效,特别是在目标系统存在不安全的访问控制措施时。 漏洞发现与分析 1. 路径遍历(Path Traversal)漏洞 目标站点存在一个关键端点: /se/v92711/generic/gn_deaultframe/2.0/defaultframe_toolbar_load.php 关键参数 : frameManagerPath :用于加载JS文件的参数,内容经过base64编码 利用步骤 : 发现POST请求中的 frameManagerPath 参数包含base64编码的相对路径 解码示例: L2V0Yy9wYXNzd2Q= → /etc/passwd 通过修改此参数,可以读取服务器上的任意文件 2. 任意文件上传漏洞 发现点 : 站点存在一个不受限制的文件上传功能 上传后返回文件的相对路径(如 /wwwroot/path:/ ) 限制 : 上传的文件无法通过外部直接访问(路径受限) 单独利用价值有限 组合攻击实现RCE 攻击流程 上传Webshell : 上传一个包含恶意代码的文件(如PHP webshell) 获取服务器返回的文件存储路径 路径处理 : 对获得的文件路径进行base64编码 示例: rant/blog/pathversal/image05.png → cmFudC9ibG9nL3BhdGh0cmF2ZXJzYWwvaW1hZ2UwNS5wbmc= LFI触发执行 : 通过之前发现的路径遍历漏洞,包含上传的恶意文件 构造请求将base64编码的路径作为 frameManagerPath 参数值 实现RCE : 服务器解析并执行上传的恶意文件 获得远程代码执行能力 关键技术点 路径编码 : 所有路径操作都需要进行base64编码 确保特殊字符不会破坏请求结构 文件上传技巧 : 尝试上传不同扩展名的文件(如.php、.png、.jpg等) 观察服务器对文件内容的处理方式 LFI利用 : 测试不同的路径遍历技巧(如 ../ 、 ..\ 、编码后的路径等) 尝试包含系统日志、环境变量等常见LFI目标 防御建议 文件上传防护 : 实施严格的文件类型验证(白名单方式) 对上传文件进行内容检查 随机化上传文件的存储路径和名称 设置适当的文件权限,防止执行 LFI防护 : 禁用危险函数如 include 、 require 等 实施严格的路径验证 使用绝对路径而非相对路径 对用户输入进行规范化处理 系统加固 : 保持系统和应用软件更新 实施最小权限原则 禁用不必要的PHP功能 总结 本案例展示了如何通过组合利用两个看似独立的漏洞(LFI和文件上传)实现严重的RCE攻击。在实际渗透测试中,这种"组合拳"攻击方式往往能绕过单一漏洞的限制,达到更高的攻击效果。防御方需要全面考虑系统各层面的安全性,不能只防护单一漏洞类型。