-
定义
- 支付过程中存在的漏洞
-
利用种类
- 不正确的输入验证
- 如负数金额、非法银行卡信息
- 重放攻击
- 单一请求多次发送造成多次扣款
- 价格篡改
- 可修改价格导致0元购
- 交易注入
- 支付请求有问题的话,攻击这可能植入恶意代码或者恶意请求造成未经授权的支付
- 缺乏双因素认证
- 单一验证信息如只验证支付密码,密码泄露可能导致他人恶意使用
- 不安全的第三方支付集成
- 在有第三方支付请求的时候,如果没有正确处理响应或错误,攻击者可能会构造支付请求绕过支付验证实现0元购
- 社会工程学或钓鱼
- 攻击者可能试图通过欺骗用户来获取其支付信息,例如通过伪装成可信赖的实体或发送恶意电子邮件
- 不正确的输入验证
-
测试支付漏洞手法
- 修改支付价格
- 修改支付状态
- 修改购买数量
- 修改附属值,运费
- 积分、优惠券、运费等和商品相关的附加信息
- 修改支付接口
- 自身支付和第三方支付接口,如果逻辑不当,可以修改为不存在的支付接口并显示支付成功
- 多重替换支付
- 首先产生两个订单,购买商品A和商品B,在订单支付之前修改商品A的订单号为商品B,从而使得利用商品B的价格购买到了商品A
- 重复支付
- 订单成功支付返积分,重复提交成功支付的数据包多次返积分
- 最小额支付
- 一般商品会有一个最低支付金额,小于该金额默认不成功;这和修改支付价格漏洞相搭配,一般尝试0.01 0.1 1 10 就ok了
- 值为最大值支付
- 即修改支付金额、商品数量或者附属值等为最大值,如9999999999999,确保超出承受极限,可能由于整数溢出实现支付为0
- 越权支付
- 基本不存在了;即支付过程中未对用户身份进行判断,导致修改用户id就可利用他人账号支付自己商品
- 无限制试用
- 假设一个商品7天试用期,只能试用一次,如果下单购买其他商品,然后将商品编号改为试用的商品可能由于商品未上架而0元再次试用,不断重复导致无限期试用
- 多线程并发
- 整个处理逻辑未上锁,导致请求数大于处理速度时,返回了大于实际情况的响应信息
- 如提现操作;账户只有10元钱,每次体现一元,正常只能体现10次;但是如果一次性发送了1000条请求,超出了系统的处理速度,导致系统最终接收到了20条请求,就会体现出20元,相当于在10元的账户中体现了20元
- 提现操作可以简单分为三步:接收请求---》处理请求---》体现成功 (账户余额减少)
- 整个过程需要一定时间,若未对整个过程加锁,则会导致实际接收请求数>账户余额支持请求数
-
思路
-
订单
- 选商品时修改商品价格
- 选商品时修改数量
- 商品为1时多人同时购买是否存在冲突
- 商品为0时是否可以下单
- 订单生成后修改商品金额
-
结算
- 优惠打折服务多次重复使用
- 拦截数据包修改订单金额
- 拦截数据包修改支付方式
- 伪造虚假订单,刷单
-
支付
- 拦截数据包,伪造第三方确认信息
- 保存用户付款信息被窃取
-
退货
- 绕过商家直接退货
- 绕过商品类型直接退货
- 越权
-
收货
- 绕过客户确认直接收货
- 越权
-
评论
- 越权
- 信息泄露
- xss
- sql注入
- 文件上传
- csrf
- 刷评论
-
业务逻辑之支付安全
最新推荐文章于 2024-07-19 08:49:21 发布