什么是逻辑漏洞
逻辑漏洞产生是因为编写代码时人的思维逻辑产生的不足导致的应用程序在逻辑上的缺陷,与传统的WEB漏洞相比,逻辑漏洞无法通过漏洞扫描进行识别,利用过程中不会对原始程序进行破坏、不会产生非法流量被防火墙拦截;而是通过合法的方式达到目的,比如通过修改返回包绕过验证,截取服务器返回到客户端的验证码,通过修改参数获取权限等。
分类
密码找回
测试流程
- 先尝试正确的密码找回流程,记录不同找回方式的所有数据包
- 分析数据包,找到有效数据部分
- 推测数据构造方法
- 构造数据包验证猜测
漏洞点
邮箱找回
- 点击邮件中的链接后会转跳到修密码的页面
- 可以考虑是时间戳md5、用户名或邮箱和随机字符串md5等,一般是类似如下链接:
http://domain/findpwd.php?u=xiaoming&token=MTIzQHFxLmNvbQ==
http://domain/findpwd.php?id=374&token=2ad64bf14c714dbce88c7993663da7da
- 当构造相应链接时就可以重置任意用户的密码
- 使用邮箱接收验证码找回
- 随机输入验证码,尝试使用BP抓包,修改服务器端返回内容绕过(一般是true或false)
手机短信找回
- 确定验证码长度可以尝试暴力猜测
- 尝试使用BP抓包,可能服务端直接返回验证码或可以通过修改服务器端返回内容绕过(一般是true或false)
- 使用A手机号接收验证码,提交时,修改为B手机号(未绑定手机号和验证码)
支付逻辑
攻击者通过修改交易金额、交易数量等从而利用漏洞,
如Burp修改交易金额、使交易数量为负数或无限大等。
- 在支付时直接修改数据包中的支付金额,实现小金额购买大金额商品
- 可以从URL或截取数据包尝试修改金额
- 修改购买数量,使之为负数,可购买负数量商品,从而扣除负积分,即增加积分,或使购买数量无限大,无限大时则程序可能处理出错,从而实现0金额支付
- 请求重放,在购买成功后重放请求,可实现"一次购买多次收货"
MS08067安全实验室
Frieza