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-2019-19576 — Il s'agit d'un exploit de contournement de filtre permettant le téléversement arbitraire de fichiers et l'exécution de code à distance dans class.upload.php <= 2.0.3 | Kitploit
Outils/GitHubGitHub/jra89/cve-2019-19576
Génération de PayloadsAnalyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'Intrusion
GitHubjra89/cve-2019-19576

CVE-2019-19576

Il s'agit d'un exploit de contournement de filtre permettant le téléversement arbitraire de fichiers et l'exécution de code à distance dans class.upload.php <= 2.0.3

Voir le dépôt
123il y a 6 ansPas 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

class.upload.php <= 2.0.3 Téléversement arbitraire de fichier

  • Auteur - Jinny Ramsmark
  • Fournisseur concerné - Verot.net
  • Produit concerné - class.upload.php <= 2.0.3
  • Testé sur Ubuntu 19.10 nouvellement installé avec PHP7.3 et Apache/2.4.38
  • Plus précisément, Debian/Ubuntu s'est avéré vulnérable car ils ajoutent les extensions php, phar et phtml aux gestionnaires PHP disponibles. Dans ce cas, class.upload.php n'a pas inscrit l'extension phar sur liste noire.

Description

Il s'agit d'une exploitation par contournement du filtre qui aboutit à un téléversement arbitraire de fichier et à une exécution de code à distance. Le script class.upload.php filtre les « fichiers et contenus dangereux » et les renomme avec l'extension de fichier txt. Il applique également différents types de transformations sur l'image téléversée, ce qui détruirait normalement toute charge utile injectée, même si le filtre d'extension de fichier pouvait être contourné.

Le filtre d'extension de fichier est une liste noire, donc dès qu'une nouvelle extension est introduite (dans ce cas phar), ou que l'une d'elles a été oubliée, un fichier PHP peut être téléversé. Le contenu doit néanmoins rester une image valide et passera toujours par les fonctions imagecreatefromjpeg et similaires. Dans ce but, j'ai écrit le script inject.php qui va essentiellement forcer par essais successifs son chemin à travers différentes images jusqu'à ce qu'il en trouve une où la charge utile ne sera pas détruite par le processus effectué dans class.upload.php. Cela nous donne en pratique un téléversement arbitraire de fichier et une exécution de code très furtive, puisque le fichier reste une image valide et s'affichera comme telle sur les pages où il est téléversé.

Chronologie (délai par défaut de 90 jours)

  • 2019-12-03 - Signalé au développeur et à K2
  • 2019-12-03 - K2 a répondu
  • 2019-12-04 - Verot a répondu avec un correctif
  • 2019-12-04 - K2 a répondu avec un correctif préparé de son côté
  • 2019-12-04 - Verot a publié ledit correctif (v2.0.4)
  • 2019-12-05 - Les deux parties ont répondu et accepté que l'information soit publiée

Fichiers inclus dans ce PoC

  • composer.json
  • upload.php
  • inject.php

Utilisation

Le script upload.php est le code d'exemple provenant du github de verot.net. J'ai pensé qu'il serait préférable de démontrer cette vulnérabilité en utilisant leur propre code d'exemple.

  • Exécutez "php inject.php" dans un terminal ; il générera une image d'exemple avec une charge utile simple dans le fichier.
  • Lorsque le script est terminé, il produira un fichier nommé "image.jpg.phar".
  • Accédez au fichier upload.php et téléversez image.jpg.phar, il passera et vous aurez désormais un shell.

Exemple

root@kitploit:~
user@ayu:/var/www/html# php inject.php 
-=Imagejpeg injector 1.7=-
[+] Fetching image (100 X 100) from http://lorempixel.com/100/100/
[+] Jumping to end byte
[+] Searching for valid injection point
[!] Temp solution, if you get a 'recoverable parse error' here, it means it probably failed
[+] It seems like it worked!
[+] Result file: image.jpg.phar
root@kitploit:~
user@ayu:/var/www/html# curl -v -o - http://localhost/images/image_resized.phar?c=uname%20-a | grep -aPo "(Linux.*GNU)"
Linux ayu 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 UTC 2019 x86_64 x86_64 x86_64 GNU

Solution proposée

  • Ne mettez pas les extensions de fichier sur liste noire.
  • Utilisez plutôt une liste blanche des extensions autorisées par défaut.
  • Ou simplement n'utilisez aucune extension du tout sur les fichiers téléversés, et stockez le nom d'origine ailleurs.

Référence

  • https://github.com/verot/class.upload.php/blob/2.0.3/src/class.upload.php#L3068

Exemple d'attaque dans l'extension Joomla K2

Téléversement arbitraire de fichier conduisant à une exécution de code à distance dans JoomlaWorks K2 <= 2.10.1 en raison d'une version non corrigée de class.upload.php

Site web

  • https://getk2.org/

Exemples d'images

Un utilisateur classique téléverse l'image générée par inject.php, contenant une charge utile simple. Elle contournera le filtre d'extension de class.upload.php et ne sera pas détruite par le traitement d'image effectué dans la bibliothèque. Elle s'affichera comme une image classique, ce qui est plus discret.



Le fichier sera téléversé et pourra être utilisé comme porte dérobée pour exécuter des commandes.

Télécharger l’outil