支付逻辑漏洞
实验平台:damicms
漏洞描述及测试方法
实际上这个情况常见的情况有:
负值反冲、正负值对冲、甚至是直接修改数量单价、总价等等
-
负值反冲,就是说程序没有校验订单的取值范围,若是使用负值则可以进行支付逻辑利用
-
正负值对冲,通过修改订单的数量或者是单价、总价来达到少付钱的目的,但是你的值不能是负值
本案例为直接使用 burpsuite 抓包修改单价
修复方式
-
服务器端在生成交易订单时,商品的价格从数据库中取出,禁止使用客户端发送的商品价格。
-
服务器端在生成支付订单时,对支付订单中影响支付金额的所有因素(比如商品ID、商品数量、商品价格、订单编号等)进行签名,对客户端提交的支付订单进行校验。
案例
使用 damicms 注册账户,将商品添加至购物车
使用 burpsuite 抓包,修改商品单价
修改后放包,商品的价格被改为1元
、
验证码问题
实验平台:pikachu 靶场
漏洞描述及测试方法
验证码使用后依然可以继续使用
修复方式
使用过一次验证码后,立即注销
案例
随机输入账号和密码,相应验证码,用 burpsuite 抓包,登录失败,验证码发生变化,将数据包发送到 Repeater 进行判断
将验证码设置为空,运行,出现错误提示,验证码不能为空
随机输入验证码,运行,出现错误提示,验证码不正确
经过判读,发现后台会对验证码进行校验,接下来对验证码是否在后台过期进行验证
获取一个新的验证码,返回数据包中,运行,提示用户名或密码不正确,接着修改账号和密码,验证码不变,运行,结果不变,说明验证码可重复使用
将数据包发送到 Intruder 模块,设置变量用户名和密码,验证码固定,使用 Cluster bomb 模式,进行爆破
总结:
- 验证码在后台不会过期,导致可以被长期使用
- 验证码校验不合格,逻辑出现问题
- 验证码设计过于简单和有规律
用户名枚举
漏洞描述及测试方法
在登录的时候,输入不存在的用户名和错误的密码,若是提示“该用户并不存在”,则证明该漏洞存在
修复方式
统一所有的提示信息为“用户名或密码错误”
案例
输入错误的用户名提示用户名不存在
输入正确的用户名,仅提示密码错误
例
输入错误的用户名提示用户名不存在
[外链图片转存中…(img-769GZkQk-1701074457768)]
输入正确的用户名,仅提示密码错误