主要的常见类型

登录缺陷和账户认证缺陷

验证码回传

未进行登录凭证验证

验证码爆破

未授权访问

。。。

会话管理缺陷

固定会话攻击

修改cookie中的某个参数可以登录其他用户(cookie仿冒)

权限管理缺陷

未授权权限访问

越权:1.水平越权、2.垂直越权

水平越权:相同权限的用户可以互相访问

垂直越权:低用户可以访问到高用户

API滥用

验证码爆破

短信轰炸

无限充值

用户添加等。。。

1.业务接口调用:

​ 重放攻击

​ 恶意注册

​ 短信炸弹

支付逻辑类

支付过程中可直接修改数据包中的支付金额

这种漏洞应该是支付漏洞中最常见的,主要针对支付宝等需要第三方支付的案例。开发人员往往会为了方便,直接在支付的关键步骤数据包中直接传递需要支付的金额。而这种金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。

只需要在支付过程中用抓包工具抓包发现有金额的参数修改成任意即可。

没有对购买数量进行限制

这种案例也比较常见,产生的原因是开发人员没有对购买商品的数量参数进行严格的限制。这种同样是数量的参数没有做签名,在抓包后导致可随意修改数量,经典的修改方式就是改成负数。

当购买的数量是一个负数时,总额的算法仍然是”购买数量x单价=总价”。所以这样就会导致有一个负数的需支付金额。若支付成功,则可能导致购买到了一个负数数量的产品,也有可能购物网站会返还相应的积分/金币到你的账户上。

但是,这种情况不可能发生在通过支付宝支付的订单中,因为显然支付宝是不支持一个负数金额的订单,所以这种情况多数发生在一个有站内虚拟货币的网站。

购买商品编号篡改

例如商品积分兑换处,100个积分只能换商品编号为001的低价格商品,1000个积分能换商品编号005的高价格商品,在用100积分换商品的时候抓包把换商品的编号从001修改为005,用低积分换区高积分商品。

支付逻辑顺序执行缺陷

部分网站的支付逻辑可能是先A过程后B过程然后C过程最后D过程用户控制着他们给应用程序发送的每一个请求,因此能够按照任何顺序进行访问。但是,如果用户直接从B直接进入了D过程,就绕过了C过程。如果C是支付过程,那么用户就绕过了支付过程而买到了一件商品。如果C是验证过程,就会绕过验证直接进入网站程序了。

请求重放

购买商品成功后,重放购买成功的http请求,可以使购买的商品一直增加。购买成功后,会有一个从银行向商户网站跳转的过程,如果这个过程反复的重放,有可能导致商品的反复购买和增加,但是用户不需要支付更多的金钱。

程序的异常处理

程序的异常处理比较少见,不过也是有案例的。程序的异常处理,就是指支付的数据包异常的程序的错误处理。这种异常可以是数据与KEY不符,支付的金额有错误,购买的数量不正确等等。程序的异常处理出现的原因主要是开发人员对出现异常后的处理不当造成的。

当然支付逻辑漏洞不止上面列举的这些类型,但最常见的支付漏洞为直接修改金额,修改购买商品数量以及窜改商品编号这三种,下面就来实践下这三种支付逻辑漏洞。