1.17.1 接口未授权访问漏洞(API Unauthorized)
0x01 漏洞描述
接口未授权访问,顾名思义在不进行请求授权的情况下,能够直接对相应的业务逻辑功能进行访问、操作等。通常是由于认证页面存在缺陷或者无认证、安全配置不当等导致的。
0x02 常见应用场景
最常见的应用场景为后台某些API接口在不登录系统的情况,直接请求对应的URI即可访问、操作该接口。
攻击者最常见的攻击途径主要有如下:
- 通过目录扫描工具加载目录字典探测
- 通过模糊测试URI中的参数进行探测
- 通过前端静态文件,比如JS、webpack等查找
0x03 漏洞危害
- 攻击者可在没有认证的情况下直接操作对应的API接口,可直接被非法增删改次数据。
- 因为攻击是在未认证下进行的,所以后续无法通过定位用户进行异常排查。
0x04 修复建议
- 对于后台接口,确保所有API接口先经过登录控制器。
- 在验证用户身份权限前不进行任何数据的交互。
1.17.2 越权操作漏洞(Out Of Authority)
0x01 漏洞描述
越权漏洞是指应用程序未对当前用户操作的身份权限进行严格校验,导致用户可以操作超出自己管理权限范围的功能,从而操作一些非该用户可以操作的行为。
0x02 常见应用场景
越权漏洞一般可以分为:垂直越权,水平越权两种
- 水平越权
攻击者可以访问与他拥有相同权限的用户的资源,资源权限ID不变,资源归属ID改变;
- 垂直越权
低级别攻击者可以访问高级别权限用户的资源,资源权限ID不变,资源归属ID改变;
低级别攻击者可以访问高级别权限用户的资源,资源权限ID改变,资源归属ID不变;
0x03 漏洞危害
- 垂直越权漏洞会导致低权限用户用来执行高权限用户的功能,获取高权限用户的账号信息,执行高权限用户的操作功能。
- 水平越权会导致同一层级间的用户可以互相访问到对方的敏感信息,如姓名、手机号、联系地址、个人资料、订单记录等。同时还可能会以其他平级权限用户的身份来执行某行功能,如删除,添加,修改等。
0x04 修复建议
- 设计表时对用户ID、订单ID等根据ID进行操作的ID字段进行随机化、比如加入时间戳的md5值
md5($datetime.$id)
。 - 严格校验当前用户操作与当前登录用户身份权限是否匹配。
1.17.3 越权操作漏洞(Defective Payment)
0x01 漏洞描述
支付漏洞是指应用程序在支付环节,由于数据包中没有签名校验或者签名算法太容易而被破解,导致可以直接拦截数据包,修改支付订单中的参数为恶意非法参数而导致的支付缺陷。
0x02 常见应用场景
2.1 购买
- 修改支付的价格
- 修改支付的状态
- 修改支付的数量or价格为999999999999...
- 修改购买数量or价格为负数
- 修改金额为负数
- 重放成功的请求(包含支付附加值时等)
- 使用任意用户优惠券
- 修改运费价格
- 修改支付接口为不存在的支付接口
- 替换支付订单号
- 并发数据库锁处理不当
2.2 业务风控
- 刷优惠券
- 无限试用
- 套现
2.3 订单
0x03 漏洞危害
攻击者利用支付缺陷,通过绕过签名、修改支付参数等各种途径,直接会给企业造成巨大风险。
0x04 修复建议
- 对支付数据表进行数据包加密;
- 对提交数据包做数据签名处理,保证支付数据参数无法修改;
- 服务端效验客户端提交的参数;
- 服务端严格校验支付参数的合法性,比如金额、数量的长度,金额、数量的正负等;
- 对于用户提交的数据,应从数据库重新拉取,并校验用户提交与用户所有是否匹配;
- 对于多线程等并发问题,可以先打入队列,在与数据库交互;
1.17.4 用户模块漏洞(User module)
0x01 漏洞描述
目前大部分应用程序都会有用户模块,比如用户登录、注册、忘记密码、修改密码、申诉等,如果后端逻辑存在缺陷将直接导致大量用户信息泄漏,甚至直接接管任意用户。
0x02 常见应用场景
2.1 注册
- 短信验证码or邮箱验证码可爆破导致任意账号注册
- 数据库和后端逻辑处理不一致可能导致注册覆盖
- 万能注册码or验证码
- 注册处用户名暴力猜解
- 邮箱大小写、手机号前缀、账号前后使用空格/回车/换行等处理不当
- 特殊注册地址or测试地址
2.2 登录
- 撞库or账号密码爆破
- 登录处用户名暴力猜解
- 默认密码
- 任意账号锁死
- 账号劫持
- 短信验证码or邮箱验证码可爆破导致任意账号登录
2.3 忘记密码
- 忘记密码处用户名暴力猜解
- 任意用户短信轰炸or短信接口滥用
- 发送验证随机码至任意验证设备导致任意用户密码重置
- 随机码可被暴力猜解导致任意用户密码重置
- 随机校验码在返回包或者cookie中
- 忘记密码流程前端校验导致验证绕过
2.4 修改密码
- 越权修改任意用户密码
- 修改密码未校验旧密码
- 同上相关场景...
2.5 Session
- Session机制可被猜测or爆破
- Session伪造
- Session泄漏
- Session会话固定
0x03 漏洞危害
攻击者通过相关措施可直接查看、修改、添加、删除用户信息,以站内信任用户身份发起其他非法操作,甚至直接接管网站任意用户。
0x04 修复建议
- 严格校验当前操作与当前用户身份是否匹配;
- 登录、忘记密码、修改密码、注册等处建议添加图形验证码,并保证使用一次即销毁;
- 用户中心操作数据包建议添加包含随机码的签名,防止数据包被非法篡改;
- 用户中心操作建议对数据包or特殊字段进行加密等处理;
1.17.5 验证码模块漏洞(Captcha module)
0x01 漏洞描述
验证码模块为线上应用系统中最常用的模块,涉及用户模块、业务逻辑、支付模块等几乎所有模块。验证码模块通常是用来抵御攻击者攻击的常用手段。一旦验证码模块存在逻辑缺陷,将导致对应的业务逻辑存在极大风险。通常将验证码模块分为两类:短信or邮箱验证码、图形验证码。
0x02 常见应用场景
2.1 图形验证码
- 没有销毁,可复用:图形验证码要遵循一个原则,在一次对比之后,无论用户输入正确与否,都有立刻将验证码销毁
- 图形验证码前端校验
- 图形验证码校验一次,永久使用
- 图形验证码过于简单可被简单程序识别
- 图形验证码在响应包、响应头、cookie中
2.2 短信/邮箱验证码
- 短信/邮箱验证码四位,可被爆破
- 短信/邮箱验证码未失效或失效期过长,可被爆破
- 短信/邮箱验证码未和手机号或用户身份等做绑定
- 短信/邮箱验证码规则简单,可被猜测到
- 短信/邮箱验证码可预测
- 短信/邮箱验证码没有验证次数限制
- 万能验证码
- 短信/邮箱验证码在响应包、响应头、cookie中
- 短信/邮箱验证码用于手机短信/邮箱轰炸
- 短信内容自定义:常出现在一些发送短信的后端管理系统中,容易出现类似钓鱼等类型的攻击
- 短信平台自身问题
0x03 漏洞危害
验证码模块通常是用来抵御攻击者攻击的常用手段。一旦验证码模块存在逻辑缺陷,将导致对应的业务逻辑存在极大风险。
0x04 修复建议
4.1 图形验证码
- 验证码后端随机生成,且验证码内容不能出现在客户端的网页源代码以及response数据包中。
- 验证码要有背景干扰,干扰元素包括:颜色、位置、数量且元素需要随机变化。
- 验证码后端校验,且使用一次后即失效。
- 验证码在不同场景下需要与请求的参数一起提交给后端进行校验,且优先校验验证码。
4.2 短信验证码
- 请求获取短信接口添加图形验证码。
- 单位时间内:单个IP、单个手机号设置请求限制,具体需要根据场景而定。
- 单个手机号每日短信验证码获取上限。
- 发送短信接口地址白名单。
4.3 其他验证途径
- 语音验证码
- Google reCaptcha
- 滑动验证码
- 点选验证码
1 条评论
牛蛙 牛蛙 太牛啦