金融类逻辑漏洞
支付类漏洞¶
负值/正负值对冲¶
漏洞描述¶
应用程序未校验订单数据的取值范围,交易存在负值反冲或正负值对冲
渗透测试¶
提交订单时拦截请求,修改订单参数为负数,如商品单价、数量、总价等。
提交订单(包含多种商品)时拦截请求,修改部分商品的单价或数量,保证订单总金额为正数。
风险评级:高风险
安全建议¶
-
服务器端在生成交易订单时,商品的价格从数据库中取出,禁止使用客户端发送的商品价格。
-
服务器端对客户端提交的交易数据(如商品ID、商品数量、商品价格等)的取值范围进行校验,将商品ID和商品价格与数据库中的数据对比校验,商品数量为大于零的整型数。
-
服务器端在生成支付订单时,对支付订单中影响支付金额的所有因素(比如商品ID、商品数量、商品价格、订单编号等)进行签名,对客户端提交的支付订单进行校验。
业务流程跳转¶
漏洞描述¶
业务逻辑流程分步骤进行且能越过中间校验步骤直接进行后续操作,导致中间校验等步骤失效。
渗透测试¶
首先完成正常的业务逻辑步骤,获取每一个步骤的请求;
绕过中间步骤,直接访问最后一个或几个验证请求,看是否可绕过。
风险评级:高风险
安全建议¶
建议在不影响业务的前提下,在Session中添加对每一步流程页面的校验标志位,在新步骤页面浏览过程前要检测之前每一步的session标志位,且要与用户身份强绑定。