01
逻辑漏洞概述
在本文中,笔者对常见的逻辑漏洞及其修复方法和整改建议进行了整合,供各位参考。
由于程序逻辑不严谨或逻辑太过复杂,导致一些逻辑分支不能正常处理或处理错误,被统称为业务逻辑漏洞。
常见的逻辑漏洞有交易支付、密码修改、密码找回、越权修改、越权查询、未授权访问、关键步骤绕过等,下面是笔者对常见的逻辑漏洞进行了一些总结。
|
02
业务场景分类
01
金融类
a.交易平台
-
钱包并发提现,负数提现;
-
使用钱包支付时多个订单并发支付(是否支付金额能大于余额);
-
转账负数,并发转账;
-
上架商品突破限制,例如数量、字数;
-
替换订单,创建订单号如果订单状态可修改,先进到支付界面,随后将订单修改成更大的金额,然后支付提前进入的支付界面;
-
数量修改。
b.网银
-
各个业务服务功能越权;
-
功能接口敏感信息泄露;
-
开户/贷款/取款关键步骤绕过;
-
转账、提现并发。
02
电商类
-
商品限量、优惠券限量、抽奖功能、提现、会员充值可并发;
-
订单完成中会有商品评价,会检测是否购买过商品,通过篡改待支付订单的状态码进行绕过,对未支付订单商品进行评价;
-
支付订单、生成订单时修改敏感参数、或替换订单ID、商品ID、数量、金额等导致订单金额篡改;
-
总金额=商品金额+优惠券金额(只校验订单总金额,而不单独校验优惠券金额跟商品金额,可增大优惠券金额);
-
校验商品总数量不能为负数,而不校验单个数量,可以设置两个商品一个数量为-1,一个数量为2;
-
使用优惠券、退货处、订单查询、收货地址、个人信息、商品评价等可越权使用、篡改、删除;
-
订单参数混淆干扰,在同一个订单内提交两个或多个金额参数,如price=1&price=-1;
-
强制攻击。强制攻击发生在暴力破解的情况下,如果一个商家运用一个自己的网店,接入第三方支付接口,由于设计上的不当导致商家与第三方支付约定的密钥Key可以单独被MD5加密,导致可以使用MD5碰撞技术对密钥进行破解,攻击者可以设计简单的密钥加密信息使得MD5加密可以用MD5碰撞技术进行暴力破解;
-
订单金额单位可替换;
-
收款账号、二维码篡改;
-
支付流程缺陷,可跳过,假设abcd四个步骤,c为校验步骤,直接跳过c进入到d步骤);
-
int型溢出(超过最大值整数溢出)遍历优惠券id,有可能遍历出测试隐藏的无条件大额优惠券;
-
订单未捆绑,确定支付之后还可以将商品加入购物车:把商品放入购物车点击下单支付,会跳转到微信,支付宝等第三方支付平台。这个时候还可以继续在购物车中加入商品,支付结束之后,商家发放的商品是现在的购物车里面的东西;
-
JS文件存在隐藏接口服务、参数;
-
优惠券使用限制绕过。
03
服务类
a.外卖
-
商品数量,0,负数,小数,特定值,正负数(A为-1,B为2,总值为1);
-
送餐员评价、星级、打赏金额修改(小数,负数);
-
商品评价字数、星级限制突破,上传图片是否可以自定义格式;
-
送餐地址限制突破;
-
强行货到付款,取消订单,退款;
-
越权操作别人订单,登陆;
-
优惠购买会员(重复使用优惠购买);
-
外卖红包并发领取;
-
红包、优惠券可枚举。
b.网约车
-
无限叫车,重复发送协议造成市场混乱;
-
修改评价分数;
-
修改限时优惠叫车关键参数;
-
替换优惠卷;
-
越权操作其他订单。
04
社交类
主要面向社区论坛
-
个人用户信息回显。论坛、社区部分以用户手机号等方式进行注册,注册后默认以该手机号为账号,有的会明文显示,有的会在页面上做屏蔽处理,但服务器返回是明文;
-
修改密码、个人信息越权操作;
-
用户批量注册;
-
注册信息覆盖;
-
客户端校验绕过;
-
评论区可外链钓鱼链接(包括XSS);
-
任意文件上传;
-
加密帖检验绕过;
-
强行加好友(一般尝试重发通过好友这条协议);
-
自由修改号码(靓号类);
-
非会员使用会员功能。
05
娱乐类
主要面对直播、漫画、音乐等软件
a.音乐
-
唱歌类软件修改上传分数等参数;
-
评论区批量恶意评论、越权评论;
-
付费下载尝试替换下载ID;
-
修改付费下载金额;
-
F12查看下是否有歌曲地址。
b.漫画
-
打赏金额为负数,小数,特定值(溢出);
-
越权删除评论,登陆;
-
修改充值金额;
-
付费漫画免费看;
-
评论图片数量过多会导致客户端加载卡死。
c.直播
-
快速进出房间炸房;
-
无限发送点赞协议;
-
修改礼物数量,0,小数,负数,特定值(一般情况下为1073741824);
-
修改礼物ID,遍历尝试是否有隐藏ID;
-
并发送礼物,抽奖;
-
无限创建首次优惠订单,有些首次优惠订单是一个特殊的pid,这种的直接替换pid进行支付。有些是相同的ID,这种的提前创建订单,记录多个订单号在依次修改订单支付;
-
刷屏:发言刷屏,分享,点赞等有提示的地方刷屏;
-
房间内可以申请的地方进行申请取消操作,看看是否能炸房;
-
越权踢人,增加管理员,关闭房间等操作;
-
发送的表情是否可以修改长宽。
03
常见逻辑漏洞修复方法和整改建议
关于逻辑漏洞当然还有很多其他的点没有总结到,在日常的业务逻辑挖掘中,一定要搞清它的代码逻辑,这样才能知道它有没有问题。逻辑问题也不能一概而论,同一个逻辑问题在某些功能点或场景可能有危害,换个场景它可能就没什么危害了,具体情况需要结合具体场合。
越权访问:
1、对于水平越权,需要严格校验用户身份,限制同权限账户的数据互相访问。
2、对于垂直越权,一方面需要对用户访问角色的权限进行严格的检查及限制,另一方面还要严格限制同权限账户的数据互相访问。
未授权访问:
1、页面进行严格的访问权限的控制以及对访问角色进行权限检查。
2、可以使用session对用户的身份进行判断和控制。
金额篡改:
1、在请求数据中对涉及金额、数量等敏感信息进行加密,保证加密算法不可猜解。
2、在服务器端对发送的数据进行严格校验。
短信轰炸:
在服务器限制发送短信或邮件的频率,如同一账号1分钟只能发送1次短信或邮件,一天只能发送3次。
暴力破解:
1、如果用户登录次数超过设置的阈值,则锁定帐号(有恶意登录锁定帐号的风险)。
2、增加人机验证机制、验证码等。
3、验证码必须在服务器端进行校验,客户端的一切校验都是不安全的。
关键步骤绕过:
尽量不要使用分步校验,在将数据提交给服务端时,将前面步骤校验过的数据再次进行校验。
不安全的URL跳转:
1、在进行页面跳转前校验传入的URL是否为可信域名。
2、白名单规定跳转链接。
Session固定攻击
每次登录后将原来的session作废,生成新的session。
请求重放攻击:
服务端应用程序应检查客户端提交的数据的唯一性,如使用流水号、时间戳、token等,并将流水号、时间戳等进行签名。
条件竞争/并发:
1、给保护对象加资源锁。
2、增加一次性校验参数,防止请求重放。
原文始发于微信公众号(安恒信息安全服务):九维团队-绿队(改进)| 常见逻辑漏洞汇总及修复整改思路小结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论