常见的逻辑漏洞大概分为以下几种:
- 未授权
- 登陆与账户
- 越权
- 支付
- API
未授权
未授权的原因一般是由于代码未做登录验证或者登录验证失效引起,从而使后台或者带有敏感信息的页面直接裸露在公网。
常见利用方式
# site
在搜索引擎中,使用site:
去查询相关域名信息
# 域名爆破
通过爆破发现更多的二级、三级域名,然后导出域名列表通过脚本查看域名banner名称,常见的子域名列表
# 端口及banner扫描
通过脚本批量获取http banner
# whois信息查询
如果没有设置域名隐私保护,可以通过whois查询某个域名所有人还拥有哪些域名等信息
登陆与账户
常见利用方式
# 弱验证码
- 一些可以被图像识别或者简单的图片验证码,例如这里使用了
pytesseract
进行了验证码识别,准确率大概80%以上,这种验证码基本等于没有 使用短位数纯数字作为手机验证码
例如4位纯数字,当用户基数很大时,在一段时间,有很多账户会使用同一验证码,通过暴力破解,可能登陆其他人的账号。(验证码不变,暴力破解账号,这样不会造成同一账号多次尝试报警)
# 账号登录回显与注册
该用户不存在
、该用户已注册
,这无疑是一个变相的撞库漏洞
# 明文密码登录
使用明文或MD5及一些容易破解的加密方式作为密码加密方式
# 账号及其它个人信息篡改
通过抓包方式对账号信息进行拦截,如手机号、uid、邮箱、token,篡改后提交数据包,从而达到登录别人账号的目的
# 密码重置
常见的密码重置绕过方式有数字验证码绕过,比如4位数字,通过爆破进行;有的通过修改返回结果,如把false改成true。还有的可以构造密码重置链接。
越权
常见利用场景
订单遍历
# 前台订单
前台订单遍历指在查看订单时发现订单id为一串有规律的数字,这时可能通过变换id数字就可以查看他人订单信息了
# 后台订单
在前端展现的时候,每个用户只能查看系统分配给自己的一些订单信息。但是通过burp抓包进行fuzz时,多数都可越权查看其它账户下的订单信息,这就成了一个变相的脱裤。
# 前后端订单遍历
当我们在某外卖提交订单时,信息里面会包含一个订单号,而这个订单需要一个商家端来接单。商家端接单时可以抓包,然后就可以进行订单遍历了。当然,前提是你得有一个商家端。
商家资质遍历
商家在运营过程中,会向平台提交一些身份证、营业执照等敏感信息。一些服务端为了方便保存,直接对上传文件以用户id或者一串数字保存,这样一来可能通过改id就可获取其它商家信息。
取消订单时对订单号进行拦截篡改,从而达到取消他人订单的目的;评论时更换评论者id,从而实现恶意刷好评、差评的目的。
支付
常见利用场景
# 金额篡改
下单时,通过拦截篡改支付额度后提交请求,一般会看到出其不意的效果,如把订单金额改小、改成负数。造成这一现象的原因是服务器端对金额未做二次校验
# 充值
一种是少充多得,比如充值100元时通过篡改金额改成10元,最终充值完毕后账户变成了100元,而实际付款却只有10元;
另一种是绕过活动页金额限制,比如很多公司做活动强制用户充值金额不能低于10000,而通过拦截修改金额,可以充值任意金额。
# 提现
提现一般也是由于服务器端参数校验不严格,会经常存在一些信息泄露、无限提款的漏洞。一般提现时,我们可以通过篡改提现额度、银行卡号来实现。防护手段是手机号、姓名、银行卡账户、额度四个统一。
API
常见利用场景
# 参数校验
通过改变url参数,获取到了不属于自己的返回信息,其中包含了敏感信息
# 关键参数不加密
订单号、银行卡号、身份证等敏感信息,这类数据要进行hash,从而减少被直接明文越权/遍历的风险。