SpringBoot论坛系统安全测试实战报告
作者:大飞
项目类型:自研论坛系统
技术栈:SpringBoot + MySQL + Thymeleaf
测试范围:黑盒安全测试(不依赖专业渗透工具)
时间成本:1天可完成所有测试并整理报告
适用场景:面试展示、项目总结、安全入门
一、测试目标
对本人基于SpringBoot开发的论坛系统,进行一轮Web安全测试。测试重点参考OWASP Top 10漏洞类型,识别常见的安全风险,包括:
-
输入注入类(XSS、SQL注入等)
-
认证与会话类(未登录访问、权限绕过)
-
接口暴露与信息泄露
-
数据库存储安全
由于时间紧迫,本次测试不依赖Burp Suite、ZAP等安全工具,而是使用浏览器、Postman、数据库管理工具、日志文件分析完成。
二、测试环境说明
项目 | 描述 |
---|---|
系统类型 | 自研论坛系统(支持注册、登录、发帖、私信) |
后端框架 | Spring Boot |
前端模板 | Thymeleaf |
数据库 | MySQL |
测试方式 | 黑盒测试为主(模拟真实攻击) |
使用工具 | Postman + Chrome + 数据库客户端 + 日志查看器 |
三、安全测试用例(精选可落地)
1️⃣ 输入校验类
✅ S001 - 登录接口SQL注入
-
输入:' OR 1=1 --
-
测试点:SQL注入
-
结果:页面有警告提示弹窗,标签已转义 ✅
✅ S002 - 注册昵称 XSS 测试
-
输入:
<script>alert("XSS")</script>
-
测试点:注册昵称字段
-
结果:页面有警告提示弹窗,标签已转义 ✅
❌ S003 - 发帖功能存在严重存储型 XSS 漏洞
-
测试点:发帖正文字段
-
操作步骤:
-
登录任意用户账号,进入发帖页面;
-
正文中输入:
<script>alert("123")</script>
; -
发布帖子后刷新页面;
-
页面立即弹窗,且之后所有新发的帖子页面也弹出该脚本,证明该代码被原样存储并执行。
-
-
漏洞类型:存储型 XSS(Stored Cross Site Scripting)
-
影响等级:高危 🔥
-
风险描述:
-
攻击者可插入任意脚本,包括盗取登录用户的Cookie,伪造请求(如发帖、私信),劫持会话;
-
所有访问该贴的用户都将受影响;
-
可进一步造成蠕虫式传播(如自动发帖携带XSS代码);
-
-
漏洞原因:
-
服务端未对用户输入进行HTML转义或过滤;
-
前端渲染时未使用安全的输出机制(如
th:text
而非th:utext
);
-
-
安全建议:
-
后端输出转义:使用
StringEscapeUtils.escapeHtml4()
或框架内建HTML转义工具; -
模板引擎渲染时使用
th:text
,避免将用户输入当HTML渲染; -
可选增强:接入XSS过滤库(如 ESAPI、HtmlSanitizer)清除非法标签;
-
安全测试建议:加入XSS Payload字典,覆盖注册、发帖、私信等所有富文本输入点进行回归测试。
-
✅ S005 - 超长字符串输入测试
-
输入:昵称字段填入1万个字符
-
结果:系统提示“错误”,未崩溃 ✅
2️⃣ 认证与权限类
✅ S009 - 未登录访问受限接口
-
测试点:直接访问
/user/profile
-
结果:自动跳转登录页 ✅
✅ S011 - 水平越权删除他人帖子
-
操作:A用户登录,构造删除请求
post/delete?id=2
(ID为B用户帖子) -
结果:提示无权限,操作失败 ✅
✅ S012 - 垂直越权修改管理员信息
-
操作:普通用户用Postman访问
/admin/update
-
结果:返回Whitelabel Error Page,禁止访问 ✅
✅ S014 - 无Token访问私密接口
-
测试点:访问
/api/private/data
不带Token -
结果:接口返回Whitelabel Error Page ✅
3️⃣ 数据存储与接口安全类
✅ S015 - 密码加密存储检查
-
查看:MySQL
user
表 -
结果:密码字段为加密串(疑似 BCrypt),无明文存储 ✅
✅ S016 - 注册接口返回字段检查
-
测试点:注册成功后接口响应
-
结果:未返回敏感字段,如密码、盐、token等 ✅
✅ S017 - 日志信息是否泄露敏感数据
-
操作:多次输错密码,触发报错
-
查看:控制台 + 日志文件
-
结果:日志未打印用户输入 ✅
✅ S020 - 特殊符号输入处理测试
-
输入:
'&*%$#<>
-
测试点:发帖、注册、修改资料字段
-
结果:正常显示或被提示非法字符,未发生异常 ✅
✅ S021 - 事务一致性测试
-
操作:发帖接口模拟异常(人为断网、字段缺失)
-
结果:系统回滚,数据库无半条帖子 ✅
四、结论与建议
漏洞类型 | 状态 | 说明 |
---|---|---|
存储型 XSS | ❌ 存在严重漏洞 | 发帖功能存在存储型 XSS,脚本被存储进数据库并原样输出,可被利用盗Cookie、控制页面逻辑 |
输入校验 | ✅ 合格 | 大部分字段具备长度限制、符号处理,未发现SQL注入/崩溃情况 |
会话控制 | ✅ 合格 | 未登录访问私密接口被正确拦截,未发生Token越权等问题 |
权限控制 | ✅ 合格 | 普通用户无法访问管理接口、删除他人数据等高权限行为 |
数据库存储安全 | ✅ 合格 | 密码加密存储、日志无敏感信息泄露,注册响应未暴露内部字段 |