一次打点测试
字数 1331 2025-08-06 08:35:25
ThinkPHP框架渗透测试实战教学文档
1. 信息搜集阶段
1.1 目录扫描
使用dirsearch工具扫描网站目录,发现以下关键信息:
- /.login - 登录入口
- /phpmyadmin - 数据库管理界面
- /robots.txt - 可能泄露敏感路径
- /.git - Git源码泄露漏洞
1.2 端口扫描
使用nmap进行端口探测发现:
- 22端口(SSH)开放
- 21端口(FTP)开放
- 80/443端口(HTTP/HTTPS)开放
1.3 登录点发现
发现两个登录入口:
- 主站登录点(/.login)
- 无验证码保护
- 可尝试爆破
- 子域登录点
- 有账号密码格式要求
- 安全性相对较高
2. 漏洞探测阶段
2.1 Git源码泄露利用
- 使用工具下载泄露的Git源码
- 分析源码发现:
- 基于ThinkPHP框架开发
- 包含数据库配置文件(config.php和database.php)
- 但未直接暴露数据库凭据
2.2 文件上传漏洞测试
发现ckeditor编辑器及其配套的kcfinder组件:
- 路径:/assert/ckeditor/kcfinder
- 可上传.htaccess文件但无法解析
- 外层存在.htaccess文件覆盖了上传的配置
2.3 注入点测试
发现4个参数提交点,其中1个产生ThinkPHP框架错误:
- 暴露了网站绝对路径
- 典型的ThinkPHP错误信息
3. 代码审计阶段
3.1 配置文件分析
- application/config/config.php
- application/config/database.php
- 未直接获取到数据库凭据
3.2 插件配置漏洞(CVE-2019-19502)
在pluginconfig.php中发现:
- 硬编码的账号密码
- 存在fwrite函数写入漏洞
- $newpath参数可控但被引号包裹
- 可通过花括号绕过:
${${eval($_POST[123])}}
3.3 上传点分析
发现imageuploader组件:
- 存在上传功能
- 但采用白名单限制
- 无法直接上传webshell
4. 漏洞利用过程
4.1 利用pluginconfig.php漏洞
- 构造payload写入恶意代码:
${${eval($_POST[123])}} - 通过fwrite函数写入到pluginconfig.php
- 验证写入成功
4.2 获取Webshell
- 使用蚁剑连接
- 成功获取服务器权限
- 实现系统控制
5. 防御建议
5.1 针对Git泄露
- 生产环境删除.git目录
- 配置服务器禁止访问.git目录
5.2 针对ThinkPHP框架
- 及时更新到最新版本
- 关闭调试模式
- 自定义错误信息
5.3 针对文件上传
- 严格限制上传文件类型
- 使用随机文件名
- 存储上传文件到非web目录
5.4 针对配置漏洞
- 避免硬编码凭据
- 限制配置文件写入权限
- 对用户输入进行严格过滤
6. 总结
本次渗透测试通过以下路径完成:
- 信息收集发现Git泄露
- 代码审计发现pluginconfig.php漏洞
- 利用fwrite函数写入webshell
- 成功获取系统权限
关键点:
- Git源码泄露是突破口
- 代码审计发现CVE-2019-19502漏洞
- 花括号绕过技术是关键利用点
- ThinkPHP框架错误信息泄露路径