Kann mir bitte jemand erklären, wie ich anhand dieser 2 Befehle an eine Root-Shell gelange?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

Woher ich das weiß:Studium / Ausbildung – Informatiker

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.

Woher ich das weiß:Berufserfahrung – Berufserfahrung

verreisterNutzer  29.03.2022, 11:53

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?

0
TheQ86  29.03.2022, 11:58
@verreisterNutzer

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
1