文章总结: 本文分享了针对图形或滑块验证码登录系统的绕过技巧。作者利用系统内部无验证码防护的修改密码功能,通过构造特定请求包,利用验证原密码与解密新密码阶段产生的不同错误回显差异,成功探测出用户默认密码,从而绕过前端强防护实施密码喷洒攻击。 综合评分: 91 文章分类: 渗透测试,WEB安全,漏洞分析,实战经验
图形/滑块验证码场景下的登录密码喷洒爆破
原创
M1n9K1n9
APT250
2025年12月23日 01:23 北京
图形/滑块验证码场景下的登录密码喷洒爆破
限流重发,再限直接删号自建blog
前言
最近跑到北京来两周,跟广东最冷的时候有的一拼,这周燃尽了,各种奇怪的想法加API剑,狂薅10+个高危;本文主要分享其中一个,在发现某些系统存在默认密码并且获得大量用户部分info的情况下,却有图形验证码+滑块验证码阻挠,无法进行喷洒。
然而碰到的是我,即将燃尽的情况下,一波简单操作这周燃尽了,在众多成果中增添一点点成果,同时诞生了本文
或许开发看到报告抓破脑袋都想不出来设置了这么反爆破验证,这是怎么被爆破的,估计得连夜去查日志 XD
感谢内部送来的250块钱,由API剑一个工具为我提供的贡献,算上之前发的奖励已经350了,目前API剑在github已经320 stars
web系统外部登录爆破受阻
在我这次碰到的一系列应用系统中,绝大部分系统都无法支持我们进行登录爆破行为,它们几乎都集成了最基础的几种反爆破技术:图形验证码、滑块验证码、短信验证码,甚至是它们的组合
在我们处于登陆框,还没进入系统的阶段,有这几样东西同时加持,我们想要爆破、喷洒几乎很难,或者说成本很高。
这不仅限于登陆框,也可能是开发非常注重系统外部安全(登陆框外阶段),所以除了登录需要多种验证,连面向未登录状态的忘记密码功能、修改密码功能也会被这几种防爆破技术覆盖,甚至没开放这些功能
立足点
系统外部对我们来说看起来确实有点坚不可摧,所以我们必须转移到系统内部
其实我们的目的很明显,因为我们拥有一组登录凭据,可以以极低权限访问系统内部,并且发现内部泄露了明文的默认密码,它有可能是许多系统用户的密码,所以我们的两大目的就是:获取足够丰富的系统用户信息、进行密码喷洒
在前期阶段,我们就已经在系统内部通过技术手段已经获得了非常全面的系统用户id、username信息,所以这个目的早已实现
修改密码的后端处理流程
请注意:未经授权地修改密码非常危险,所以,以下内容适用于部分利用修改密码功能的验证机制而不进行实际的密码修改
爆破和喷洒的主要关键点在于我们能否判断我们输入的用户和密码是否正确,换句话说,只要能得到密码正确和错误的一丁点提示,哪怕是仅仅只可用于判断的错误信息,也足够
所以我们开始寻找系统内不存在反爆破技术且后端会对我们输入的用户和密码进行验证的点
最后我们发现多个系统内的修改密码功能均没有任何反爆破,并且它会接受用户id、用户名、原密码和新密码
稍后我们将从开发角度分析这一点。
我们先填写修改密码的表单并抓包查看一下到底是怎么回事:
这是一个很简单的表单,唯一不简单的,就是两个很关键的参数,原密码和新密码参数,它们均采用某种hash算法或其他aes、rsa进行加密,这一点也算比较重要,我们稍后将会再次提及它对我们的作用
我们对表单中中的每个字段进行修改,很轻松地就能发现后端对每个参数的处理顺序:
验证id -> 验证username -> 解密oldpass -> 验证oldpass -> 解密newpass -> 检验newpass
当我们知道整个流程后,我们就可以开始尝试哪个阶段会暴露一些可识别信息用于支持我们的喷洒/爆破行为
修改密码的利用 – 密码喷洒
再次提醒,修改密码是危险操作,以下内容面向部分利用修改密码功能的验证机制而不进行实际的密码修改
尝试破坏验证旧密码阶段,发现会显示原密码不正确:
当我们输入正确原密码,并且破坏解密新密码或检验新密码,我们会发现一个非常有意思的响应:
我在新密码参数中输入了一个非加密的字符,也就是说后端会因解密失败而异常,所以返回响应500和fail
也就是说,只要到了验证原密码参数阶段,原密码正确;那么就会开始解密和检验新密码,如果这一阶段出错,将会返回500 fail可识别信息,如果密码错误就不会进入这个阶段,而是直接返回原密码错误信息
到这里一切都已经很清晰,我们不希望修改其他用户的密码,但又希望利用修改密码功能的验证机制以达到密码喷洒/爆破的行为
通过这一波操作下来,已经满足我们进行密码喷洒/爆破的所有条件了
我们只需整理userid和username的爆破字典,并且将原密码参数设置为我们收集到的默认密码的加密形式(浏览器填表单抓包即可获得)、将新密码设置为错误的非加密字符
对对应的userid和username进行爆破,寻找通过了原密码验证并进入新密码检验阶段的500 fail响应,就能证明它是默认密码
以下是使用ffuf进行喷洒默认密码和默认密码的变体极小部分结果,成功帮助我们获得大量默认密码账户访问权
结尾
这修改密码功能不能算存在问题,可能唯一的问题就是不应该接受其他userid和name,
从开发角度上看,可能他们认为接受userid和name其实没啥问题,毕竟修改密码需要知道原密码,不知道原密码是无法修改其他用户的密码的。
只要无法越权修改别人的密码,那这个功能在开发眼里就没有任何问题,从修改密码功能的作用角度上看也确实如此
怎料竟被我们研究用于密码喷洒/爆破 XD
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:APT250 M1n9K1n9《图形/滑块验证码场景下的登录密码喷洒爆破》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论