业务逻辑安全的攻防思考-松果出行白玉堂
前言
- 逻辑漏洞定义:正常功能的非正常使用
- 产生原因:功能模块复杂度
账户相关
账户注册
- 任意用户注册、扫号、短信轰炸
账户登录
修改密码
找回密码
- 验证码暴力破解测试
- 状态回显
- 验证码客户端回显测试
- 返回个人有效token
- 敏感信息回显测试
- 状态修改
- 接口参数账号修改测试
- Response状态值修改测试
- Session覆盖测试
- 注册覆盖
- 凭据可猜解
- 弱token涉及缺陷测试
- 时间戳、用户名、服务器时间等的md5
- 流程缺陷
- 密码找回流程绕过测试
- 输入、验证、提交,第二部验证的时候,直接跳到第三步
业务相关
业务授权
- 未授权访问
- 越权增删改查
- 水平垂直越权
业务办理
- 篡改
- 并发
- 竞争
- 重放
- 乱序
- 回滚机制缺陷
支付场景
- 商品支付金额篡改测试
- 商品订购数量篡改测试
- 前端JS限制绕过测试
- 请求重放测试
- 业务上限测试
走出安全困境
互联网公司
- DevSecOps
简化版轻量级SDL
- 安全设计-参与项目评审
- 白盒审计-开发实现
- 渗透测试-功能性能测试
- 安全运营-运维部署
安全设计
- 设计文档收集
- 设计调研
- 设计分析
- 提出安全需求
- 推荐设计修改
- 团队讨论
- 设计完成
OWASP规章
数据流
- 用户输入是否被直接用于引用业务逻辑的类或函数
- 是否有一个数据绑定缺陷
- 是否暴露任何后门参数来调用业务逻辑
- 应用程序的执行流程是否正确
身份验证和访问控制
- 是否对所有文件实现访问控制
- 是否安全地处理会话
- 是否存在单点登录,单点登录是否留下后门
已有或内置的安全控制
- 在现有任意安全控制中的弱点
- 安全控制的部署是否正确
架构
- 对所有的输入是否有验证
- 到外部服务器的连接是安全的吗
配置或代码文件和数据存储
- 配置文件中是否含有敏感数据
- 是否支持任何不安全的数据源耗子
白盒审计
- 抓大放小
- 误报与漏报权衡
- 怎么倾听研发的声音
安全开发规范
- 用户请求传入的任何参数必须做业务有效性验证
- 用户敏感数据禁止直接显示,必须对展示数据进行脱敏
- 用户输入的SQL参数严格使用参数绑定或者METADATA字段值限定,防止SQL注入。禁止字符串拼接SQL访问数据库
- 用户个人的页面或者功能必须进行权限控制校验
- 禁止向HTML页面输出未经安全过滤或未正确转义的用户数据
- 在使用平台资源,譬如短信、电话、下单、支付,必须实现正确的防重放限制,如数量限制、验证码校验,避免被滥刷导致资损
渗透测试
- 漏洞的定级:技术难度与业务价值
- 漏洞的修复周期
安全运营
- 直观
- 迅速
- 可落地
本文作者:
yd0ng
本文链接: https://yd0ng.github.io/2021/01/12/%E4%B8%9A%E5%8A%A1%E9%80%BB%E8%BE%91%E5%AE%89%E5%85%A8%E7%9A%84%E6%94%BB%E9%98%B2%E6%80%9D%E8%80%83/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://yd0ng.github.io/2021/01/12/%E4%B8%9A%E5%8A%A1%E9%80%BB%E8%BE%91%E5%AE%89%E5%85%A8%E7%9A%84%E6%94%BB%E9%98%B2%E6%80%9D%E8%80%83/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!