Je souhaite montrer, avec un exemple concret, à quel point l'exploitation d'un débordement de tampon est puissante.Définition des autorisations SUID/SGID sur un exécutable
Pour ACHIVE cet objectif, je préparais ce programme simple C, appelé "bo":
#include <stdio.h>
#include <string.h>
void function(char* input) {
char buffer[128];
strcpy(buffer, input);
printf("Your input is: %s\n", buffer);
}
void main(int argc, char **argv) {
function(argv[1]);
}
que je compilé avec: -fno-stack-protecteur et execstack.
Tout fonctionne très bien et je suis en mesure de Lauch mon shellcode qui ouvre une nouvelle bash.
Dans mon système (Ubuntu MATE 15.10 32bit) j'ai 2 utilisateurs: "utilisateur" (groupe: utilisateur) et "admin" (groupe: admin), les deux ayant des privilèges sudo. Ce que je veux faire est d'activer "user" pour exécuter "bo" avec les privilèges de "admin" de telle sorte que lorsque le débordement de tampon arrive et que le shellcode soit exécuté j'ai un shell qui fonctionne avec des privilèges "admin" (et à partir de ce shell, si je cours les commandes "id" ou "whoami" je veux montrer que maintenant nous sommes "admin").
Je l'ai vu que je dois chmod privilèges SUID/SGID "bo". J'ai essayé de plusieurs façons, mais quand le shellcode fonctionne j'ai toujours un shell lancé depuis "user".