Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
sudo_inject — [Linux] Deux techniques d'élévation de privilèges abusant du token sudo | Kitploit
Outils/GitHubGitHub/nongiach/sudo_inject
Escalade de PrivilègesExploitationPost-ExploitationCriminalistique NumériqueCTFApprentissage et ÉducationRed Teaming
GitHubnongiach/sudo_inject

sudo_inject

[Linux] Deux techniques d'élévation de privilèges abusant du token sudo

Voir le dépôt
730113il y a 7 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

[Linux] Élévation de privilèges en injectant un processus possédant des jetons sudo

Injecter un processus disposant d'un jeton sudo valide et activer notre propre jeton sudo

Introduction

Nous avons tous remarqué que parfois sudo ne nous demande pas de mot de passe parce qu'il se souvient de nous. Comment se souvient-il de nous et comment nous identifie-t-il ? Pouvons-nous falsifier notre identité et devenir root ? Pour autant que je sache, cette recherche n'est pas encore documentée, mais faites-le-moi savoir si c'est le cas. En effet, sudo crée un fichier pour chaque utilisateur Linux dans /var/run/sudo/ts/[username]. Ces fichiers contiennent à la fois les authentifications réussies et échouées, puis sudo utilise ces fichiers pour se souvenir de tous les processus authentifiés. -- @chaignc

Ce dépôt vous fournit :

  • Un moyen d'obtenir le privilège root en abusant des jetons sudo (Ne vous réjouissez pas trop, il y a des prérequis).
  • Un outil pour forger des jetons sudo pour un processus donné (write_sudo_token dans ./extra_tools/).
  • Un outil pour analyser les jetons sudo à des fins forensiques (read_sudo_token_forensic et read_sudo_token dans ./extra_tools).
  • Une technique pour transformer toute écriture arbitraire de fichier root en exécution de code root stable.
  • Une piste pour créer un exploit qui ne nécessite ni ptrace, ni que le processus ciblé soit vivant.

Comment exploiter un système vulnérable

PS : lisez les prérequis !!

root@kitploit:~
$ sudo whatever
[sudo] password for user:    # Press <ctrl>+c since you don't have the password. # This creates an invalid sudo tokens.
$ sh exploit.sh
.... wait 1 seconds
$ sudo -i # no password required :)
# id
uid=0(root) gid=0(root) groups=0(root)

Prérequis

  • Ptrace entièrement activé (/proc/sys/kernel/yama/ptrace_scope == 0).
  • L'utilisateur courant doit avoir un processus vivant qui possède un jeton sudo valide avec le même uid.

Le délai d'expiration du mot de passe par défaut est de 15 minutes. Donc si vous utilisez sudo deux fois en 15 minutes (900 secondes), il ne vous sera pas demandé de saisir à nouveau le mot de passe de l'utilisateur.

Avertissement

  • Uniquement à des fins éducatives, ne l'utilisez pas sur un système qui ne vous appartient pas.
  • Ce n'est pas bien testé, ne le considérez donc pas comme stable.

Que se passe-t-il en coulisses ?

exploit.sh injecte tous les processus shell appartenant à l'utilisateur courant et utilise leur jeton sudo pour valider notre propre jeton sudo. C'est à peine 3 lignes de shell, jetez-y un œil.

Cas d'usage

Ce n'est pas un privesc générique sans prérequis, mais ça fonctionne. Par exemple, si vous avez une RCE et que vous n'avez pas le mot de passe de l'utilisateur, mais que la victime utilise sudo, vous pouvez facilement obtenir root en volant son jeton.

Comment simuler en laboratoire ?

root@kitploit:~
# echo 0 > /proc/sys/kernel/yama/ptrace_scope
# # Don't worry this is not persistent accross reboot

Ouvrez deux terminaux :

  • l'un pour taper sudo et saisir le bon mot de passe (exemple : sudo ls).
  • l'autre pour lancer l'exploit comme décrit ci-dessus.

Aller plus loin

L'exploit v2 crée un sh suid dans /tmp/sh

Pour ceux qui ont moins de chance avec l'exploit v1, essayez la v2

root@kitploit:~
$ ./exploit_v2.sh
Current process : 2441
chmod: changing permissions of 'activate_sudo_token': Operation not permitted
Injecting process 1721 -> bash
Injecting process 2433 -> bash
cat: /proc/2446/comm: No such file or directory
Injecting process 2446 -> 
$ /tmp/sh -p
# id
uid=1001(test) gid=1001(test) euid=0(root) egid=0(root) groups=0(root),1001(test)

Forensique, DFIR ?

L'affichage est à améliorer, mais chaque tentative sudo d'un processus a une entrée dans /var/run/sudo/ts/[username]. Ces fichiers sont également stockés dans tmpfs (ram) ; on pourrait écrire un plugin volatility pour analyser ces informations et recueillir les tentatives sudo.

root@kitploit:~
./read_sudo_token_forensic  < /var/run/sudo/ts/user
version, flags, uid, sid, starttime_sec, starttime_nsec
2, 0, 0, 0, 0, 0
2, 0, 1001, 1145, 188, 660000000
2, 0, 1001, 24878, 7461, 490000000
2, 0, 1001, 24578, 6974, 10000000

Écriture arbitraire vers root

Si vous disposez d'une écriture arbitraire, vous pouvez créer un jeton sudo pour votre processus courant afin d'obtenir une exécution de code root. Consultez './write_sudo_token $$ > /var/run/sudo/ts/[username]' dans extra_tools.

Tickets sudo Silver

Un très bon moyen de créer une backdoor root secrète sur des serveurs qui redémarrent rarement. Pas encore fait, mais consultez './write_sudo_token $$' dans ./extra_tools.

Pourquoi

Je cherchais un moyen de voler le jeton sudo d'un processus mort, mais cela ne semble pas possible car ils sont associés par ((heure de démarrage du processus et identifiant de session du processus) ou (heure de démarrage du tty et identifiant de session du tty)). L'identifiant de session (pid du processus) peut être usurpé, mais l'heure de démarrage du processus n'est pas falsifiable.

Comment remédier ?

  • Mettez à jour votre version de sudo
  • Réduisez la puissance de ptrace, par exemple modifiez /etc/sysctl.conf avec
root@kitploit:~
kernel.yama.ptrace_scope = 1

yama ptrace scope

Liens

Analyse de /proc/[pid]/stat

Structure du jeton sudo

Injection de code inter-processus Linux sans ptrace

Déplacer un processus vers un autre terminal

https://www.linusakesson.net/programming/tty/


Par @chaignc #HexpressoTeam.

Télécharger l’outil