Appearance
检查分类 | 检查项 | 校验说明 | 检查人 | 修复责任人 | 测试等级 | 测试方法 |
---|---|---|---|---|---|---|
登录 | 弱口令 | "1 设置安全的密码策略,应该满足8位及以上长度 2 必须含大小写字母、数字、(特殊字符) 3 对系统已存在的弱密码定期提醒修改推送" | 测试 | 后端 | 1 | |
密码存储 | "1、用户密码信息使用加密存储(禁止明文存储) 2、加密方式使用不可逆的算法(使用增加盐值、Hash等不可逆加密算法)" | 测试 | 后端 | 2 | ||
多因子认证 | "采用多因素认证, 用户名+密码+短信验证码 用户名+密码+图片验证码 用户名+密码+动态口令 用户名+密码+面部识别 浙里办/浙政钉/钉钉/微信扫码登录" | 测试 | 后端 | 2 | ||
验证码绕过 | "1 前端限制验证码必填 2 后端逻辑必须验证验证码是否正确" | 测试 | 前端、后端 | 2 | "1 验证前端是否必填 2 验证后端是否做校验 --1) burpsuite截取抓包, --2) -a尝试将验证码值置空,再放包到服务端 --2) -b尝试想验证码字段删除,再方包到服务端" | |
密码找回 | "1、系统必须具备用户账号密码找回功能 2、账号密码找回进行用户身份识别(手机短信/邮箱/人脸识别)" | 测试 | 产品、前端、后端 | 3 | ||
密码修改 | 修改操作需要通过手机短信或者邮箱进行身份验证 | 测试 | 产品、前端、后端 | 3 | ||
密码明文传输 | "1 密码传输使用了https 2 接口中,密码不允许明文传输,前端必须对密码加密处理" | 测试 | 前端 | 2 | ||
错误提示 | 安全地处理失败的身份校验,如使用"用户名或密码错误"来提示失败,防止泄露过多信息 | 测试 | 前端、后端 | 2 | "漏洞示例: 1 不存在的用户,提示“用户不存在,请先注册"" 2 存在的用户,但密码输入错误,提示“密码错误”" | |
异常处理 | "1 登录入口应具有防止暴力或撞库猜解,超过1次验证失败自动启用图形验证码; 2超过多次验证失败自动启用账户锁定机制限制其访问,如3分钟20次登录失败,锁定失败账户30分钟。" | 测试 | 后端 | 2 | ||
身份认证 | 身份标识 | "1 登录后,后续所有接口必须附加身份标识 2 用户身份标识不允许长期有效,建议有效期不超过6小时" | 测试 | 后端 | 1 | |
认证接口返回 | "1 返回的身份标识(如token等)必须为无规律不可预测的字符串 2 返回信息中不可包含用户个人敏感信息" | 测试 | 后端 | 1 | ||
身份令牌含敏感信息 | token经过解析后,不可包含用户名、手机号等敏感信息 | 测试 | 后端 | 2 | 可通过在线JWT Token解码,检查token中是否含有敏感信息,如:https://tooltt.com/jwt-decode/ | |
短信验证 | 验证码生成 | 复杂度至少6位数字或字母,一次一用,建议有效期不超过5分钟 | 测试 | 后端 | 3 | |
验证码限制 | 前后端设置用户获取频率为60秒一次 | 测试 | 前端、后端 | 2 | ||
短信接口返回 | 禁止在响应中返回验证码 | 测试 | 后端 | 1 | ||
授权 | 未授权访问 | 未经授权,访问接口或页面,直接返回了应该登录后才能查看的数据 | 测试 | 后端 | 1 | 通过在线接口管理平台如YApi获取接口地址,批量尝试不带用户认证发送请求是否返回200 / 40X |
授权url访问 | 不应该将授权认证放在url中,导致登录后获取到url后续操作就跳过认证 | 测试 | 前端 | 2 | ||
水平越权风险 | 未经授权,用户A不能访问用户B的信息资源。 | 测试 | 后端 | 2 | "以无纸化会议系统为例: 1 设定一场B参加而A未参加的会议X。 2 抓取B查看会议X详情的接口 3 将B的token换成A的,重新发送请求,是否能看到会议X的详情" | |
垂直越权越权风险 | 未经授权,低权限用户不可获得高权限。 | 测试 | 后端 | 2 | "以人大系统管理员和普通工作人员为例: 1 抓取管理员添加用户的接口 2 将token替换为工作人员的,重新发送请求,能否成功新增用户" | |
分级授权缺失风险 | 应用系统可以对账号配置不同权限 | 测试 | 后端 | 3 | ||
CSRF跨站请求伪造 | Token使用(可选) | 在重要操作的表单中增加会话生成的Token字段一次一用,提交后在服务端校验该字段 | 测试 | 前端、后端 | 2 or 3 | |
二次验证(可选) | 在关键表单(如修改密码)提交时,要求用户进行二次身份验证如密码、图片验证码、短信验证码等 | 测试 | 前端、后端 | 2 or 3 | ||
Referer验证 | 检验用户请求中 Referer:字段是否存在跨域提交的情况 | 测试 | 后端 | 1 | "1 首先确定当前被测试平台的认证方式是cookie还是token,若是token认证,一般认为csrf漏洞风险低,可不再测试该项 2 如果是cookie认证,需要尝试修改Referer,然后重新发送请求,如果任然能获得修改前一样的响应则说明有CSRF漏洞" | |
跨站脚本攻击(XSS) | 输入校验及编码 | "1 对输入的数据进行过滤和转义,包含但不限于<,>,',"",/等危险特殊字符 2 对输出到页面的数据进行相应的编码转换,包括HTML实体编码、属性以及URL请求参数" | 测试 | 前端 | 1 | "1 找到可以在前端页面展示文本信息或列表信息的输入位置 2 输入<img src=## on error=alert('xss')>,(markdown禁止出现敏感脚本关键字,实际测试时请将on error连接)并保存 3 在文本或列表展示页面,查看页面上是否出现弹窗" |
cookie设置为HttpOnly | 设置cookie的HttpOnly属性,防止cookie被恶意攻击者盗取 | 测试 | 后端 | 2 | 打开浏览器开发者工具,查看cookie属性 | |
SQL注入 | 注入拦截 | "用户的输入进入应用程序的SQL操作前,对输入进行合法性校验。 用参数化查询方法对敏感字符如""进行转义,然后再进行SQL操作。 " | 测试 | 后端 | 1 | "python sqlmap.py -t E:\scan-results.txt -u ""https://2b26a8e0aeda23c8.zhijiasoft.com/admin/enterprise/page?param1=aaa¶m2=bbb ¶m3=ccc"" --headers ""Authorization:xxxxxxxxxxxxxxxxxxxxx"" --dbms=MySQL --level=2 --risk=1 -o --batch --current-db" |
敏感数据加密 | 敏感信息都采用了加密、哈希或混淆等方式进行保密存储,降低漏洞带来的数据泄露风险 | 测试/后端 | 2 | |||
禁止错误回显 | 禁止系统开启 Debug模式或异常时返回包含敏感信息的提示,建议使用自定义的错误信息模板,异常信息应存放在日志中用于安全审计 | 后端 | 3 | |||
文件上传 | 合法性校验 | "1 进行文件上传时,在服务端对文件合法性校验,白名单形式检查文档类型,不允许出现不限制文件类型的文件上传接口(使用文件类型白名单,只允许常见的文档、图片、音视频格式的文件上传) 2 文件上传必须有大小限制,必要时图片也应该限制长宽/像素(可选)" | 测试 | 前端、后端 | 1 | "1 检查前端是否限制白名单内文件才能上传 2 检查后端是否限制白名单:浏览器禁用js,再尝试上传白名单外的文件 3 将文件后缀名为合法,然后在抓包后在报文中恢复文件原本后缀名 --1)将不合法文件如.html后缀名修改为合法如.jpg --2)burp拦截抓包,将filename的后缀回复为html,放包验证是否可上传成功" |
上传文件重命名 | 进行文件保存时,成功上传的文件需要进行随机化重命名 | 测试 | 后端 | 2 | 找到此文件上传后,可下载或查看的位置。在接口响应中查看文件是否随机重命名 | |
存储环境设置 | 保存的目录权限应设置为不可执行 | 运维 | 运维 | 2 | ||
文件加密 | 文件下载 | 禁止无用户身份标识通过URL直接下载/打开文件 | 测试 | 后端 | 2 | 通过接口响应中的文件名或URL测试是否需要认证才能下载 |
文件加密 | 前后端必须有配套的加密/解密方法,下载的文件需经过前端解密才能阅读 | 测试 | 前端、后端 | 2 | ||
敏感文件泄露 | .git和.DS_store | 防止.git和.DS_store文件及相关目录未经授权可访问或下载 | 测试 | 前端、后端 | 1 | 使用dirsearch工具扫描并检查响应状态码 |
tar、zip等备份泄露 | 防止源码和重要信息备份文件被公开下载 | 测试 | 前端、后端 | 1 | 使用dirsearch扫描并下载查看内容 | |
swagger | 防止swagger接口调试工具信息泄露 | 测试 | 后端 | 1 | 使用swagger未授权扫描工具进行扫描 | |
数据脱敏 | 数据展示脱敏 | 敏感数据在列表页面展示时需部分隐藏 | 测试 | 前端 | 2 | |
数据加密存储 | 敏感信息采用加密、哈希或混淆等方式存储 | 后端 | 3 | |||
信息发送 | 信息审查 | 短信、邮件、站内信等功能需要有审查过程 | 测试 | 产品、前端、后端 | 1 | |
服务隔离 | 测试环境和预发布环境禁止对接短信、邮件发送服务 | 后端 | 运维 | 1 | ||
应用发布 | APP发包加固 | 发布给客户的APP需经过加固处理 | 前端 | 前端 | 1 | |
行为日志 | 行为审计 | 日志模块权限控制和记录完整性 | 测试 | 前端、后端 | 2 | |
环境漏洞 | 开放未在使用的端口 | 关闭未在使用的端口 | 运维/测试 | 使用Nmap进行主机扫描 | ||
环境漏洞 | Prometheus服务未授权 | 做好访问控制,不允许未授权访问 | 运维/测试 | |||
环境漏洞 | OpenSSH安全漏洞 | 定期扫描并修复OpenSSH安全漏洞 | 运维 | |||
环境漏洞 | web server安全漏洞 | 定期扫描并修复web server(如nginx)安全漏洞 | 运维 | |||
环境漏洞 | 数据库安全漏洞 | 定期扫描并修复数据库安全漏洞 | 运维 | |||
环境漏洞 | 操作系统漏洞 | 定期扫描并修复操作系统漏洞 | 运维 | |||
账户安全 | 数据库账户 | 数据库账号密码满足复杂度要求,并定期更新 | 运维 | |||
账户安全 | 操作系统账户 | 操作系统账号密码满足复杂度要求,并定期更新 | 运维 |