zoukankan      html  css  js  c++  java
  • [典型漏洞分享]YS忘记密码机制设计存在缺陷,导致任意用户口令均可被修改【高】

    记录了安全测试过程中发现的一些典型的安全问题

    YS忘记密码机制存在缺陷,可导致任意用户口令被修改【高】

    问题描述:

             YS网站提供用户密码修改功能,当用户忘记密码时可通过该功能找回密码,但该修改密码的流程存在如下问题:

    1、  手机验证码过短(只有4位且为纯数字),很容易被暴力破解。

    2、  只单纯通过手机验证码来判断用户的真伪,在输入手机验证码后直接在页面上进行密码修改,而不是采用更安全的多重认证的方式。

    测试步骤:

    1、  安装burp并启动http请求拦截功能。

    2、  打开YS首页,选择“修改密码”,如图:

    clip_image002

    3、  在修改密码对话框中输入一个要修改密码的用户名,如下图所示:

    clip_image004

    4、  点击“下一步”,弹出输入手机验证码的对话框,任意输入一个错误的验证码,并提交,burp将抓到用于向用户手机发送验证码的http请求,同时将该请求发送到burprepeater,待后面进行重放,如图:

    clip_image006

    clip_image008

    5、  使用burprepeater功能对该http进行多次重放,每次均修改checkcode的值,由于checkcode4位纯数字,范围为1-9999,故使用自动化的方式(比如burpintruder功能)可进行暴力破解,进而获得用户的checkcode,如下图所示:

    clip_image010

    6、  在手机验证码的对话框中重新输入暴力破解出来的正确的checkcode,即可在当前页面上对用户的密码进行修改!

    clip_image012

    clip_image014

    clip_image016

    问题扩展:

             结合自动化方法,攻击者即可修改YS任意用户的密码。

    解决建议:

    1、  用户提交手机验证码的请求不需要带上手机号和用户名等信息,可以直接通过cookie从数据库查询,避免被恶意篡改。

    2、  为手机验证码提供放暴力破解机制,即如果尝试3次提交手机验证码错误,则立马让该手机验证码失效,此外,正常情况下,手机验证码最初有效期为半个小时。

    3、  当用户密码被修改时或者用户异地登录时应给予登录或手机提醒。

  • 相关阅读:
    c#多线程控制
    SQL解析XML文件
    c#时间差高精度检查
    SQL Server数据库级别触发器
    c#做对比软件
    项目管理开源软件
    信息量、信息熵、交叉熵、相对熵
    GAN评价指标之mode score
    Fréchet Inception Distance(FID)
    图片的多样性之模式崩溃
  • 原文地址:https://www.cnblogs.com/fishou/p/4179893.html
Copyright © 2011-2022 走看看