常见逻辑漏洞总结

常见的逻辑漏洞大概分为以下几种:

  • 未授权
  • 登陆与账户
  • 越权
  • 支付
  • 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,从而减少被直接明文越权/遍历的风险。

参考文章

  1. 常见逻辑漏洞
  2. 密码找回逻辑漏洞