Escabot

Flag: CYBN{sU1d_i5_v3Ry_s3nSIT1ve_B3_c@reFUL}

Challenge

circle-info

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 |


circle-exclamation

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