Linux Privilege Escalation
Systeminformationen
Betriebssysteminformationen
Lassen Sie uns damit beginnen, etwas Wissen über das ausgeführte Betriebssystem zu erlangen.
Pfad
Wenn Sie Schreibberechtigungen für einen beliebigen Ordner innerhalb der PATH
-Variablen haben, können Sie möglicherweise einige Bibliotheken oder Binärdateien übernehmen:
Umgebungsinfo
Interessante Informationen, Passwörter oder API-Schlüssel in den Umgebungsvariablen?
Kernel-Exploits
Überprüfen Sie die Kernel-Version und ob es einen Exploit gibt, der verwendet werden kann, um Berechtigungen zu eskalieren.
Sie können eine gute Liste von anfälligen Kerneln und bereits kompilierten Exploits hier finden: https://github.com/lucyoa/kernel-exploits und exploitdb sploits. Andere Websites, auf denen Sie einige kompilierte Exploits finden können: https://github.com/bwbwbwbw/linux-exploit-binaries, https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack
Um alle anfälligen Kernelversionen von dieser Website zu extrahieren, können Sie Folgendes tun:
Tools, die bei der Suche nach Kernel-Exploits helfen könnten, sind:
linux-exploit-suggester.sh linux-exploit-suggester2.pl linuxprivchecker.py (ausführen im Opfer, überprüft nur Exploits für Kernel 2.x)
Suchen Sie immer die Kernel-Version in Google, vielleicht ist Ihre Kernel-Version in einem Kernel-Exploit erwähnt und dann sind Sie sicher, dass dieser Exploit gültig ist.
CVE-2016-5195 (DirtyCow)
Linux Privilege Escalation - Linux Kernel <= 3.19.0-73.8
Sudo-Version
Basierend auf den anfälligen sudo-Versionen, die erscheinen in:
Sie können überprüfen, ob die sudo-Version anfällig ist, indem Sie dieses grep verwenden.
sudo < v1.28
Von @sickrov
Dmesg Signaturüberprüfung fehlgeschlagen
Überprüfen Sie die smasher2-Box von HTB für ein Beispiel, wie diese Schwachstelle ausgenutzt werden könnte
Weitere Systemenumerierung
Ermitteln möglicher Verteidigungen
AppArmor
Grsecurity
Grsecurity ist eine umfassende Sicherheitserweiterung für den Linux-Kernel, die zahlreiche Funktionen zur Verbesserung der Sicherheit und zur Verhinderung von Privilege-Eskalationen bietet.
PaX
Execshield
Execshield ist eine Technologie, die in einigen Linux-Kerneln implementiert ist, um die Ausführung von Schadcode zu erschweren.
SElinux
SElinux steht für Security-Enhanced Linux und ist eine Sicherheitserweiterung für das Linux-Betriebssystem. Es implementiert Mandatory Access Controls (MAC) und bietet zusätzliche Sicherheitsebenen, um die Systemintegrität zu schützen.
ASLR
Address Space Layout Randomization (ASLR) ist eine Sicherheitsfunktion, die dazu dient, die Vorhersagbarkeit von Speicheradressen zu verringern und die Ausnutzung von Sicherheitslücken durch Angreifer zu erschweren.
Docker Ausbruch
Wenn Sie sich innerhalb eines Docker-Containers befinden, können Sie versuchen, daraus auszubrechen:
Docker SecurityLaufwerke
Überprüfen Sie, was gemountet und nicht gemountet ist, wo und warum. Wenn etwas nicht gemountet ist, könnten Sie versuchen, es zu mounten und nach privaten Informationen zu suchen.
Nützliche Software
Ermitteln Sie nützliche Binärdateien
Auch überprüfen, ob ein Compiler installiert ist. Dies ist nützlich, wenn Sie einen Kernel-Exploit verwenden müssen, da empfohlen wird, ihn auf dem Gerät zu kompilieren, auf dem Sie ihn verwenden werden (oder auf einem ähnlichen).
Installierte verwundbare Software
Überprüfen Sie die Version der installierten Pakete und Dienste. Möglicherweise gibt es eine alte Nagios-Version (zum Beispiel), die für die Eskalation von Berechtigungen ausgenutzt werden könnte... Es wird empfohlen, manuell die Version der verdächtigeren installierten Software zu überprüfen.
Wenn Sie SSH-Zugriff auf die Maschine haben, können Sie auch openVAS verwenden, um nach veralteter und verwundbarer Software innerhalb der Maschine zu suchen.
Beachten Sie, dass diese Befehle viele Informationen anzeigen werden, die größtenteils nutzlos sind. Daher wird empfohlen, Anwendungen wie OpenVAS oder ähnliche zu verwenden, die überprüfen, ob eine installierte Softwareversion anfällig für bekannte Exploits ist.
Prozesse
Werfen Sie einen Blick darauf, welche Prozesse ausgeführt werden, und prüfen Sie, ob ein Prozess mehr Berechtigungen hat als er sollte (vielleicht wird ein Tomcat von root ausgeführt?)
Immer auf mögliche electron/cef/chromium Debugging-Tools achten, die laufen, du könntest sie missbrauchen, um Privilegien zu eskalieren. Linpeas erkennt diese, indem es den --inspect
-Parameter in der Befehlszeile des Prozesses überprüft.
Überprüfe auch deine Berechtigungen über die Prozess-Binärdateien, vielleicht kannst du jemanden überschreiben.
Prozessüberwachung
Du kannst Tools wie pspy verwenden, um Prozesse zu überwachen. Dies kann sehr nützlich sein, um verwundbare Prozesse zu identifizieren, die häufig ausgeführt werden oder wenn eine Reihe von Anforderungen erfüllt sind.
Prozessspeicher
Einige Dienste eines Servers speichern Zugangsdaten im Klartext im Speicher. Normalerweise benötigst du Root-Berechtigungen, um den Speicher von Prozessen zu lesen, die anderen Benutzern gehören. Daher ist dies normalerweise nützlicher, wenn du bereits Root bist und mehr Zugangsdaten entdecken möchtest. Denke jedoch daran, dass als regulärer Benutzer den Speicher der Prozesse, die dir gehören, lesen kannst.
Beachte, dass heutzutage die meisten Maschinen ptrace standardmäßig nicht zulassen, was bedeutet, dass du keine anderen Prozesse dumpen kannst, die deinem unprivilegierten Benutzer gehören.
Die Datei /proc/sys/kernel/yama/ptrace_scope steuert die Zugänglichkeit von ptrace:
kernel.yama.ptrace_scope = 0: Alle Prozesse können debuggt werden, solange sie die gleiche uid haben. So funktionierte das klassische Tracing.
kernel.yama.ptrace_scope = 1: Nur ein übergeordneter Prozess kann debuggt werden.
kernel.yama.ptrace_scope = 2: Nur Admins können ptrace verwenden, da es die CAP_SYS_PTRACE-Fähigkeit erfordert.
kernel.yama.ptrace_scope = 3: Keine Prozesse dürfen mit ptrace verfolgt werden. Nach dem Setzen ist ein Neustart erforderlich, um das Tracing wieder zu aktivieren.
GDB
Wenn du Zugriff auf den Speicher eines FTP-Dienstes hast (zum Beispiel), könntest du den Heap erhalten und nach Zugangsdaten darin suchen.
GDB Skript
/proc/$pid/maps & /proc/$pid/mem
Für eine gegebene Prozess-ID zeigt maps, wie der Speicher im virtuellen Adressraum dieses Prozesses abgebildet ist; es zeigt auch die Berechtigungen jeder abgebildeten Region. Die mem Pseudo-Datei stellt den Speicher des Prozesses selbst dar. Aus der maps-Datei wissen wir, welche Speicherregionen lesbar sind und ihre Offsets. Wir verwenden diese Informationen, um in die mem-Datei zu suchen und alle lesbaren Regionen in eine Datei zu dumpen.
/dev/mem
/dev/mem
bietet Zugriff auf den physischen Speicher des Systems, nicht den virtuellen Speicher. Der virtuelle Adressraum des Kernels kann über /dev/kmem zugegriffen werden.
In der Regel ist /dev/mem
nur lesbar für root und die kmem Gruppe.
ProcDump für Linux
ProcDump ist eine Linux-Neugestaltung des klassischen ProcDump-Tools aus der Sysinternals-Suite von Tools für Windows. Hol es dir unter https://github.com/Sysinternals/ProcDump-for-Linux
Werkzeuge
Um den Speicher eines Prozesses zu dumpen, könnten Sie folgendes verwenden:
https://github.com/hajzer/bash-memory-dump (root) - _Sie können manuell die Root-Anforderungen entfernen und den Prozess dumpen, der Ihnen gehört
Skript A.5 von https://www.delaat.net/rp/2016-2017/p97/report.pdf (Root-Zugriff erforderlich)
Anmeldeinformationen aus dem Prozessspeicher
Manuelles Beispiel
Wenn Sie feststellen, dass der Authentifizierungsprozess läuft:
Sie können den Prozess dumpen (siehe vorherige Abschnitte, um verschiedene Möglichkeiten zum Dumpen des Speichers eines Prozesses zu finden) und nach Anmeldedaten im Speicher suchen:
mimipenguin
Das Tool https://github.com/huntergregal/mimipenguin wird klare Textpasswörter aus dem Speicher stehlen und aus einigen bekannten Dateien. Es erfordert Root-Berechtigungen, um ordnungsgemäß zu funktionieren.
Funktion | Prozessname |
---|---|
GDM-Passwort (Kali-Desktop, Debian-Desktop) | gdm-password |
Gnome-Schlüsselbund (Ubuntu-Desktop, ArchLinux-Desktop) | gnome-keyring-daemon |
LightDM (Ubuntu-Desktop) | lightdm |
VSFTPd (Aktive FTP-Verbindungen) | vsftpd |
Apache2 (Aktive HTTP Basic Auth-Sitzungen) | apache2 |
OpenSSH (Aktive SSH-Sitzungen - Sudo-Nutzung) | sshd: |
Search Regexes/truffleproc
Geplante/Cron-Jobs
Überprüfen Sie, ob ein geplanter Job anfällig ist. Möglicherweise können Sie von einem Skript profitieren, das von root ausgeführt wird (Wildcard-Schwachstelle? Dateien ändern, die von root verwendet werden? Symlinks verwenden? Spezifische Dateien im Verzeichnis erstellen, das von root verwendet wird?).
Cron-Pfad
Zum Beispiel, innerhalb von /etc/crontab kannst du den PATH finden: PATH=/home/user:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
(Beachte, wie der Benutzer "user" Schreibrechte über /home/user hat)
Wenn der Root-Benutzer in diesem Crontab versucht, einen Befehl oder ein Skript ohne Festlegung des Pfads auszuführen. Zum Beispiel: * * * * root overwrite.sh Dann kannst du eine Root-Shell erhalten, indem du:
Cron mit einem Skript mit einem Platzhalter verwenden (Platzhalter-Injektion)
Wenn ein Skript von root ausgeführt wird und ein "*" in einem Befehl vorhanden ist, könnten Sie dies ausnutzen, um unerwartete Dinge zu tun (wie z.B. Berechtigungserweiterung). Beispiel:
Wenn das Platzhalterzeichen von einem Pfad wie /some/path/* gefolgt wird, ist es nicht anfällig (sogar ./* ist es nicht).
Lesen Sie die folgende Seite für weitere Tricks zur Ausnutzung von Platzhaltern:
Wildcards Spare tricksÜberschreiben von Cron-Skripten und Symbolischen Links
Wenn Sie ein Cron-Skript bearbeiten können, das von root ausgeführt wird, können Sie sehr einfach eine Shell erhalten:
Wenn das Skript, das von root ausgeführt wird, ein Verzeichnis verwendet, auf das Sie vollständigen Zugriff haben, könnte es nützlich sein, dieses Verzeichnis zu löschen und einen symbolischen Link zu einem anderen Verzeichnis zu erstellen, der ein von Ihnen kontrolliertes Skript bereitstellt.
Häufige Cron-Jobs
Sie können die Prozesse überwachen, um nach Prozessen zu suchen, die alle 1, 2 oder 5 Minuten ausgeführt werden. Möglicherweise können Sie dies ausnutzen und Berechtigungen eskalieren.
Zum Beispiel, um alle 0,1 Sekunden während 1 Minute zu überwachen, nach weniger ausgeführten Befehlen zu sortieren und die am häufigsten ausgeführten Befehle zu löschen, können Sie Folgendes tun:
Sie können auch pspy verwenden (dies überwacht und listet jeden Prozess auf, der gestartet wird).
Unsichtbare Cron-Jobs
Es ist möglich, einen Cron-Job zu erstellen, indem Sie einen Wagenrücklauf nach einem Kommentar einfügen (ohne Zeilenumbruchzeichen), und der Cron-Job wird funktionieren. Beispiel (beachten Sie das Wagenrücklaufzeichen):
Dienste
Beschreibbare .service Dateien
Überprüfen Sie, ob Sie eine beliebige .service
-Datei schreiben können. Wenn ja, könnten Sie sie ändern, damit sie Ihre Hintertür ausführt, wenn der Dienst gestartet, neugestartet oder gestoppt wird (eventuell müssen Sie auf einen Neustart des Systems warten).
Erstellen Sie beispielsweise Ihre Hintertür innerhalb der .service-Datei mit ExecStart=/tmp/script.sh
Beschreibbare Dienst-Binärdateien
Denken Sie daran, dass Sie, wenn Sie Schreibberechtigungen für Binärdateien haben, die von Diensten ausgeführt werden, diese gegen Hintertüren austauschen können, sodass die Hintertüren ausgeführt werden, wenn die Dienste erneut ausgeführt werden.
systemd-PATH - Relative Pfade
Sie können den vom systemd verwendeten PATH mit folgendem Befehl anzeigen:
Wenn Sie feststellen, dass Sie in einem der Ordner des Pfads schreiben können, können Sie möglicherweise Berechtigungen eskalieren. Sie müssen nach relativen Pfaden suchen, die in den Konfigurationsdateien des Dienstes verwendet werden, wie:
Dann erstellen Sie eine ausführbare Datei mit dem gleichen Namen wie der relative Pfadbefehl im systemd-PATH-Ordner, den Sie schreiben können, und wenn der Dienst aufgefordert wird, die verwundbare Aktion (Start, Stop, Reload) auszuführen, wird Ihre Hintertür ausgeführt (unprivilegierte Benutzer können normalerweise keine Dienste starten/stoppen, aber überprüfen Sie, ob Sie sudo -l
verwenden können).
Weitere Informationen zu Diensten finden Sie unter man systemd.service
.
Timer
Timer sind systemd-Einheitsdateien, deren Name mit **.timer**
endet und die **.service**
-Dateien oder Ereignisse steuern. Timer können als Alternative zu Cron verwendet werden, da sie eine integrierte Unterstützung für Kalenderzeitereignisse und monotonische Zeitereignisse haben und asynchron ausgeführt werden können.
Sie können alle Timer mit folgendem Befehl auflisten:
Beschreibbare Timer
Wenn Sie einen Timer ändern können, können Sie ihn dazu bringen, einige vorhandene systemd.unit-Ausführungen auszuführen (wie z. B. eine .service
oder ein .target
).
Im Dokumentationsbereich können Sie lesen, was die Einheit ist:
Die Einheit, die aktiviert werden soll, wenn dieser Timer abläuft. Das Argument ist ein Einheitsname, dessen Suffix nicht ".timer" ist. Wenn nicht angegeben, wird dieser Wert standardmäßig auf einen Dienst festgelegt, der den gleichen Namen wie die Timer-Einheit hat, außer dem Suffix. (Siehe oben.) Es wird empfohlen, dass der aktiviert Einheitsname und der Einheitsname der Timer-Einheit identisch benannt sind, außer dem Suffix.
Daher müssten Sie diese Berechtigung missbrauchen, indem Sie:
Suchen Sie nach einer systemd-Einheit (wie einer
.service
), die eine beschreibbare Binärdatei ausführtSuchen Sie nach einer systemd-Einheit, die einen relativen Pfad ausführt und über beschreibbare Berechtigungen für den systemd-Pfad verfügt (um diese ausführbare Datei zu imitieren)
Erfahren Sie mehr über Timer mit man systemd.timer
.
Timer aktivieren
Um einen Timer zu aktivieren, benötigen Sie Root-Berechtigungen und führen aus:
Beachten Sie, dass der Timer durch Erstellen eines Symlinks darauf in /etc/systemd/system/<WantedBy_section>.wants/<name>.timer
aktiviert wird.
Sockets
Unix-Domänen-Sockets (UDS) ermöglichen die Prozesskommunikation innerhalb von Client-Server-Modellen auf denselben oder verschiedenen Maschinen. Sie nutzen Standard-Unix-Deskriptor-Dateien für die zwischencomputerkommunikation und werden über .socket
-Dateien eingerichtet.
Sockets können mit .socket
-Dateien konfiguriert werden.
Erfahren Sie mehr über Sockets mit man systemd.socket
. In dieser Datei können mehrere interessante Parameter konfiguriert werden:
ListenStream
,ListenDatagram
,ListenSequentialPacket
,ListenFIFO
,ListenSpecial
,ListenNetlink
,ListenMessageQueue
,ListenUSBFunction
: Diese Optionen sind unterschiedlich, aber eine Zusammenfassung wird verwendet, um anzuzeigen, wo der Socket lauschen wird (der Pfad der AF_UNIX-Socketdatei, die IPv4/6 und/oder Portnummer zum Lauschen usw.).Accept
: Nimmt ein boolesches Argument an. Wenn true, wird eine Serviceinstanz für jede eingehende Verbindung erstellt und nur der Verbindungssocket wird an sie übergeben. Wenn false, werden alle lauschenden Sockets selbst an die gestartete Serviceeinheit übergeben, und es wird nur eine Serviceeinheit für alle Verbindungen erstellt. Dieser Wert wird für Datagramm-Sockets und FIFOs ignoriert, bei denen eine einzelne Serviceeinheit bedingungslos den gesamten eingehenden Datenverkehr verarbeitet. Standardmäßig auf false gesetzt. Aus Leistungsgründen wird empfohlen, neue Daemons nur so zu schreiben, dass sie fürAccept=no
geeignet sind.ExecStartPre
,ExecStartPost
: Nimmt eine oder mehrere Befehlszeilen an, die vor oder nach dem Erstellen und Binden der lauschenden Sockets/FIFOs ausgeführt werden. Das erste Token der Befehlszeile muss ein absoluter Dateiname sein, gefolgt von Argumenten für den Prozess.ExecStopPre
,ExecStopPost
: Zusätzliche Befehle, die vor oder nach dem Schließen und Entfernen der lauschenden Sockets/FIFOs ausgeführt werden.Service
: Gibt den Servicenamen an, der bei eingehendem Datenverkehr aktiviert werden soll. Diese Einstellung ist nur für Sockets mit Accept=no zulässig. Es wird standardmäßig auf den Dienst gesetzt, der denselben Namen wie der Socket trägt (mit dem ersetzen des Suffixes). In den meisten Fällen sollte es nicht notwendig sein, diese Option zu verwenden.
Beschreibbare .socket-Dateien
Wenn Sie eine beschreibbare .socket
-Datei finden, können Sie am Anfang des [Socket]
-Abschnitts etwas wie folgt hinzufügen: ExecStartPre=/home/kali/sys/backdoor
und die Hintertür wird ausgeführt, bevor der Socket erstellt wird. Daher müssen Sie wahrscheinlich warten, bis die Maschine neu gestartet wird.
Beachten Sie, dass das System diese Socketdateikonfiguration verwenden muss, damit die Hintertür nicht ausgeführt wird.
Beschreibbare Sockets
Wenn Sie einen beschreibbaren Socket identifizieren (jetzt sprechen wir über Unix-Sockets und nicht über die Konfigurationsdateien .socket
), können Sie mit diesem Socket kommunizieren und möglicherweise eine Schwachstelle ausnutzen.
Enumerieren von Unix-Sockets
Rohverbindung
Ausbeispiel:
Socket Command InjectionHTTP-Sockets
Beachten Sie, dass möglicherweise einige Sockets auf HTTP-Anfragen lauschen (Ich spreche nicht von .socket-Dateien, sondern von Dateien, die als Unix-Sockets fungieren). Sie können dies überprüfen mit:
Beschreibbarer Docker-Socket
Der Docker-Socket, der sich häufig unter /var/run/docker.sock
befindet, ist eine wichtige Datei, die gesichert werden sollte. Standardmäßig ist sie vom Benutzer root
und den Mitgliedern der Gruppe docker
beschreibbar. Wenn Sie Schreibzugriff auf diesen Socket haben, kann dies zu einer Privilegieneskalation führen. Hier ist eine Aufschlüsselung, wie dies gemacht werden kann, und alternative Methoden, wenn die Docker CLI nicht verfügbar ist.
Privilegieneskalation mit Docker CLI
Wenn Sie Schreibzugriff auf den Docker-Socket haben, können Sie Privilegien mit den folgenden Befehlen eskalieren:
Diese Befehle ermöglichen es Ihnen, einen Container mit Root-Zugriff auf das Dateisystem des Hosts auszuführen.
Verwendung der Docker-API direkt
In Fällen, in denen die Docker-Befehlszeilenschnittstelle nicht verfügbar ist, kann der Docker-Socket weiterhin mithilfe der Docker-API und curl
-Befehlen manipuliert werden.
Docker-Images auflisten: Abrufen der Liste der verfügbaren Images.
Einen Container erstellen: Senden Sie eine Anfrage zur Erstellung eines Containers, der das Stammverzeichnis des Hostsystems einbindet.
Starten Sie den neu erstellten Container:
Mit dem Container verbinden: Verwenden Sie
socat
, um eine Verbindung zum Container herzustellen und die Ausführung von Befehlen darin zu ermöglichen.
Nachdem die socat
-Verbindung eingerichtet wurde, können Befehle direkt im Container mit Root-Zugriff auf das Dateisystem des Hosts ausgeführt werden.
Andere
Beachten Sie, dass Sie, wenn Sie Schreibberechtigungen über den Docker-Socket haben, weil Sie in der Gruppe docker
sind, weitere Möglichkeiten haben, Berechtigungen zu eskalieren. Wenn die Docker-API auf einem Port lauscht, können Sie sie auch kompromittieren.
Überprüfen Sie weitere Möglichkeiten, aus Docker auszubrechen oder es zu missbrauchen, um Berechtigungen zu eskalieren in:
Docker SecurityContainerd (ctr) Privilege Escalation
Wenn Sie feststellen, dass Sie den ctr
-Befehl verwenden können, lesen Sie die folgende Seite, da Sie ihn möglicherweise missbrauchen können, um Berechtigungen zu eskalieren:
RunC Privilege Escalation
Wenn Sie feststellen, dass Sie den runc
-Befehl verwenden können, lesen Sie die folgende Seite, da Sie ihn möglicherweise missbrauchen können, um Berechtigungen zu eskalieren:
D-Bus
D-Bus ist ein ausgeklügeltes Inter-Process Communication (IPC)-System, das Anwendungen ermöglicht, effizient miteinander zu interagieren und Daten auszutauschen. Entwickelt mit dem modernen Linux-System im Hinterkopf, bietet es ein robustes Framework für verschiedene Formen der Anwendungskommunikation.
Das System ist vielseitig und unterstützt grundlegende IPC, das den Datenaustausch zwischen Prozessen verbessert, ähnlich wie erweiterte UNIX-Domänen-Sockets. Darüber hinaus unterstützt es das Senden von Ereignissen oder Signalen, was eine nahtlose Integration zwischen Systemkomponenten fördert. Beispielsweise kann ein Signal von einem Bluetooth-Dämon über einen eingehenden Anruf einen Musikplayer dazu veranlassen, stumm zu schalten und so die Benutzererfahrung zu verbessern. Darüber hinaus unterstützt D-Bus ein Remote-Objektsystem, das Serviceanfragen und Methodenaufrufe zwischen Anwendungen vereinfacht und Prozesse optimiert, die traditionell komplex waren.
D-Bus arbeitet nach einem Zulassen/Verweigern-Modell, das die Berechtigungen für Nachrichten (Methodenaufrufe, Signalausgaben usw.) basierend auf der kumulativen Wirkung übereinstimmender Richtlinien verwaltet. Diese Richtlinien spezifizieren Interaktionen mit dem Bus und ermöglichen potenziell eine Berechtigungserweiterung durch die Ausnutzung dieser Berechtigungen.
Ein Beispiel für eine solche Richtlinie in /etc/dbus-1/system.d/wpa_supplicant.conf
wird bereitgestellt, die Berechtigungen für den Root-Benutzer zum Besitzen, Senden an und Empfangen von Nachrichten von fi.w1.wpa_supplicant1
festlegt.
Richtlinien ohne einen spezifizierten Benutzer oder eine Gruppe gelten universell, während Richtlinien im "default"-Kontext für alle gelten, die nicht von anderen spezifischen Richtlinien abgedeckt sind.
Erfahren Sie, wie Sie hier eine D-Bus-Kommunikation aufzählen und ausnutzen können:
D-Bus Enumeration & Command Injection Privilege EscalationNetzwerk
Es ist immer interessant, das Netzwerk aufzuzählen und die Position der Maschine herauszufinden.
Generische Aufzählung
Offene Ports
Überprüfen Sie immer die Netzwerkdienste, die auf dem Gerät ausgeführt werden, mit denen Sie vor dem Zugriff nicht interagieren konnten:
Sniffing
Überprüfen Sie, ob Sie den Datenverkehr sniffen können. Wenn Sie dies können, könnten Sie in der Lage sein, einige Anmeldeinformationen abzufangen.
Benutzer
Generische Aufzählung
Überprüfen Sie wer Sie sind, welche Berechtigungen Sie haben, welche Benutzer sich im System befinden, wer sich anmelden kann und welche Benutzer Root-Berechtigungen haben:
Große UID
Einige Linux-Versionen waren von einem Fehler betroffen, der es Benutzern mit UID > INT_MAX ermöglicht, Berechtigungen zu eskalieren. Weitere Informationen: hier, hier und hier.
Exploitieren Sie es mit: systemd-run -t /bin/bash
Gruppen
Überprüfen Sie, ob Sie Mitglied einer Gruppe sind, die Ihnen Root-Rechte gewähren könnte:
Interesting Groups - Linux PrivescZwischenablage
Überprüfen Sie, ob sich etwas Interessantes in der Zwischenablage befindet (falls möglich)
Passwortrichtlinie
Bekannte Passwörter
Wenn Sie ein Passwort der Umgebung kennen, versuchen Sie, sich als jeden Benutzer mit dem Passwort anzumelden.
Su-Brute
Wenn es Ihnen nichts ausmacht, viel Lärm zu machen und die Binärdateien su
und timeout
auf dem Computer vorhanden sind, können Sie versuchen, Benutzer mit su-bruteforce zu brute-forcen.