Du code et des coquilles : fondamentaux pour l’écriture de shellcodes

Spécialité(s)


Résumé

Les shellcodes : mystérieux pour les débutants en sécurité, puissants pour les pentesters aguerris, fascinants pour tous. Les maîtriser est une étape sans doute obligatoire sur les voies de la sécurité offensive, tant ils sont utiles, voire indispensables. Explorons-les !


Le lecteur de ce magazine étant a priori capable de lire la définition Wikipédia d’un shellcode [1], nous ne lui ferons pas l’offense de paraphraser cette dernière ; disons simplement que, dans la suite de cet article, on appellera shellcode toute chaîne de caractères permettant de déclencher une exécution de commandes au sein d’un programme cible.

Cette chaîne de caractères est généralement envoyée en paramètre d’entrée du programme cible, et les commandes à exécuter aboutissent souvent au lancement d’un reverse shell.

Un shellcode est intéressant, car :

  • On peut fréquemment l’envoyer en entrée d’un programme. Tout programme n’assainissant pas correctement les caractères qu’il lit ou ne vérifiant pas leur taille est susceptible d’être vulnérable.
  • Il permet de s’abstraire des langages de programmation de haut niveau, puisque les caractères envoyés dans un shellcode correspondent à des instructions assembleur,...
Cet article est réservé aux abonnés. Il vous reste 95% à découvrir.
S'abonner à Connect
  • Accédez à tous les contenus de Connect en illimité
  • Découvrez des listes de lecture et des contenus Premium
  • Consultez les nouveaux articles en avant-première
Je m'abonne


Article rédigé par

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous