在常规的支付流程中,系统会对支付金额进行严格校验,以确保交易的合理性与安全性。然而,当支付系统在设计或编码过程中存在缺陷时,就可能出现允许用户将总价修改为负数并成功支付的情况。例如,某些系统在处理支付请求时,未对前端传递过来的价格参数进行有效验证,或者在计算总价时,没有考虑到数量或价格为负数的异常情况。黑客一旦发现这类漏洞,便可以通过篡改支付请求中的数据,将商品总价改为负数。这样一来,不仅能免费获取商品,甚至可能让商家倒贴钱,给商家带来巨大的经济损失。
下图为乌云找到的漏洞。
本次使用靶场连接:http://www.loveli.com.cn:12531/
点击购买物品,然后确认购买
提示余额不足
获取数据包
修改为负数,发现钱包金额反向增长
修改为负数-999,出现flag
前端与后端双重校验:前端需对用户输入的价格、数量等参数进行初步校验,限制参数的合理范围(如价格不能为负数、数量不能小于 1),但不能仅依赖前端校验。关键在于后端,在接收支付请求后,必须重新计算商品总价,将后端数据库中存储的商品单价与用户选择的数量进行相乘,得到准确的总价,再与前端传递的总价参数进行比对,若不一致则直接拒绝支付请求。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。