记一次渗透测试历程
字数 1424 2025-08-26 22:11:40
渗透测试实战教学:从信息收集到绕过防御获取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的绕过技术
渗透测试者需要具备:
- 对常见漏洞的识别能力
- 对防御机制的绕过技巧
- 对系统权限的深入理解
- 谨慎的操作态度(避免破坏系统)