- 逻辑漏洞概述
由于程序逻辑输入管控不严,导致程序不能够正常处理或处理错误。一般出现在登录注册、密码找回、 信息查看、交易支付金额等位置,由于逻辑漏洞产生的流量多数为合法流量,一般的防护手段或设备无 法阻止,也导致了逻辑漏洞成为了企业防护中的难题。
- 如何挖掘逻辑漏洞
1 注册处 注册功能可能出现任意用户注册、短信轰炸等问题。 前端验证:判断是否有任意用户注册 手机验证码验证:验证码是否可以暴力破解,验证码与当前手机号有没有检验匹配(0000-9999) 用户名密码注册:是否会导致批量注册
2 登陆处 可能出现任意用户登录、短信轰炸等问题。 前端验证:判断是否有任意用户登录,是否有验证码回显,是否可以修改返回包造成任意用户登录等问 题 手机验证码验证:是否可以爆破验证码,验证码与当前手机号有没有检验匹配 账号密码登录:没有验证码或者是否存在验证码可以绕过,导致进行暴力破解
3 密码找回处 (1、验证码是否可以多次使用 (2、验证码是否直接返回在数据包中 (3、验证码未绑定用户 (4、修改接收的手机或邮箱进行密码重置 (5、前端验证绕过 (6、验证步骤绕过(举例:先获取手机验证码,再输入要修改的邮箱和密码) (7、未校验用户字段的值 (8、修改密码处id可替换 等等
4 支付与越权 1、提交订单或者结算时对金额等参数进行修改 2、提交订单时修改商品参数(低价购买高价商品) 3、修改支付接口等等(将支付链接发给别人,这也是为什么支付宝在支付的时候还要再输一次密码)
3.交易支付中的逻辑问题
支付漏洞的理解通常都是篡改价格。比如,一分钱买任何东西。少收款、企业收费产品被免费使用,直 接造成企业的经济损失。
1.支付逻辑漏洞的呈现形式
1、充值的时候,程序只判断订单有没有充值成功,但没有判断金额, 例如:生成订单跳至支付宝页面,在原网站上点支付失败,这时可以修改订单,改成更大的金额(订单 号没变),回到支付宝支付页面,支付成功。程序并没有重新核对支付宝实际的金额,只是把订单改为 已支付。
2、使用余额支付,把数量改为负数,总金额也为负数,扣除余额时,负负得正,这时余额增加。
3、支付逻辑漏洞的几种常见类型: (1)修改金额 (2)修改商品数量 (3)修改优惠金额 (4)修改数量、单价,优惠价格参数为负数、小数,无限大 (5)商品价格更改 (6)支付key泄露等
2.支付漏洞案例
漏洞环境:webug
打开支付漏洞靶场
![](https://i-blog.csdnimg.cn/blog_migrate/c2bfc5a2ae2425733a50c1e1a3e31a6d.png)
某网站商城页面 http://10.0.0.79:8085/control/auth_cross/cross_permission_pay.php
![](https://i-blog.csdnimg.cn/blog_migrate/eba35121e1f972c6c7ca3b7c7957f9f8.png)
点击购买时尚宝宝衣服,直接购买需要花费100元
![](https://i-blog.csdnimg.cn/blog_migrate/267394033059d482990952166b6af3b9.png)
通过截取数据包修改价格参数price为0.1,即可通过0.1元购买100元的商品
![](https://i-blog.csdnimg.cn/blog_migrate/63d5fa896c7ffa5b17ef8654a233ba64.png)
![](https://i-blog.csdnimg.cn/blog_migrate/858004996dd301620c508a1b8f3d7d56.png)
4.密码修改逻辑漏洞
访问"越权修改密码"靶场:
![](https://i-blog.csdnimg.cn/blog_migrate/d45967e82e60473146eb2308c612152e.png)
查看网站后台管理系统的账号密码,知道该系统有两个账户:
![](https://i-blog.csdnimg.cn/blog_migrate/1491be8b1320c3d244dc3131c02c2037.png)
首先登录aaaaa/12345!的账户:
![](https://i-blog.csdnimg.cn/blog_migrate/a1bd55fbb564266430f9dc58d01f43d5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/329389bbad913e80adbf2deb3d49b796.png)
对aaaaa账户进行修改密码的操作:发现修改密码处未对旧密码进行验证,就可以直接修改密码
![](https://i-blog.csdnimg.cn/blog_migrate/2403cbcab5417ae18065804a87ca5095.png)
后端查看数据库
![](https://i-blog.csdnimg.cn/blog_migrate/d93b8cb3a29b34ae38ebc39e810e4892.png)
观察数据包我们发现id值可以被篡改,一般来说管理员的id值一般为1或者0
![](https://i-blog.csdnimg.cn/blog_migrate/8283c1fa25ce0bb1ea62e303cab647b3.png)
将id修改为1进行尝试,发现修改成功
![](https://i-blog.csdnimg.cn/blog_migrate/bc29ed5d70126d3dd241f3df6e4f0ddb.png)
admin的密码也被修改
![](https://i-blog.csdnimg.cn/blog_migrate/3a7fd7abf65c57766e8a2b6f832aa654.png)