Les termes « exécution arbitraire de code » font généralement rêver tout chercheur en sécurité. Parvenir à détourner le flot d'exécution d'un programme pour en démarrer un autre est rarement une tâche aisée. Toutefois, il arrive que des programmeurs implémentent des options tout à fait légitimes dans leurs programmes qui peuvent être détournées et abusées. Qui soupçonnerait tar, zip ou tcpdump de pouvoir démarrer un programme externe? C'est ce que cet article va présenter.
1. Les règles du jeu
Les règles du jeu sont simples. Le but est d'exécuter un script appelé runme.sh sans l'appeler depuis le shell, en utilisant un effet de bord ou une option d'une commande standard que l'on trouve généralement sur un linux. Le script est le suivant :
mitsurugi@mitsu:~/tmp$ cat runme.sh
#! /bin/bash
echo "The name's 0xMitsurugi!"
echo "Remember it!"
mitsurugi@mitsu:~/tmp$
2. Exécution de commande
2.1. tcpdump
$ tcpdump -n -i lo -G1 -w /dev/null -z ./runme.sh
tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
The name's 0xMitsurugi!
Remember it!
The name's 0xMitsurugi!
Remember it!
^C6 packets captured
12 packets received by filter
0 packets dropped by kernel
$
tcpdump est un sniffeur réseau qui permet de sauvegarder les paquets dans un...
- 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