Möchten Sie Superuser-Zugriff auf ein Linux-System erhalten? Hier sind einige der besten Möglichkeiten, eine Linux-Maschine aufzulisten.
Die Aufzählung ist eine der Schlüsselphasen des Penetrationstests. Dies ist das Erste, was Sie tun müssen, wenn Sie als Penetrationstester ein Zielsystem kompromittiert haben. Obwohl es eine Vielzahl von Tools zur Automatisierung dieses Prozesses gibt, empfiehlt es sich immer, das System manuell zu durchsuchen und noch einmal auf potenzielle Vektoren der Rechteausweitung zu überprüfen.
Schauen wir uns die verschiedenen Möglichkeiten an, ein Linux-System für die Rechteausweitung manuell aufzulisten.
Warum ist die Aufzählung für die Rechteausweitung wichtig?
Die Privilegieneskalation, auch Escalation of Privilege (EOP) genannt, ist eine Kernkomponente des Penetrationstests und der Penetrationstestmethodik. Wie der Name schon sagt, handelt es sich um eine Phase, in der Sie versuchen, Ihre Rechte auf den Administrator oder, in Linux-Systemen, auf den Root-Benutzer zu erhöhen.
Um Root-Rechte zu erlangen, müssen Sie zunächst eine Schwachstelle im System finden. Hier kommt die Aufzählung ins Spiel. Obwohl es Tools zur Automatisierung der Aufzählung gibt, kann eine manuelle und gründliche Aufzählung in den meisten Fällen Fehlkonfigurationen und andere Schwachstellen aufdecken, die von den Tools nicht erkannt werden.
1. Systemaufzählung
Das erste, was Sie tun sollten, nachdem Sie einen ersten Einstieg gefunden haben, ist, sich über das System zu informieren, zu dem Sie Zugriff haben. Dies hilft Ihnen, Ihre Nutzlasten entsprechend der Architektur zu optimieren und eine maximale Kompatibilität Ihrer Nutzlasten mit dem Zielsystem sicherzustellen.
Wenn Sie beispielsweise über einen 64-Bit-Exploit verfügen, müssen Sie ihn ändern, wenn Ihr Zielsystem nur 32-Bit-Software unterstützt, da es einen Unterschied zwischen 32-Bit- und 64-Bit-Systemen gibt.
Wenn Sie außerdem die Kernel-Version kennen, können Sie im Internet nach Exploits suchen, falls Sie feststellen, dass die Version veraltet und anfällig für einen öffentlichen Exploit ist. Hier sind einige Befehle, die Ihnen beim Abrufen von Systeminformationen helfen:
Um Systeminformationen wie Kernelversion, Betriebssystemversion usw. zu finden, geben Sie Folgendes ein:
cat /etc/cpuinfo
uname -a
Wenn Sie mehr über die CPU-Architektur erfahren möchten, verwenden Sie den Befehl lscpu:
lscpu
2. Prozessaufzählung
Prozesse sind Programme in Ausführung. Kenntnis der vollständigen Liste der Prozesse auf einem Linux-System, gepaart mit einigen anderen Aufzählungstaktiken Die in diesem Leitfaden erwähnten Maßnahmen helfen Ihnen dabei, potenziell anfällige Prozesse zu identifizieren und sie zu nutzen, um sie zu verbessern Privileg.
Wenn Sie beispielsweise einen Prozess finden, der mit Root-Berechtigungen ausgeführt wird, können Sie möglicherweise beliebigen Code in diesen einschleusen, was zu einer erfolgreichen Eskalation der Berechtigungen führen könnte.
Sie können verwenden der ps-Befehl mit dem Aux Flags, um alle Prozesse im System aufzulisten:
PS Aux
3. Aufzählung von Benutzern und Gruppen
Die Aufzählung von Benutzern und Gruppen ist wichtig, um herauszufinden, wer Zugriff auf welchen Teil des Systems hat. Wenn Sie das wissen, können Sie Ihre Ziele effizient eingrenzen und eine effektive Angriffsstrategie entwickeln. Darüber hinaus sind Sie in der Lage, geeignete Zuordnungen zu erstellen und die Rollen und Berechtigungen jedes Kontos im Detail zu verstehen.
Durch die Sichtbarkeit privilegierter Konten können Sie bekannte Benutzername-Passwort-Kombinationen ausprobieren. Sie können den Inhalt ausdrucken /etc/passwd Und /etc/group Dateien, um auf die Benutzerliste zuzugreifen. Alternativ können Sie auch den Befehl getent verwenden.
Zu Holen Sie sich die Liste der Benutzer unter Linux:
Passwort erhalten
So erhalten Sie die Liste der Gruppen:
Getent-Gruppe
4. Nach sensiblen Dateien suchen
Sensible Dateien wie z /etc/passwd Und /etc/shadow kann möglicherweise viele Informationen preisgeben. Aus /etc/shadow Sie können die Hashes der Passwörter von Benutzern finden und versuchen, sie mit einem Hash-Cracking-Tool wie Hashcat oder John the Ripper zu knacken.
Es gibt auch die /etc/sudoers Datei, die, wenn Sie sie irgendwie bearbeiten können, das Ändern der Sudo-Berechtigungen für Benutzer und Gruppen ermöglicht.
5. Überprüfen der Sudo-Berechtigungen
Die ordnungsgemäße Verwaltung der Sudo-Berechtigungen ist für die Sicherheit eines Linux-Systems von entscheidender Bedeutung. Durch die Analyse der Sudo-Berechtigungen erhalten Sie Einblick in potenzielle Vektoren für die Rechteausweitung. Wenn es zu Fehlkonfigurationen kommt, beispielsweise wenn bestimmte Programme über ein alarmierendes Maß an Berechtigungen verfügen, können Sie diese möglicherweise ausnutzen, um Root-Zugriff zu erhalten.
Dies ist nur ein Beispiel für die vielen Angriffswege, die sich eröffnen können, wenn Sie Klarheit über die Sudo-Berechtigungen im Linux-System haben. Ein weiteres Beispiel wäre der Missbrauch des Vorlademechanismus der LD_PRELOAD-Bibliothek, den Sie anhand der Sudo-Berechtigungen aufzählen können.
sudo -l
6. Auffinden von Linux-Kernel-Exploits
Linux-Kernel-Exploits sind tödlich, da sie den Kern des Betriebssystems angreifen, das auf dem kompromittierten System ausgeführt wird. Bei einem kritischen Kernel-Fehler können Sie nahezu alles mit dem System machen.
Um Kernel-Exploits zu finden, ermitteln Sie zunächst die Kernel-Version und verwenden Sie dann ein Tool wie searchsploit oder mit Google Dorks, finden Sie einen geeigneten Exploit, der sich auf die genaue Version des Kernels auswirkt, die auf dem System ausgeführt wird.
7. Ausnutzung von SUID-Binärdateien
SUID ist die Abkürzung für Set Owner User ID bei der Ausführung. Es handelt sich um eine spezielle Art von Dateiberechtigung, die, wenn sie festgelegt ist, ein Programm mit den Berechtigungen seines Eigentümers ausführt.
Wenn ein Programm vom Root-Benutzer erstellt und das SUID-Bit dafür gesetzt wurde, verfügt das Programm bei seiner Ausführung über Root-Rechte. Wie kann SUID missbraucht werden? Es ist einfach.
Führen Sie eine Auflistung aller Binärdateien mit gesetztem SUID-Bit durch, durchsuchen Sie die Liste, suchen Sie eine Binärdatei, für die Sie Schreibzugriff haben, und bearbeiten Sie deren Quelle, um Ihre Nutzlast hinzuzufügen. Mit dem Befehl „find“ können Sie nach SUID-Binärdateien suchen und die Standardausgabe dorthin umleiten /dev/null:
find / -perm -4000 2>/dev/null
8. Kaperung von Bibliotheken
Manchmal laufen auf dem System Programme, die Bibliotheken verwenden, die nicht schreibgeschützt sind. In einem solchen Szenario können Sie die verwendete Bibliothek problemlos überschreiben und die Kontrolle über die Funktionalität des Programms übernehmen.
Wenn Sie Glück haben und ein Programm finden, das als Root ausgeführt wird, können Sie die Bibliothek, von der es abhängt, kapern und möglicherweise Root-Shell-Zugriff erhalten.
9. Umgebungsvariablen untersuchen und kapern
Umgebungsvariablen sind spezielle Arten von Variablen, die bis zu einem gewissen Grad definieren, wie das System und die Programme funktionieren. Eine wichtige Umgebungsvariable ist die PATH-Variable.
Es speichert den Speicherort aller ausführbaren Binärdateien im System. Sie können die PATH-Variable manipulieren und sie mit anderen Schwachstellen wie dem Bibliotheks-Hijacking verknüpfen, um Root-Zugriff zu erhalten.
Angenommen, es gibt eine ausführbare Datei mit gesetztem SUID-Bit. Um richtig zu funktionieren, ruft es eine Binärdatei auf, ohne ihren vollständigen Pfad zu definieren.
Sie können dies ausnutzen, indem Sie eine duplizierte, schädliche Version der Binärdatei erstellen und die PATH-Variable mit dem Speicherort von aktualisieren Wenn also die ausführbare SUID-Datei ausgeführt wird, wird Ihre schädliche Binärdatei als Root ausgeführt und Sie können eine Root-Shell erstellen.
Darüber hinaus besteht auch eine gute Chance, geheime Schlüssel und Passwörter zu finden, indem man einfach die Umgebungsvariablen durchsucht. Sie können alle Umgebungsvariablen mit dem Befehl env drucken:
env
10. Finden Sie Artefakte im Bash-Verlauf
Oftmals wird der Verlauf des aktuellen Benutzers nicht gelöscht. Sie können dies missbrauchen, um möglicherweise Zugriff auf vertrauliche Informationen zu erhalten oder vorherige Befehle mit geänderten Parametern erneut auszuführen.
Obwohl dies wahrscheinlich nicht zu einer Rechteausweitung führt, ist es eine gute Quelle für Informationslecks, um Ihnen Klarheit darüber zu verschaffen, was der Benutzer normalerweise auf dem System tut.
11. Kaperung anfälliger Cron-Jobs
Cron-Jobs sind eine integrierte und äußerst einfallsreiche Funktion von Linux. Wenn Sie von Windows migriert haben, kann ein Cron-Job direkt mit einer geplanten Aufgabe unter Windows verglichen werden.
Es wird regelmäßig ausgeführt und führt Befehle aus. Sowohl der Zeitpunkt der Ausführung als auch die auszuführenden Befehle werden vom Benutzer vordefiniert. Manchmal sind einige Cron-Jobs anfällig für Angriffe wie Wildcard-Injection oder können von dem Benutzer geschrieben werden, als den Sie sich angemeldet haben.
Sie können diese Schwachstellen missbrauchen, um Root-Zugriff auf das System zu erhalten. Um einen Cron-Job auszunutzen, müssen Sie zunächst einen angreifbaren Job finden. Hier sind die Befehle, um aktuell laufende Cron-Jobs und andere relevante Daten aufzulisten:
ls /etc/cron.d/
crontab -l -u
12. Auflisten veralteter Pakete
Wenn Sie den Zugriff auf ein System eingerichtet haben, sollten Sie als Erstes alle installierten Softwarepakete auflisten und ihre installierten Versionen mit der neuesten Version vergleichen.
Es besteht die Möglichkeit, dass ein obskures Paket installiert ist, das möglicherweise nicht oft verwendet wird, aber dennoch äußerst anfällig für einen Privilegien-Eskalationsangriff ist. Sie können dieses Paket dann ausnutzen, um Root-Zugriff zu erhalten.
Verwenden Sie den Befehl dpkg mit dem -l Tag, um installierte Pakete auf Debian- und Ubuntu-basierten Systemen aufzulisten:
dpkg -l
Verwenden Sie für RHEL/CentOS/Fedora-Systeme diesen Befehl, um installierte Pakete aufzulisten:
rpm -qa
Jetzt wissen Sie, wie Sie Linux für die Rechteausweitung manuell auflisten
Die Rechteausweitung hängt ausschließlich von der Aufzählung ab. Je mehr Informationen Ihnen zur Verfügung stehen, desto besser können Sie Ihre Angriffsstrategien planen.
Eine effiziente Enumeration ist der Schlüssel zur Etablierung eines Standes, zur Ausweitung von Berechtigungen und zur erfolgreichen Persistenz auf Ihrem Zielsystem. Obwohl es hilfreich ist, Dinge manuell zu erledigen, können einige der Aufgaben automatisierten Tools zugewiesen werden, um Zeit und Aufwand zu sparen. Sie müssen über die besten Sicherheitstools Bescheid wissen, um ein System auf Schwachstellen zu scannen.