Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
sudo_inject — [Linux] Zwei Privilege-Escalation-Techniken, die das sudo-Token missbrauchen | Kitploit
Tools/GitHubGitHub/nongiach/sudo_inject
Privilege EscalationExploitationPost-ExploitationDigitale ForensikCTFLernen & BildungRed Teaming
GitHubnongiach/sudo_inject

sudo_inject

[Linux] Zwei Privilege-Escalation-Techniken, die das sudo-Token missbrauchen

Repository anzeigen
7301131vor 7 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

[Linux] Privilegienausweitung durch Injizieren von Prozessen mit gültigen sudo-Tokens

Injiziere Prozesse, die ein gültiges sudo-Token besitzen, und aktiviere unser eigenes sudo-Token

Einleitung

Wir alle haben bemerkt, dass sudo uns manchmal nicht nach einem Passwort fragt, weil es sich an uns erinnert. Wie erinnert es sich an uns und wie identifiziert es uns? Können wir unsere Identität fälschen und root werden? Soweit ich weiß, ist diese Forschung noch nicht dokumentiert, aber lass es mich wissen, falls doch. Tatsächlich erstellt sudo für jeden Linux-Benutzer eine Datei in /var/run/sudo/ts/[username]. Diese Dateien enthalten sowohl erfolgreiche als auch fehlgeschlagene Authentifizierungen. Sudo verwendet diese Dateien, um sich an alle authentifizierten Prozesse zu erinnern. -- @chaignc

Dieses Repository bietet dir:

  • Eine Möglichkeit, Root-Privilegien durch Missbrauch von sudo-Tokens zu erlangen (Freu dich nicht zu früh, es gibt Voraussetzungen).
  • Ein Werkzeug, um sudo-Tokens für einen bestimmten Prozess zu fälschen (write_sudo_token in ./extra_tools/).
  • Ein Werkzeug, um sudo-Tokens für die Forensik zu parsen (read_sudo_token_forensic und read_sudo_token in ./extra_tools).
  • Eine Technik, um beliebiges Root-Dateischreiben in stabile Root-Codeausführung umzuwandeln.
  • Einen Hinweis, um einen Exploit zu erstellen, der weder ptrace benötigt noch dass der Zielprozess lebt.

So exploitierst du ein verwundbares System

PS: Voraussetzungen lesen!!

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)

Voraussetzungen

  • Ptrace vollständig aktiviert (/proc/sys/kernel/yama/ptrace_scope == 0).
  • Der aktuelle Benutzer muss einen lebenden Prozess besitzen, der ein gültiges sudo-Token mit derselben uid hat.
root@kitploit:~
Der Standard-Passwort-Timeout beträgt 15 Minuten. Wenn du sudo also zweimal innerhalb von 15 Minuten (900 Sekunden) verwendest, wirst du nicht erneut nach dem Passwort des Benutzers gefragt.

Warnung

  • Nur für Lehrzwecke, nicht auf einem System verwenden, das dir nicht gehört.
  • Es ist nicht gut getestet, also betrachte es nicht als stabil.

Was passiert im Hintergrund?

exploit.sh injiziert alle Shell-Prozesse, die dem aktuellen Benutzer gehören, und verwendet deren sudo-Token, um unser eigenes sudo-Token zu validieren. Es sind kaum 3 Zeilen Shell, wirf einen Blick darauf.

Anwendungsfall

Das ist weit entfernt von einem generischen Privesc ohne Voraussetzungen, aber es funktioniert. Zum Beispiel: Wenn du eine RCE hast und das Benutzerpasswort nicht kennst, das Opfer aber sudo verwendet, kannst du leicht Root erlangen, indem du sein Token stiehlst.

Wie simuliert man das im Labor?

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

Starte zwei Terminals:

  • eines, um sudo einzugeben und das richtige Passwort einzutippen (Beispiel: sudo ls).
  • ein anderes, um den Exploit wie oben beschrieben zu starten.

Weiterführendes

exploit v2 erstellt eine suid sh in /tmp/sh

Für diejenigen, die mit Exploit v1 weniger Glück haben, probiere die v2 aus.

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)

Forensik, DFIR?

Die Ausgabe muss noch verbessert werden, aber jeder sudo-Versuch eines Prozesses hat einen Eintrag in /var/run/sudo/ts/[username]. Außerdem werden diese Dateien in tmpfs (RAM) gespeichert; man könnte ein Volatility-Plugin schreiben, um diese Informationen zu parsen und sudo-Versuche zu sammeln.

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

Beliebiger Write zu Root

Wenn du einen beliebigen Write hast, kannst du ein sudo-Token für deinen aktuellen Prozess erstellen, um Root-Codeausführung zu erlangen. Schau dir './write_sudo_token $$ > /var/run/sudo/ts/[username]' in extra_tools an.

Silberne sudo-Tickets

Eine sehr gute Möglichkeit, eine geheime Root-Hintertür auf Servern zu erstellen, die selten neu gestartet werden. Noch nicht fertig, aber schau dir './write_sudo_token $$' in ./extra_tools an.

Warum

Ich habe nach einem Weg gesucht, das sudo-Token toter Prozesse zu stehlen, aber das scheint nicht möglich zu sein, weil sie über ((Prozessstartzeit und Prozess-Sitzungs-ID) oder (TTY-Startzeit und TTY-Sitzungs-ID)) zugeordnet werden. Die Sitzungs-ID (Prozess-PID) kann vorgetäuscht werden, aber die Prozessstartzeit ist nicht fälschbar.

Wie kann man das beheben?

  • Aktualisiere deine sudo-Version
  • Reduziere die Ptrace-Berechtigung, z. B. bearbeite /etc/sysctl.conf mit
root@kitploit:~
kernel.yama.ptrace_scope = 1

yama ptrace scope

Links

Parsen von /proc/[pid]/stat

Sudo-Token-Struktur

Linux-basierte Interprozess-Codeinjektion ohne ptrace

Verschieben eines Prozesses in ein anderes Terminal

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


Von @chaignc #HexpressoTeam.

Tool herunterladen