J'ai écrit le code:
// a.c
#include <stdlib.h>
int main () {
system("/bin/sh");
return 0;
}
compilé avec la commande:
gcc a.c -o a.out
ajouté un bit setuid dessus:
sudo chown root.root a.out
sudo chmod 4755 a.out
Sur Ubuntu 14.04, lorsque je cours en tant qu'utilisateur général, j'ai obtenu le privilège root.
mais sur Ubuntu 16.04, j'ai toujours le shell de l'utilisateur actuel.
Pourquoi est-ce différent?
system("bash -p")
s'exécute desh -c "bash -p"
sorte que les privilèges ont déjà été supprimés lors debash
son exécution.