Escabot
Flag: CYBN{sU1d_i5_v3Ry_s3nSIT1ve_B3_c@reFUL}
Challenge
Description
Bienvenue à cette introduction à l'escalade de privilèges sur système Linux !
Vous démarrez avec un compte symbolisé par une marche, et devez grimper les marches une par une jusqu'à arriver à la dernière disponible.
Chaque objet d'escalade possède un thème, qui vous sera utile à comprendre afin de grimper les marches !
L'escabot comporte quatre marches : de marche3 à marche6
La dernière marche possède un flag dans ~/flag.txt
Le thème de l'escabot est : Set User/Group ID
| | |
|----------|-----------|
| User | marche3 |
| Password | marche3 |
Ce challenge tourne sur un docker et n'est pas disponible
Solution
Marche3 -> Marche4
Dans l'énoncé on nous dit que le challenge se concentre sur les SUID et SGID. On commence par lister les commandes contenant des SGID :
diff fait partie du groupe marche4 et a le stickybit, on peut donc lancer la commande en tant que groupe marche4.
Le dossier de marche4 possède un fichier do not forgor et le groupe marche4 peut le lire. On va donc lancer diff dessus avec un fichier quelconque pour afficher son contenu :
Mot de passe : YoCheckThatPasswordFormarche4
Marche4 -> Marche5
On peut lancer showfile en tant que marche5 et on a accès au code de showfile :
La commande ls n'est pas utilisée avec un chemin absolu, on peut alors la remplacer par une autre commande en mettant son chemin avant tous les autre dans PATH.
Les arguments -l et -a empêche d'utiliser cat, more, head, etc... Mais on peut quand même leak le contenu du fichier avec des commandes commande nano, sh ou encore less :
Mot de passe : JeezInsanePasswordFormarche5
Marche5 -> Marche6
Encore une fois, on a un fichier avec un SUID de marche6 :
Son code :
Ici, le chemin de la commande est bien absolu, mais on peut injecter en chaînant une seconde commande tant que le tout fait moins de 32 caractères :
Mis à jour