-
31.07.2012, 13:04 #1
- Registriert seit
- 15.11.2011
- Beiträge
- 6.081
- Blog Entries
- 5
Thanked 9.119 Times in 2.996 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:
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:
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:
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
Code:mkdir exploit
Code:export PATH=/exploit
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.
Code:[daniel@linux ~]# gcc -o /exploit/clear exploit.c
Nun starten wir das Hello-World Testprogramm vom Anfang
Code:[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
Code:[daniel@linux ~]# which clear /usr/bin/clear
Somit wäre unser Hello-World Programm mit
Code:system("/usr/bin/clear");
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.