温故而知新之面试靶场笔记
字数 1564 2025-08-19 12:42:18

面试靶场渗透测试实战笔记

靶场概述

这是一个基于ThinkPHP和PHPStudy搭建的面试靶场,主要考察渗透测试人员的综合能力,特别是代码审计和绕过技巧。目标是通过渗透测试最终实现远程登录到桌面。

初始信息

  • 提示信息

    1. 存在泄露文件
    2. 注意.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
}

利用过程

  1. 构造恶意payload尝试写入一句话
  2. 第一次构造不当导致后台无法访问
  3. 修复payload后成功获取webshell

4. 权限提升

  • 通过webshell执行系统命令
  • 实现远程桌面登录
  • 该环节未做额外限制

关键知识点总结

.htaccess文件利用

.htaccess是Apache服务器的配置文件,可用于:

  • 网页301重定向
  • 自定义404错误页面
  • 改变文件扩展名
  • 允许/阻止特定用户或目录访问
  • 禁止目录列表
  • 配置默认文档

在本靶场中,.htaccess被用于限制UP目录下的php文件执行。

伪静态页面渗透技巧

  1. 识别伪静态页面特征(.html但实际是动态内容)
  2. sqlmap扫描时使用*标记参数位置:zjry*.html
  3. 伪静态页面可能隐藏真实的技术实现

文件上传绕过思路

  1. 检查服务器解析漏洞
  2. 尝试.htaccess文件绕过
  3. 检查MIME类型绕过
  4. 检查文件名大小写绕过
  5. 检查截断绕过
  6. 检查双扩展名绕过

代码审计要点

  1. 寻找可控变量传递的链条
  2. 注意文件操作函数(如unlink, file_put_contents等)
  3. 检查条件判断中的变量是否可控
  4. 寻找参数直接拼接执行的地方

经验教训

  1. 不要过度依赖自动化工具:大字典扫描未能发现明显漏洞,需要结合手动测试
  2. 全面测试所有功能点:后台的目录查看功能是关键突破点
  3. 代码审计能力至关重要:最终突破依赖于对PHP代码的理解
  4. payload构造要谨慎:不当的payload可能导致服务不可用
  5. 注意伪静态页面的特殊性:需要特殊方法测试注入点

防御建议

  1. 避免报错信息泄露
  2. 对上传文件进行严格的白名单限制
  3. 敏感操作需要权限验证
  4. 避免参数直接用于文件操作
  5. 定期检查并删除不必要的备份文件
  6. 对管理员功能进行二次验证

总结

这个靶场考察了渗透测试人员的多方面能力:

  • 信息收集能力
  • 漏洞利用能力
  • 代码审计能力
  • 绕过限制的创造力
  • 耐心和细致程度

最终的突破点在于结合代码审计发现的后台功能漏洞,这提醒我们在渗透测试中要保持全面的视角,不放过任何可能的攻击面。

面试靶场渗透测试实战笔记 靶场概述 这是一个基于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 漏洞分析 : 利用过程 : 构造恶意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可能导致服务不可用 注意伪静态页面的特殊性 :需要特殊方法测试注入点 防御建议 避免报错信息泄露 对上传文件进行严格的白名单限制 敏感操作需要权限验证 避免参数直接用于文件操作 定期检查并删除不必要的备份文件 对管理员功能进行二次验证 总结 这个靶场考察了渗透测试人员的多方面能力: 信息收集能力 漏洞利用能力 代码审计能力 绕过限制的创造力 耐心和细致程度 最终的突破点在于结合代码审计发现的后台功能漏洞,这提醒我们在渗透测试中要保持全面的视角,不放过任何可能的攻击面。