zoukankan      html  css  js  c++  java
  • WordPress The Plus Addons for Elementor插件身份验证绕过漏洞复现分析

    0x01 漏洞描述
    The Plus Addons for Elementor是Elementor Page Builder最大和最具创新性的Elementor插件,在WordPress应用上广泛使用。由于该插件配置不当,攻击者可以绕过身份验证注册为管理员用户或以已经存在的管理员用户身份进行登录。
     
    影响范围: The Plus Addons for Elementor <= 4.1.6
     
    0x02 环境搭建
    找了一下插件,wordpress商店上的是免费版本,版本号对不上公告的,同时wordfence的公告中也证明免费版本不存在这个问题,搜了一下找到专业版 4.1.4的
    先搭建wordpress,我这里用的是windows+phpstudy,直接下载wordpress安装 (https://wordpress.org/latest.zip)
    上传 The Plus Addons for Elementor  插件离线安装,插件安装成功后会提示缺少Elementor,安装之后还会说缺少 The Plus Addons for Elementor Page Builder Lite,继续在线安装。(需要kexue上网)
    安装完成后无任何提示,完整插件如下图:
     

     无提示安装了,环境就算搭建成功了。

    0x03 漏洞分析
    解压插件压缩包,根据漏洞描述,攻击者可以注册管理员用户或者以已经存在的管理员用户身份登陆,想必是与注册登陆接口有关
    全局搜索register 搜到theplus_google_ajax_register方法

     看到1125行代码,这里用了get_user_by函数,虽然传入的是email,但方法的作用是根据登陆相关的来获取用户数据,字段field的值限定为了login,所以这里是根据登陆名来获取,不要因为传入了email参数而被误导了。(后续测试发现部分版本这里确实是邮箱)

    代码往下走,如果获取到了用户数据,则设置用户cookie,所以只需要知道已存在的登陆名即可登陆任意用户

    如果查不到,看到1137行,直接注册一个新的用户,跟入theplus_ajax_register_use函数

    根据传入的数据,插入一个新的用户,账号名、密码等均可控,并且如果传入了tp_user_reg_role参数,则更新用户为指定的角色权限,并且返回新用户登陆后的cookie。

    代码分析完,接下来构造请求,回到方法头部,看到方法挂载到wp_ajax_nopriv_theplus_google_ajax_register 钩子上。
    这个钩子是wordpress 的ajax钩子,钩子命名形如“wp_ajax_nopriv_[action]”和“wp_ajax_[action]”,前端向“/wp-admin/admin-ajax.php” 发送请求,后端根据action来处理数据
     
    0x04 漏洞复现
    任意用户登陆,传入系统中存在的登录名,成功获取cookie

    创建一个新的管理员用户,返回了新用户的cookie

     使用新创建的用户登录,成功登录

  • 相关阅读:
    【JAVA Swing】自定义弹出的无边提醒框(可自动消失)
    java比较器Comparator的简单使用
    BoneCP的简单使用
    鸿蒙的js开发部模式18:鸿蒙的文件上传到python服务器端
    【知识点前情提要】鸿蒙小白入门指南!跟着张荣超老师学鸿蒙
    分布式流转开发常见报错FAQ
    Ability之间或者进程间数据传递之对象(Sequenceable序列化)
    【资源下载】安卓VS鸿蒙第三方件切换宝典 V1.0
    鸿蒙开源第三方组件 ——B站开源弹幕库引擎的迁移(上)
    鸿蒙的js开发部模式17:鸿蒙的系统能力的应用模块
  • 原文地址:https://www.cnblogs.com/r00tuser/p/14550944.html
Copyright © 2011-2022 走看看