【挖洞记录】稍微有点曲折的验证码逻辑漏洞
文章描述了一次漏洞挖掘过程:通过 Hunter 工具收集子域名并注册站点后,研究人员发现用户反馈页面接口暴露用户名。随后测试找回密码功能时,发现验证码逻辑存在漏洞:没有次数限制且支持4位数字暴力破解。最终编写脚本成功绕过验证机制。 2025-10-12 06:51:29 Author: www.freebuf.com(查看原文) 阅读量:96 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

1. 信息收集

偷懒,依旧使用 Hunter 查询最近的新子域名,找到一个可以注册的站点。

Hunter 使用参考
https://www.freebuf.com/articles/vuls/447490.html

2. 功能探索

登录后基本没啥可以测试的功能,都是一些汉语字典的数据。
image.png

访问用户反馈页面 https://xxx.xxx.cn/#/sys/feedback

前端在这个页面会调用接口:/sys/index/getbbs

这个接口返回很多 username,这个参数就是用户名
image.png

退出登录,进入找回密码界面,看看有没有逻辑漏洞。

我已我自己账号的 username 为例,先要输入图片验证码
image.png

点击获取验证码后,并没有给我发送重置密码的验证码。

下一个界面中:
随便输入一个验证码:后面测试后是4位,输入一个包含大小写和特殊字符的密码,点击确认抓包该请求

image.png

/sys/index/changePassswordToCode 这个接口校验验证码,没有次数限制,大概 5 分钟失效;不通过响应“验证码错误”
image.png

3.脚本爆破

编写脚本,短时间爆破 /sys/index/changePassswordToCode 接口,尝试了4位和6位数字,经测试后是4位,优化脚本后如下:

```import requests
import threading
from queue import Queue
import time

def generate_4digit_codes():
    """只生成4位数字验证码 (0000-9999)"""
    for i in range(10000):
        yield f"{i:04d}"

class VerificationCodeTester:
    def __init__(self, base_url, user_id, password, cookie_value, thread_count=2):
        self.base_url = base_url
        self.user_id = user_id
        self.passw

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/vuls/452312.html
如有侵权请联系:admin#unsafe.sh