Kann mir bitte jemand erklären, wie ich anhand dieser 2 Befehle an eine Root-Shell gelange?
Was genau sorgt dafür das ich anhand dieser 2 Befehle eine Root Shell erhalte. Also ich verstehe nur folgendes..: Ich weiß das ich etwas kompiliert habe. Dann habe ich diese kompilierte Datei über LD_PRELOAD gleichgesetzt und mit einem Programm (VIM, das übrigens unter „sudo -l“ auftaucht und ich hier Root rechte besitze). Ich verstehe echt nicht wie ich dadurch jetzt nun eine Root Shell erzeugt habe. Bitte erklärt das auch für die ganz Dummen (wie mich) damit ich das auch mal verstehe was da im Hintergrund passiert ist. Vielen Dank im Voraus!
2 Antworten
LD_PRELOAD sagt dem dynamischen Linker, dass er die angegebene Datei vor dem Ausführen des Programms laden soll. Das tut er dann eben auch mit Root-Rechten des Zielprogramms. Wenn die Bibliothek dann in ihrem Initialisierungscode eine Shell startet, läuft die halt mit den Rechten des Zielprogrammes, also root. Das LD_PRELOAD kann man normal dazu verwenden, wenn man ein Programm gezielt mit einer bestimmten Version einer Bibliothek starten will statt der Standardversion der Distribution.
Aber eigentlich entfernt sudo LD* Umgebungsvariablen, würde mich wundern, wenn das noch so geht. Wenn du vim als root ausführen darfst kannst du dir den Auswand auch schenken, :!/bin/bash tut auch.
Ist unmöglich zu sagen. Viel zu wenige Informationen.
Man müsste also den Quellcode dessen kennen, was du kompilliert hast.
Das klingt auch sehr nach einem Exploit.
Das steht doch in Englisch alles da :-P
Und nein, die .so ist das kompillierte shared object. Das was ist preload.c steht, das ist der Exploit Code.
Okay, ich übersetz dir das mal in Deutsch:
LD_PRELOAD läd eine shared library VOR ALLEN ANDEREN, wenn ein Programm startet
Das bedeutet effektiv, dass der kompillierte Code aus dieser Library ausgeführt wird, bevor das entsprechende Programm, bei dir "vim" ausgeführt wird.
Warum man das so macht und nicht einfach den Exploit in ein eigenes ausführbares Programm schreibt weiß ich nicht, dazu müsste man sich den Exploit anschauen.
Also einfach gesagt:
- Du kompillierst eine Bibliothek
- und rufst sie Huckepack mit irgend einem Programm auf
- der Exploit wird ausgeführt und bringt dich dann in eine Root Shell
- wie genau, weiß der Geier
Alles klar danke dir, damit hast du mir definitv schon weiter geholfen
ich glaube den Output der preload.so willst du nicht sehen, da das nicht leserlich ist. Ja, es ist ein Exploit. Meine Frage ist nun was es mit LD_PRELOAD auf sich hat und wieso man das dann über bsp. VIM aufrufen muss/kann?