温故而知新之面试靶场笔记
字数 1564 2025-08-19 12:42:18
面试靶场渗透测试实战笔记
靶场概述
这是一个基于ThinkPHP和PHPStudy搭建的面试靶场,主要考察渗透测试人员的综合能力,特别是代码审计和绕过技巧。目标是通过渗透测试最终实现远程登录到桌面。
初始信息
-
提示信息:
- 存在泄露文件
- 注意.htaccess文件
-
技术栈:
- ThinkPHP框架
- PHPStudy环境
- 部分页面使用伪静态(.html)
渗透测试过程
1. 信息收集
目录扫描:
- 使用御剑等工具扫描目录,发现报错页面泄露了ThinkPHP和PHPStudy信息
- 尝试常见ThinkPHP和PHPStudy漏洞无果
- 最终发现wwwroot.zip备份文件(位于style目录下)
伪静态页面注入:
- 发现伪静态页面:
http://xxx/help/fram/xxx/zjry*.html - 使用sqlmap时需要用
*指定参数位置才能识别注入点 - 成功获取管理员账号密码和自定义后台地址
2. 文件上传绕过尝试
前台上传点:
- 仅头像上传功能可用
- 直接上传php文件回显路径但无访问权限
- 上传.htaccess文件尝试绕过失败
限制原因:
- .htaccess文件限制了UP目录下的php文件执行,会跳转到error页面
- 编辑器(ueditor和kindeditor)对上传后缀进行了白名单限制
3. 后台利用
后台功能发现:
- 通过注入获取的后台地址登录
- 发现可查看目录文件的功能
- 找到数据库配置信息(但端口未开放,无法直接利用)
代码执行漏洞:
- 网站设置功能可设置参数代码
- 功能地址:
/Admin/global/ - 对应文件:
GlobalAction.class.php
漏洞分析:
// 存在问题的代码逻辑
if(有一个100的data参数并且不等于url变量){
// 删除$path文件
// 重新赋值
// 可控变量是url,data的值会赋给url
}
利用过程:
- 构造恶意payload尝试写入一句话
- 第一次构造不当导致后台无法访问
- 修复payload后成功获取webshell
4. 权限提升
- 通过webshell执行系统命令
- 实现远程桌面登录
- 该环节未做额外限制
关键知识点总结
.htaccess文件利用
.htaccess是Apache服务器的配置文件,可用于:
- 网页301重定向
- 自定义404错误页面
- 改变文件扩展名
- 允许/阻止特定用户或目录访问
- 禁止目录列表
- 配置默认文档
在本靶场中,.htaccess被用于限制UP目录下的php文件执行。
伪静态页面渗透技巧
- 识别伪静态页面特征(.html但实际是动态内容)
- sqlmap扫描时使用
*标记参数位置:zjry*.html - 伪静态页面可能隐藏真实的技术实现
文件上传绕过思路
- 检查服务器解析漏洞
- 尝试.htaccess文件绕过
- 检查MIME类型绕过
- 检查文件名大小写绕过
- 检查截断绕过
- 检查双扩展名绕过
代码审计要点
- 寻找可控变量传递的链条
- 注意文件操作函数(如unlink, file_put_contents等)
- 检查条件判断中的变量是否可控
- 寻找参数直接拼接执行的地方
经验教训
- 不要过度依赖自动化工具:大字典扫描未能发现明显漏洞,需要结合手动测试
- 全面测试所有功能点:后台的目录查看功能是关键突破点
- 代码审计能力至关重要:最终突破依赖于对PHP代码的理解
- payload构造要谨慎:不当的payload可能导致服务不可用
- 注意伪静态页面的特殊性:需要特殊方法测试注入点
防御建议
- 避免报错信息泄露
- 对上传文件进行严格的白名单限制
- 敏感操作需要权限验证
- 避免参数直接用于文件操作
- 定期检查并删除不必要的备份文件
- 对管理员功能进行二次验证
总结
这个靶场考察了渗透测试人员的多方面能力:
- 信息收集能力
- 漏洞利用能力
- 代码审计能力
- 绕过限制的创造力
- 耐心和细致程度
最终的突破点在于结合代码审计发现的后台功能漏洞,这提醒我们在渗透测试中要保持全面的视角,不放过任何可能的攻击面。