-
31.07.2012, 13:04 #1Projektleitung
- Registriert seit
- 15.11.2011
- Beiträge
- 8.436
- Blog Entries
- 5
Thanked 9.515 Times in 3.330 Posts
[TuT] Sicherheitslücken von Umgebungsvariablen ($PATH)
Kleiner Hinweis vorweg:
Da in diesem Tutorial C-Code compiliert wird, braucht ihr einen C-Compiler.
Falls ihr noch keinen habt, installiert über eure Paketverwaltung am besten gcc, den verwende ich auch hier im Tutorial.
Alternativ tut es natürlich jeder andere C-Compiler auch, wenn ihr damit umgehen könnt.
Als Beispiel nehmen wir mal ein ganz simples C-Programm:
Wir haben irgendeine Ausgabe, die später durch eine neue ersetzt werden soll.Code:#include <stdio.h> int main() { printf("Irgendein langer Content\n"); system("clear"); printf("Neuer Content\n"); return 0; }
Das wird hier über einen Aufruf von system("clear") realisiert, der bekanntlich den gesamten Konsoleninhalt löscht.
Anschließend kommt die neue Bildschirmausgabe.
An sich ein ziemliches Hello-World Programm, von dem man zunächst kaum vermuten würde, dass in den 3 Zeilen eine Schwachstelle steckt.
Wenn wir aber mal gucken, wo clear liegt:
stellen wir fest, dass hier mit Umgebungsvariablen gearbeitet wird, genauer genommen mit $PATH.Code:[daniel@linux ~]# which clear /usr/bin/clear
Wenn wir uns $PATH mal ausgeben lassen, wissen wir auch, wie Linux auf /usr/bin/clear kommt:
Wenn clear aufgerufen wird, prüft Linux also diese Pfade (Mit : getrennt, statt wie \ unter Windows) durch, bis es den gewünschten Befehl findet (oder eben nicht, wenn er nicht existiert).Code:[daniel@linux ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
Oben wurde bereits festgestellt, dass clear in /usr/bin liegt, der in $PATH enthalten ist - folglich funktioniert das ganze.
$PATH ist eine lokale Variable auf unserem System, daher können wir diese nach Lust und Laune verändern.
Spätestens jetzt kann man sich eigentlich denken, worauf das ganze hinauslaufen wird.
Wir legen mal testweise im root einen Ordner exploit an. Wo spielt keine Rolle, solange der aktuelle Benutzer Schreibrechte darauf hat.
Ich machs jetzt mal direkt im root-Verzeichniss, da das Programm nachher zur De
und exportieren diesen anschließend in die Variable $PATHCode:mkdir exploit
Nun gucken wir mal, was Linux jetzt sagt wenn wir clear suchen:Code:export PATH=/exploit
Er sucht nun nach clear in /exploit, also funktioniert soweit schonmal alles.Code:[daniel@linux ~]# which clear /usr/bin/which: no clear in (/exploit)
Jetzt muss in /exploit natürlich noch ein Programm namens clear erzeugt werden, damit dies aufgerufen und keine Fehlermeldung erzeugt wird.
Wenn ihr das testet solltet ihr compilieren bevor ihr $PATH exportiert, da sonst die ganzen aufrufe wie zb vom gcc Compiler ebenfalls in $PATH, also /exploit landen und da logischerweise nicht gefunden werden können.Code:[daniel@linux ~]# gcc -o /exploit/clear exploit.c
Nun starten wir das Hello-World Testprogramm vom Anfang
und es funktioniert, der Exploit wurde gestartetCode:[daniel@linux ~]# ./test Irgendein langer Content exploit started! Neuer Content
In dem Fall nicht sehr dramatisch da hier nur ein einfaches printf aufgerufen wird.
Wenn man nun bedenkt, dass das Hauptprogramm evtl mit root-Rechten läuft, hat man natürlich ruck zuck eine Shell.
Verhinderbar wäre das ganze, indem man anstelle von Umgebungsvariablen eben absolute Pfade verwendet.
Mit
wurde ja bereits ermittelt wo clear liegt, nämlich in /usr/bin.Code:[daniel@linux ~]# which clear /usr/bin/clear
Somit wäre unser Hello-World Programm mit
stattCode:system("/usr/bin/clear");
entschärft.Code:system("clear");
-
The Following 3 Users Say Thank You to DMW007 For This Useful Post:
Ähnliche Themen
-
Kennt jemand "Path Of Exile"
Von Muffie im Forum RollenspieleAntworten: 4Letzter Beitrag: 21.12.2013, 16:05 -
Whatsapp - Sicherheitslücken
Von Hawkeye815 im Forum Windows MobileAntworten: 7Letzter Beitrag: 12.11.2013, 20:34 -
Korn - The Path Of Totality
Von Skindred im Forum ShowroomAntworten: 2Letzter Beitrag: 18.06.2012, 13:37 -
[TS³] Admin erwerben durch Sicherheitslücken ?
Von Serious im Forum SecurityAntworten: 1Letzter Beitrag: 01.02.2012, 23:10
Stichworte
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.
Zitieren