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
Outils/GitHubGitHub/themalwareguardian/cve-2018-18912
Analyse des VulnérabilitésExploitationRétro-ingénierieShellcodeExploitation d'Applications WebDébogueursApprentissage et ÉducationDéveloppement de Charges UtilesExploitation de Binaires
GitHubthemalwareguardian/cve-2018-18912

CVE-2018-18912

Débordement de tampon basé sur SEH dans Easy File Sharing Web Server 7.2 démontrant comment un paramètre HTTP POST authentifié peut corrompre la chaîne de gestion des exceptions.

Voir le dépôt
12il y a 5 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-2018-18912 : Serveur Web Easy File Sharing 7.2 - Débordement de tampon basé sur la pile (SEH)

Débordement de tampon basé sur SEH dans Easy File Sharing Web Server 7.2 montrant comment un paramètre HTTP POST authentifié peut corrompre la chaîne de gestion des exceptions.




📑 Table des matières

  • Pourquoi ce dépôt existe
  • Pourquoi cette vulnérabilité est intéressante
  • Contexte et logiciel concerné
  • À propos de la vulnérabilité
  • Déclencher le crash
  • Exploitation



🎓 Pourquoi ce dépôt existe

Ce dépôt fait partie du matériel que j'utilise pour enseigner l'exploitation des corruptions mémoire (en plus de mon travail habituel, j'enseigne également dans différents cours de cybersécurité où j'aide à former la prochaine génération de rétro-ingénieurs).

CVE-2018-18912 est le cas que j'utilise pour passer des écrasements directs de l'EIP à l'exploitation basée sur SEH. Une fois que les étudiants comprennent comment fonctionne un écrasement direct d'adresse de retour, l'étape suivante consiste à comprendre ce qui se produit lorsque la pile est tellement corrompue que le programme déclenche une exception avant de revenir, et comment cette chaîne de gestionnaires d'exceptions devient alors la surface d'attaque. Cette CVE illustre clairement cette transition : le débordement est suffisamment profond pour atteindre la chaîne SEH, et le chemin d'exploitation suit la technique classique POP POP RETN que tout développeur d'exploit doit maîtriser. La contournement optionnel de la DEP via ROP est laissé comme exercice pour les étudiants qui souhaitent aller plus loin — le même débordement, une stratégie de gadgets différente, un problème beaucoup plus difficile.




💡 Pourquoi cette vulnérabilité est intéressante

Cette vulnérabilité affecte Easy File Sharing Web Server 7.2, une application serveur web légère pour Windows largement utilisée pour le partage simple de fichiers. Le logiciel a été écrit sans tenir compte des mesures de sécurité modernes. Ce qui rend ce cas particulièrement intéressant d'un point de vue pédagogique, c'est la combinaison des facteurs impliqués :

  • L'authentification est requise, mais seulement à un niveau basique. Cela modélise un scénario où un attaquant a obtenu des identifiants, ce qui est courant dans le post-exploitation réel.
  • Le débordement est basé sur SEH. Le crash n'écrase pas directement l'adresse de retour. Au lieu de cela, il corrompt la chaîne du gestionnaire d'exceptions structuré sur la pile, nécessitant une technique d'exploitation différente.
  • Le point d'entrée vulnérable est une requête POST. Facile à reproduire avec des outils HTTP standard et familier à quiconque a travaillé avec des applications web.
  • Le contournement de la DEP est optionnel. L'exploit fonctionne avec une approche directe SEH + saut court + shellcode sur les systèmes où la DEP est désactivée. Si la DEP est activée, le même débordement peut être étendu avec une chaîne ROP utilisant des gadgets d'ImageLoad.dll pour appeler VirtualProtect avant de transférer le contrôle au shellcode.

Cette combinaison fait de CVE-2018-18912 un excellent cas pour enseigner les techniques de développement d'exploits au-delà des bases.




🔍 Contexte et logiciel concerné

Easy File Sharing Web Server 7.2 est une application Windows qui permet aux utilisateurs de partager des fichiers via HTTP. Elle inclut des fonctionnalités telles que la navigation de fichiers, l'authentification des utilisateurs et un système de forum intégré.

La fonctionnalité de forum accepte les requêtes POST pour créer de nouveaux sujets. L'un des champs de formulaire gérés par ce point d'entrée est le paramètre author. En interne, l'application copie cette valeur contrôlée par l'utilisateur dans un tampon de pile de taille fixe sans valider la longueur.

La vulnérabilité a été découverte et signalée en 2018. La PoC originale a été publiée peu après, démontrant à la fois le crash et une chaîne d'exploitation fonctionnelle incluant des gadgets ROP du module ImageLoad.dll fourni.

Détails techniques clés :

  • Type de vulnérabilité : Débordement de tampon basé sur la pile (SEH)
  • Version concernée : Easy File Sharing Web Server 7.2
  • Point d'entrée concerné : POST /forum.ghp
  • Paramètre vulnérable : author
  • Impact : Exécution de code à distance



⚠️ À propos de la vulnérabilité

Easy File Sharing Web Server traite les requêtes HTTP POST adressées à /forum.ghp lorsqu'un utilisateur crée un nouveau sujet de forum. L'un des paramètres acceptés est author, qui est copié dans un tampon de pile local sans aucune vérification de longueur.

En rétro-ingénierie du binaire, on peut observer que le gestionnaire de ce champ de formulaire utilise un tampon de taille fixe et une opération de copie non sécurisée. Une version simplifiée de la logique vulnérable ressemble à ceci :

root@kitploit:~
char author_buffer[64];

strcpy(author_buffer, user_input);

Comme le tampon de destination a une taille fixe et que la longueur de l'entrée n'est pas validée, l'envoi d'une chaîne suffisamment longue dans le champ author provoque une écriture au-delà de la fin du tampon.

À mesure que davantage de données sont écrites, la disposition de la pile devient corrompue. Contrairement à un simple écrasement d'adresse de retour, le débordement atteint la chaîne du gestionnaire d'exceptions structuré (SEH) stockée sur la pile. Lorsqu'une exception est déclenchée à la suite de la corruption de la pile, le système d'exploitation parcourt la chaîne SEH et transfère le contrôle à l'adresse du gestionnaire contrôlée par l'attaquant.

Le flux d'exploitation suit donc la technique d'écrasement SEH :

  1. Une entrée longue écrase la pile, y compris les pointeurs nSEH et SEH.
  2. Une exception est déclenchée en raison de la corruption mémoire.
  3. Le système d'exploitation invoque l'adresse du gestionnaire écrasée.
  4. Un gadget POP POP RETN est utilisé pour transférer l'exécution vers la zone nSEH.
  5. Un saut court vers l'avant saute par-dessus l'enregistrement SEH et redirige l'exécution vers la zone du shellcode.
  6. Le shellcode s'exécute.

Cela rend la vulnérabilité plus complexe à exploiter qu'un simple écrasement de l'EIP, mais aussi plus représentative des scénarios réels.




Télécharger l’outil
💥 Déclencher le crash

Le crash peut être reproduit en envoyant une longue chaîne dans le paramètre author d'une requête POST vers /forum.ghp après s'être authentifié avec des identifiants valides. Exemple en Python :

root@kitploit:~
import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 500

request = (
	b"POST /forum.ghp?forumid=1 HTTP/1.1\r\n"
	b"Host: 127.0.0.1\r\n"
	b"Content-Type: application/x-www-form-urlencoded\r\n"
	b"Cookie: UserID=test; PassWD=test; SESSIONID=1234\r\n"
	b"Connection: close\r\n"
	b"\r\n"
	b"author=" + payload + b"&passwd=test&title=test&content=test&Submit=Submit\r\n"
)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(request)
s.close()

Lorsqu'il est exécuté sous un débogueur, le crash montre une chaîne SEH corrompue et une violation d'accès, confirmant que les données contrôlées par l'utilisateur ont écrasé le pointeur du gestionnaire d'exceptions.




💣 Exploitation

L'objectif de ce dépôt n'est pas seulement de démontrer le crash, mais aussi de parcourir l'ensemble du processus d'exploitation étape par étape, en suivant la méthodologie utilisée lors du développement d'exploits SEH réels.

Pour garder le README principal clair, les notes d'exploitation détaillées, les scripts et les étapes du débogueur sont placés dans le dossier Vulnerability 📂 de ce dépôt.

Vous y trouverez le workflow complet utilisé pour exploiter cette CVE, comprenant :

  • Le fuzzing du paramètre author pour identifier le crash.
  • La recherche du décalage pour localiser la position exacte de nSEH et SEH sur la pile.
  • L'analyse des mauvais caractères pour identifier les octets qui corrompent la charge utile.
  • L'écrasement de la chaîne SEH à l'aide d'un gadget POP POP RETN provenant d'un module chargé.
  • Le placement et l'exécution du shellcode.