Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 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
161 mese 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 gmw_get_locations_within_boundaries_sql() del plugin GEO my WordPress, che affetta tutte le versioni <= 4.5.5 ed è stata patchata dalla 4.5.5.1 (15 giugno 2026). È stata scoperta dal ricercatore alvarodh5 e pubblicata tramite Patchstack.

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

┌─────────────────────────────────────────────────────────────────────┐
│  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

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

# 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:

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):

Scarica lo strumento