Privilege Escalation

circle-check

Linux

circle-info

Mindmap sur la privesc linux : Mindmap

Pour tout ce qui est exploitation d'SUID ou sudo, la liste GTFOBinsarrow-up-right est très utile.

  • Essayer d'accéder au contenu tel que id_rsa, /etc/shadow, backup, docker, fichiers cachés ou bien inhabituels ou encore récemment modifiés.

  • Tester les mots de passe vides ou bien identiques au nom d'utilisateur (vagrant:vagrant, root:root).

  • Consulter la configuration de sudo pour l'utilisateur pawned.

  • Vérifier les binaires configurés en SUID.

  • Lister les tâches CRON si possible.

  • Lister les capabilities des différents binaires.

  • Vérifier les services qui écoutent sur le système.

  • Vérifier les permissions des disques montés dans le cas d'un container (Docker par exemple)

  • Faire des recherches de mot-clés intéressants. Vous pouvez vous référez à ma page sur le Fast Searchingarrow-up-right.

#Lister les fichiers récemment modifiés (il y a moins de deux heures)
find / -mmin -120 -ls
#Lister la configuration sudo pour l'utilisateur courant
sudo -l
#Lister les binaires configurés en SUID
find / -perm -u=s -type f 2>/dev/null
#Consulter les tâches CRON du root
crontab -u root -l
#Consulter les tâches CRON de l'utilisateur courant
crontab -l
#Consulter les tâches CRON globales
cat /etc/crontab
#Lister les capabilities configurées
getcap -r / 2>/dev/null
#Lister les disques montés et leurs permissions
mount
# Lister les services qui tournent sur le système (si iproute2 est installé)
ss -tulnp

En dernier recours, il est possible d'utiliser linPEASarrow-up-right, un script bash permettant d'automatiser la détection de vecteurs de privesc en réalisant de nombreux checks différents.

Cepenant si vous n'arrivez toujours pas à vos fins, certaines techniques d'exploitation peuvent s'avérer plus élaborées. Voici une liste de dossiers/fichiers intéressants :

Élément
Description
Importance

/etc/shadow

Les mots de passe sont stockés ici, chiffrés ainsi que d'autres informations (shell/nologin)

Critique

/etc/sudoers

Fichier de configuration des privilèges des utilisateurs concernant l'utilisation de l'utilitaire sudo

Critique

/etc/passwd

Permet facilement de connaître la liste des utilisateurs existants sur le système. Si en écriture, on peut être root car changement de mdp arbitraire.

Modérée

/var/lib

C'est là que l'on va généralement stocker les données des serveurs. Les bases de données peuvent contenir des mots de passe utilisés également pour un utilisateur plus privilégié.

Modérée

/etc/environment ~/.bashrc, etc..

Ce sont généralement dans ces fichiers qui sont stockés les variables d'environnement, notamment l'envpath. Modifier de telles valeurs permettrait de manipuler l'execution de programmes et de tâches CRON.

Modérée

/tmp

Il est bon de savoir que ce dossier est toujours un lieu où tous les utilisateurs peuvent lire et écrire. Particulièrement utile pour des payloads.

Occasionnelle

/proc /proc/version /proc/partitions /proc/<PID>

Permet d'obtenir beaucoup d'informations sur le système, comme la liste des modules, les processus en cours d’exécutions et plusieurs informations sur eux, des informations sur les partitions, etc..

Occasionnelle

/etc/group

Les groupes existants peuvent renseigner sur les applications installées et potentiellement intéressantes.

Faible

Windows

circle-info

Mindmap pour la privesc Windows : Mindmap

circle-exclamation

Voici quelques choses que nous pouvons vérifier rapidement sans avoir recours à des scripts d'automatisation :

  • Lister les valeurs de registre (la lecture est souvent autorisée pour tous les utilisateurs)

  • Vérifier si des services Windows tournent comme SMB. La configuration utilisateur et d'authentification peut être intéressant.

  • Lister les programmes à High Integrity (l'intégrité est une graduation équivalente au système d'SUID sous Linux).

  • Si c'est un CTF, pensez à regarder les fichiers cachés avec des Alternate Data Streamsarrow-up-right.

  • Très souvent dans les CTF, on obtient un privesc en faisant exécuter des instructions par l'Administrator en modifiant un fichier utilisé dans une tâche du Task Scheduler (équivalent Microsoft de CRON). Pensez à vérifier les fichiers récemment modifiés.

  • Plus rarement, si vous avez les droits d'écriture sur des répertoires de DLL (Dynamic-link library équivalent des Shared libraries (SO pour Shared Objects) sous Linux) alors il vous est possible de modifier un DLL utilisé par un programme privilégié à des fins malveillantes (injections DLL). On peut également modifier des chemins vers des DLL ou bien injecter des DLL dans un processus en cours d'exécution via faille de type buffer overflow ou en ayant simplement un privilège assez élevé pour utiliser une fonction système (équivalent des syscalls sous Linux) d'injection dans un processus tier, plusieurs méthodes existent et sont à explorer.

Vous pouvez également consulter ma pagearrow-up-right sur les commandes pratiques de PowerShellarrow-up-right. Pour ce qui est d'une analyse plus approfondie, vous pouvez consulter la page de PayloadsAllTheThings prévue à cet effetarrow-up-right. Elle contient de nombreux scripts et de nombreuses astuces.

circle-exclamation

Mis à jour