当前位置: 首页 > news >正文

Username enumeration via different responses

Username enumeration via different responses -Burp复现

实验信息

  • 平台:PortSwigger Web Security Academy
  • 漏洞:Authentication
  • Lab: Username enumeration via different responses
  • 难度:Apprentice

漏洞原理

该漏洞属于Authentication下Username Enumeration(用户名枚举漏洞),核心成因是 Web 应用在登录鉴权时,对「用户名不存在」和「用户名存在但密码错误」两种场景返回了差异化的响应信息。正常安全的登录设计,会统一返回模糊提示(如 “用户名或密码错误”),规避攻击者区分账号有效性;而本漏洞场景中,应用会精准反馈:无效用户名提示「Invalid username」,有效用户名但密码错误提示「Incorrect password」。攻击者可利用这种响应文案、数据包长度、状态码、页面返回内容的差异,配合爆破工具批量遍历用户名字典,精准筛选出系统内已注册的有效账号;拿到有效用户名后,再针对性对该账号进行密码爆破,大幅降低暴力破解的难度与工作量,为后续账号入侵铺路。

测试过程

Lab 7:

  1. 给了Candidate usernames and passwords lists, 通过Burp Intruder进行enumeration(枚举) 。登录wiener账号,hiighlight wiener 右键发送到Intruder

  2. 在右边的payload configuration粘贴给定的username list开始爆破攻击

  1. 可以在结果中发现很多结果相同,但是有一个特殊的用户名的length不同,利用Burp comparer窗口和其他结果的前端界面对比,其他内容为Invalid username, 只有al显示为Incorrect password可以确定,al就是目标用户

  1. 和username的enumeration操作一样,highlight the peter(给定的password),paste passwords we copied from the list开始攻击

  2. 同样有一个unusual length,发现他的status code is 302 Found ,这就是我们的目标密码

  1. 成功登录

  1. lab solved!

利用Payload

通过Burp Intruder的右侧Payload可以进行枚举爆破,降低手动列举的工程量。如果会一点点编程的话,在拥有用户名和密码的情况下,写一个自动化脚本也可以实现,不过这里是apprentice learning,重点在于Burp工具的使用,几个月后将会开始practitioner learning同样会有authentication vulnerability,就不局限于Burp工具的使用与复现,采用多种形式解题,并将源代码同步到[Github](Naclarb/web-security-learning: PortSwigger Labs and Burp Suite Practices)

个人总结

  • 第一, 如何利用这个漏洞?

暴力破解是最简单粗暴的方式,只要attacker拥有valid username,结合现代化工具以及对密码的预测,例如:大部分用户的各个平台密码几乎一致,仅有微小改变,如果只要一个平台发生泄漏将会导致用户全生态的泄露。

  • 第二,为什么会产生这个漏洞?

显然,只要其他用户得到目标用户的账号和密码就能登录,而不进行authentication就是漏洞来源。以Google的登录系统为例,可不仅仅是账号密码就可以login, 还需要图片验证码(九宫格找出所有的Car)证明不是机器人以及短信/邮箱验证码来证明是本人。

  • 第三,如何修复这个漏洞?

参考google的登录,加入图片验证码和短信验证码,authentication;(在下一个lab中会看到有关验证码的漏洞,请持续关注更新)

加入图片验证码和短信验证码,authentication;(在下一个lab中会看到有关验证码的漏洞,请持续关注更新)

参考手机的开锁,超过一定次数将会锁定,防止枚举

http://www.jsqmd.com/news/598908/

相关文章:

  • 【摄影测量】从零实现张正友标定法:手写代码解析相机内参/外参与畸变校正
  • 终极免费QMC解码器:3分钟解锁QQ音乐加密文件,实现全平台音乐自由
  • 3个创新维度破解直播回放获取难题:douyin-downloader深度解构与实战指南
  • Natural-Language Agent Harnesses 论文笔记
  • 开源模组加载器SMAPI全攻略:从新手配置到冲突解决的进阶指南
  • STM32F0实战:基于HAL库开发【4.5】
  • Oracle多租户架构
  • SpringBoot4.X: 彻底消灭 NullPointerException
  • 9篇8章2节:MIMIC 数据库的 CITI 注册与课程选择(2026年版)
  • 实战指南:基于快马平台构建带第三方登录的tk网站登录页
  • 前端 SSE(Server-Sent Events)实现详解:从原理到前端 AI 对话应用
  • WaveTools重构鸣潮游戏体验:突破性能瓶颈的开源解决方案
  • AI率80%和40%降到20%,难度差了多少?
  • 【React】setState 触发渲染的流程
  • 基于STM32的‘水位检测自动控制系统‘:支持超声波模块、DS18B20传感器,包含原理图、P...
  • 基于液压控制的冲床自动送料机的设计【说明书+CAD+外文翻译】
  • Math.js 使用教程
  • 五相电机双闭环矢量控制模型:原理说明、仿真波形及完整版Simulink模型
  • Windows下5种端口连通性测试方法实测对比(附详细命令)
  • Ostrakon-VL-8B多模态运维监控实战:智能日志分析与故障预警
  • e1547:重新定义e621浏览体验的现代化客户端解决方案
  • Golang笔记1-变量与类型
  • 3步优化鸣潮游戏体验:面向全层级玩家的WaveTools工具箱使用指南
  • VI、 UI 和 UX 设计区别,详细介绍
  • # 发散创新:基于Python与OpenCV的手势识别系统实战详解在人工智能快速发
  • 终极指南:使用payload-dumper-go快速提取Android OTA更新包
  • 【VBA】【EXCEL】分类汇总
  • 篡改猴Tampermonkey失效解决方案
  • 单目相机实战:用OpenCV的solvePnP实现物体位姿估计(附Python代码)
  • C++ STL 核心:string 从入门到精通(面试+源码+OJ实战)