Bonjour,
dans le cadre d'un projet de sécurité, j'ai été amené à chercher un ver permettant de prendre le contrôle du shell de la victime en faisant du débordement de tampon : j'ai pu trouver le ver Conficker
exploitant la faille MS08-67 du server service de Windows. Par la suite, j'ai utilisé metasploit pour pouvoir tester l'exploit sus-cité. J'ai effectivement pu prendre le contrôle du shell de ma victime
(ne vous inquiétez pas une machine virtuelle, et non Alice...). Maintenant, j'aimerais comprendre comment il a pu prendre le contrôle du shell de ma victime. D'après mes recherches, j'ai pu trouver la fonction qui posait problème :
- "_CanonicalizePathName(Path);" se trouvant dans la fonction "_NetpwPathCanonicalize(wchar_t* Path)"
Le problème est que _CanonicalizePathName(Path utilise la fonction wcscat() pour copier le chemin dans une variable locale, "wcsBuffer"
C'est cela qui provoque le débordement de tampon. La fonction, après plusieurs appel, va remplir le buffer :
- Call 1 : wcsBuffer = “\\a\aaaaa\aaaa\..\..\a”
- Call 2 : wcsBuffer = “\\a\aaaaa\aaaa\..\..\a\\a\aaaaa\aaaa\..\..\a”
- Call 3 : wcsBuffer = “\\a\aaaaa\aaaa\..\..\a\\a\aaaaa\aaaa\..\..\a\\a\aaaaa\aaaa\..\..\a”
Je recherche un article, ou n'importe quoi d'autre, permettant d'expliquer à l'aide de pile le débordement de tampon (c'est à dire contenant la pile au départ et la pile après le débordement de tampon avec les adresses de retour par exemple).
Partager