记一次渗透测试历程
字数 1424 2025-08-26 22:11:40

渗透测试实战教学:从信息收集到绕过防御获取Shell

1. 信息收集阶段

1.1 目录和文件发现

  • .project文件:暴露项目结构信息
  • sql目录遍历:发现SQL导出文件
  • uploads目录遍历:可能发现上传漏洞
  • phpmyadmin泄露:数据库管理界面暴露
  • superadmin目录泄露:后台管理路径暴露
  • include目录遍历:可能包含敏感配置文件

1.2 数据库信息获取

  1. 从sql目录下载SQL导出文件
  2. 分析文件发现:
    • PHP版本信息
    • 使用phpstudy搭建的环境
  3. 通过somd5解密获得管理员密码:rock1980

2. 认证绕过

2.1 phpMyAdmin登录

  • 尝试组合:
    • admin/rock1980 → 失败
    • root/rock1980 → 成功登录

2.2 phpMyWind后台登录

  1. 发现另一个admin表
  2. 无法解密MD5密码
  3. 直接添加新用户:test/testtesttestaaa
  4. 使用新凭证成功登录后台

3. 漏洞利用

3.1 任意文件读取漏洞

  • 确认phpMyWind版本为5.3(低版本存在漏洞)
  • 结合include路径遍历,读取系统敏感信息
  • 参考漏洞:https://www.0dayhack.com/post-764.html

3.2 文件上传绕过

  1. 修改后台允许上传的文件后缀
  2. 尝试上传php文件 → 被WAF拦截
  3. 改为上传phtml后缀 → 成功绕过

4. 获取WebShell

  1. 成功上传WebShell
  2. 发现存在disable_functions限制:
    • 无法直接执行系统命令
    • 但putenv和mail函数未被禁用

5. 绕过disable_functions

5.1 使用LD_PRELOAD技术

  1. 通过phpinfo确认系统为CentOS 64位
  2. 上传64位.so文件
  3. 利用LD_PRELOAD + putenv绕过限制
  4. 参考实现:https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

5.2 执行系统命令

  • 成功执行ifconfig等命令
  • 发现系统内核较旧,存在潜在提权可能

6. 后续可能方向

  1. 权限提升

    • 利用旧内核漏洞尝试提权
    • 但需注意避免破坏系统
  2. 内网渗透

    • 内网规模较大,可尝试横向移动
    • 需先完成权限提升

7. 防御建议

  1. 信息泄露防护

    • 禁用目录列表
    • 移除开发文件(.project等)
    • 限制敏感目录访问
  2. 认证安全

    • 使用强密码策略
    • 防止SQL注入导致数据泄露
    • 实现安全的密码存储机制
  3. 上传防护

    • 严格限制上传文件类型
    • 实现内容检查而非仅扩展名检查
    • 隔离上传目录
  4. 系统加固

    • 及时更新系统和应用补丁
    • 合理配置disable_functions
    • 限制危险函数(putenv等)的使用
  5. 监控与日志

    • 监控异常登录行为
    • 记录文件上传和修改操作
    • 设置入侵检测系统

8. 技术总结

本案例展示了完整的渗透测试流程:

  1. 从信息收集开始
  2. 通过发现的漏洞逐步深入
  3. 结合多种技术绕过防御机制
  4. 最终获取系统控制权

关键点在于:

  • 全面的信息收集
  • 密码重用和弱密码的利用
  • 后台功能滥用(添加用户、修改配置)
  • 文件上传限制的绕过
  • disable_functions的绕过技术

渗透测试者需要具备:

  • 对常见漏洞的识别能力
  • 对防御机制的绕过技巧
  • 对系统权限的深入理解
  • 谨慎的操作态度(避免破坏系统)
渗透测试实战教学:从信息收集到绕过防御获取Shell 1. 信息收集阶段 1.1 目录和文件发现 .project文件 :暴露项目结构信息 sql目录遍历 :发现SQL导出文件 uploads目录遍历 :可能发现上传漏洞 phpmyadmin泄露 :数据库管理界面暴露 superadmin目录泄露 :后台管理路径暴露 include目录遍历 :可能包含敏感配置文件 1.2 数据库信息获取 从sql目录下载SQL导出文件 分析文件发现: PHP版本信息 使用phpstudy搭建的环境 通过somd5解密获得管理员密码: rock1980 2. 认证绕过 2.1 phpMyAdmin登录 尝试组合: admin/rock1980 → 失败 root/rock1980 → 成功登录 2.2 phpMyWind后台登录 发现另一个admin表 无法解密MD5密码 直接添加新用户:test/testtesttestaaa 使用新凭证成功登录后台 3. 漏洞利用 3.1 任意文件读取漏洞 确认phpMyWind版本为5.3(低版本存在漏洞) 结合include路径遍历,读取系统敏感信息 参考漏洞:https://www.0dayhack.com/post-764.html 3.2 文件上传绕过 修改后台允许上传的文件后缀 尝试上传php文件 → 被WAF拦截 改为上传phtml后缀 → 成功绕过 4. 获取WebShell 成功上传WebShell 发现存在disable_ functions限制: 无法直接执行系统命令 但putenv和mail函数未被禁用 5. 绕过disable_ functions 5.1 使用LD_ PRELOAD技术 通过phpinfo确认系统为CentOS 64位 上传64位.so文件 利用LD_ PRELOAD + putenv绕过限制 参考实现:https://github.com/yangyangwithgnu/bypass_ disablefunc_ via_ LD_ PRELOAD 5.2 执行系统命令 成功执行ifconfig等命令 发现系统内核较旧,存在潜在提权可能 6. 后续可能方向 权限提升 : 利用旧内核漏洞尝试提权 但需注意避免破坏系统 内网渗透 : 内网规模较大,可尝试横向移动 需先完成权限提升 7. 防御建议 信息泄露防护 : 禁用目录列表 移除开发文件(.project等) 限制敏感目录访问 认证安全 : 使用强密码策略 防止SQL注入导致数据泄露 实现安全的密码存储机制 上传防护 : 严格限制上传文件类型 实现内容检查而非仅扩展名检查 隔离上传目录 系统加固 : 及时更新系统和应用补丁 合理配置disable_ functions 限制危险函数(putenv等)的使用 监控与日志 : 监控异常登录行为 记录文件上传和修改操作 设置入侵检测系统 8. 技术总结 本案例展示了完整的渗透测试流程: 从信息收集开始 通过发现的漏洞逐步深入 结合多种技术绕过防御机制 最终获取系统控制权 关键点在于: 全面的信息收集 密码重用和弱密码的利用 后台功能滥用(添加用户、修改配置) 文件上传限制的绕过 disable_ functions的绕过技术 渗透测试者需要具备: 对常见漏洞的识别能力 对防御机制的绕过技巧 对系统权限的深入理解 谨慎的操作态度(避免破坏系统)