登录口枚举的防与攻

登录口枚举的防与攻

验证码防御

验证码不刷新

  1. 无条件
    只要不刷新页面/不请求验证码接口,之前的验证码一直有效
  2. 有条件
    登录失败之后,系统会打开一个新页面或者弹出一个新的警告窗口,提示用户登录失败,点击确定后返回登录界面且验证码刷新。这种情况下,只要不关闭新窗口或弹窗,验证码不刷新

通用验证码

测试用验证码未删除,phpstudy官网出现过

验证码出现条件可绕过

登录错误次数达到一定时才出现验证码

  1. 删cookie
  2. 登录错误次数写在cookie/post参数

验证码可控/可获取/可预测

  1. 内容可控
  2. 短信验证码发送目标可控
  3. 验证码藏在源码/cookie
  4. 验证码固定组合+组合数量有限

验证码可枚举

4/6位数字且无错误次数限制

验证码可识别

  1. PKAV 的 HTTP Fuzzer
  2. 自己写工具
  3. 打码平台

逻辑/设计问题

  1. 空值绕过/验证码无效
  2. Fuzz

IP试错限制

同一IP登陆错误次数过多时封IP

IP可伪造

服务端通过以下header头获取IP

X-Forwarded-For:253.22.36.225
X-Forwarded-Host:253.22.36.225
X-Client-IP:253.22.36.225
X-remote-IP:253.22.36.225
X-remote-addr:253.22.36.225
True-Client-IP:253.22.36.225
X-Client-IP:253.22.36.225
Client-IP:253.22.36.225
X-Real-IP:253.22.36.225

https://github.com/TheKingOfDuck/burpFakeIP

识别手段可绕过

删cookie

用户试错限制

同一用户登陆错误次数过多时封用户

对正常业务产生干扰

恶意利用规则

识别手段可绕过

删cookie

参数加密

部分加密导致可枚举

密码加密,则同一密码枚举用户名

加密规则泄露导致加密可逆

js文件

token限制

第一条请求返回的token,加在第二次请求里一起提交才算合法请求
以此类推

burp pitchfork+GrepExtract

其他风险

报错泄露敏感信息

数据库报错

  1. 某公安后台枚举过程中报错泄露数据库名+用户名,去年HW时遇到的,当时是个纯小白,不知道这也能交,虽然交了也还是前十守门员【哭哭哭】

框架报错

TP框架某些条件下报错泄露数据库用户名密码,最近的某篇文章看到的

返回信息泄露敏感信息

根据返回判断用户是否存在/密码是否错误

  1. '用户不存在' or '密码错误'
  2. 字段数相同=>burp正则匹配固定位置返回信息

假防御

逻辑/设计问题

Fuzz

其他功能泄露用户名存在与否

  1. 忘记密码
  2. 注册

猜你喜欢

转载自www.cnblogs.com/Rain99-/p/12722491.html