首页 / 帮助文档 / 网站漏洞防护安全测试用例覆盖常见漏洞场景

网站漏洞防护安全测试用例覆盖常见漏洞场景

网站漏洞防护测试的核心不在于“证明系统安全”,而在于“在攻击者之前发现哪些路径可以被利用”。一份有效的安全测试用例集,必须覆盖从注入、认证、会话管理到配置错误、业务逻辑缺陷等高频风险点,并且每条用例都要有明确的触发条件、操作步骤和预期结果。如果测试用例只停留在“扫描器跑一遍”,那基本等于没有防护。

先从最基础的注入类漏洞说起。SQL注入仍然是最常见的Web高危漏洞之一,测试用例不能只测登录框。要覆盖GET参数、POST表单、Cookie、HTTP头(如User-Agent、Referer、X-Forwarded-For)等所有可能进入数据库查询的输入点。用例设计上,至少包含:单引号报错探测、布尔盲注(and 1=1 / and 1=2)、时间盲注(sleep函数)、堆叠查询、以及编码绕过(URL编码、双重编码、十六进制)。预期结果应当是:所有异常输入被过滤或参数化查询处理,数据库错误信息不向前端返回,且响应时间不因sleep注入出现显著延迟。

命令注入的测试重点在系统调用功能,比如文件上传后的图片处理、PDF转换、ping/traceroute工具、备份导出等。用例要覆盖分号、管道符、反引号、$()、换行符等拼接方式,同时测试白名单机制是否严格。一个常见误区是只过滤了“;”和“|”,但忽略了“%0a”换行注入。预期结果应为:所有外部命令调用使用参数数组而非字符串拼接,且任何非法字符被拒绝执行。

跨站脚本(XSS)的测试用例需要区分反射型、存储型和DOM型。反射型测试要覆盖搜索框、错误提示回显、跳转参数等;存储型要重点测试用户资料、评论、私信、文件名等会长期保存并展示的位置;DOM型则要检查前端JavaScript是否使用了innerHTML、document.write、eval等危险函数处理location.hash或postMessage数据。用例中要包含常见的绕过payload,如大小写混合、双写、编码绕过、事件属性插入。预期结果:所有输出在渲染前经过上下文相关的编码,CSP策略能限制内联脚本执行。

认证与会话管理漏洞的测试用例往往被低估。弱口令测试不能只跑admin/admin123,要结合业务场景测试默认密码、重置密码逻辑缺陷、验证码绕过、暴力破解防护是否有效。用例应包含:登录失败次数限制是否生效、验证码是否可重复使用、密码重置链接是否可预测、重置后的密码是否强制修改、会话ID在登录前后是否更换、Cookie是否设置HttpOnly和Secure属性、退出登录后会话是否真正失效。预期结果:所有认证失败返回统一的错误信息,不提示“用户名不存在”或“密码错误”,会话令牌具有足够的随机性且不可被枚举。

文件上传漏洞的测试用例要覆盖文件类型、文件内容、文件大小、路径穿越、覆盖已有文件等维度。不能只测扩展名白名单,还要测试MIME类型伪造、双扩展名(shell.php.jpg)、空字节截断(旧版PHP)、图片马配合解析漏洞、以及上传后文件的访问权限。预期结果:服务端对文件内容进行真实类型检测,上传文件存储目录禁止执行脚本权限,文件名使用随机生成而非用户可控。

访问控制漏洞的测试用例必须基于角色矩阵来设计。水平越权测试要验证用户A能否通过修改ID参数访问用户B的数据;垂直越权测试要验证普通用户能否调用管理员接口。用例中要覆盖API接口、静态文件、下载链接、后台管理路径等。预期结果:所有服务端接口在执行操作前都进行权限校验,不依赖前端隐藏按钮或菜单来限制访问。

跨站请求伪造(CSRF)的测试用例要覆盖所有状态变更操作,包括修改密码、修改邮箱、转账、删除数据、添加管理员等。测试方法为构造一个自动提交表单的HTML页面,检查目标操作是否在无Token、无Referer校验的情况下被执行。预期结果:所有敏感操作都要求一次性CSRF Token,且Token与用户会话绑定,Referer校验不能作为唯一防线。

服务端请求伪造(SSRF)的测试用例重点在URL获取功能,如远程图片加载、Webhook回调、URL预览、文件导入等。要测试是否可访问内网地址(127.0.0.1、10.x、172.16-31.x、192.168.x)、是否可读取云元数据服务(169.254.169.254)、是否支持file://、gopher://、dict://等协议。预期结果:服务端对目标URL进行协议白名单限制,解析后的IP地址不允许属于内网或保留地址段,且禁用不必要的协议。

XML外部实体注入(XXE)的测试用例适用于所有解析XML的功能点,如SOAP接口、Office文档导入、支付回调解析。用例中要包含读取本地文件(/etc/passwd)、内网探测、拒绝服务(实体扩展攻击)等payload。预期结果:XML解析器禁用外部实体和DTD解析,或使用安全的解析配置。

安全配置错误的测试用例要覆盖常见的运维疏忽。包括:目录浏览是否开启、默认后台路径是否可访问、测试页面是否残留在生产环境、错误页面是否泄露框架版本号、HTTP方法是否限制(PUT/DELETE/TRACE)、安全响应头是否缺失(X-Content-Type-Options、X-Frame-Options、Strict-Transport-Security)、以及是否使用明文传输敏感数据。预期结果:生产环境关闭所有调试功能,移除默认账号和示例程序,安全响应头完整配置。

业务逻辑漏洞的测试用例需要深入理解业务流程。比如电商系统中,优惠券是否可重复使用、订单金额是否可在提交后修改、库存数量是否可为负数、支付回调是否验证签名和金额。测试用例要模拟非常规操作序列:跳过步骤、重复提交、并发请求、修改时间戳、使用过期凭证。预期结果:服务端对关键业务状态进行一致性校验,不信任客户端提交的任何金额或状态字段。

还有一个容易被忽略的类别是信息泄露。测试用例要覆盖:敏感文件(.git、.svn、备份文件、日志文件)、API接口文档、用户枚举、错误堆栈信息、注释中的内部地址、以及前端代码中硬编码的密钥。预期结果:生产环境不包含任何版本控制目录和备份文件,错误处理统一返回模糊信息,敏感配置通过环境变量注入而非写入代码。

实际执行测试用例时,建议按照“确认漏洞可复现-评估影响范围-验证修复效果”的闭环流程进行。每条用例都应记录测试数据、实际结果、风险等级和修复建议。对于高危漏洞,修复后必须进行回归测试,确保补丁没有引入新的绕过方式。安全测试不是一次性任务,而是每次版本迭代、功能上线前的必要环节。