Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Grundlagen der Rechteausweitung

Die ganze Lektion steht hier zum Lesen. Erstellen Sie ein kostenloses Konto, um sie in einem Live-Lab auszuführen.

Ubuntu-VM-Lab7 Min. Lesezeit5 Befehle

Was du machst

Auf dieser Maschine gibt es ein zweites Konto mit wenigen Rechten, intern. Jemand aus der Administration hat drei gewöhnliche Fehler hinterlassen, die es finden kann: ein Programm mit mehr Rechten, als es braucht, eine sudo-Regel, die nie eingeschränkt wurde, und einen geplanten Auftrag, der einer Datei vertraut, die jeder ändern kann. Du schaust dir die drei von deinem eigenen Konto student aus an, ohne eine davon zu nutzen: Eine zu finden und zu nutzen ist die eigentliche Aufgabe des Labs.

Bevor du anfängst

Notiz

Drücke oben in der Leiste dieser Lektion auf Lab starten. Dieses Lab ist eine ganze Ubuntu-Maschine für dich allein. Deshalb braucht es etwas länger als ein Container, bis es läuft. Jede Schaltfläche Ausführen tippt ihren Befehl in das Terminal der Maschine, einen nach dem anderen. Sagt einer, dass die Maschine noch startet, warte ein paar Sekunden und drücke ihn noch einmal. Wenn du zuschauen oder eigene Befehle tippen willst, drücke in der Leiste auf Terminal öffnen (neuer Tab).

Die eine Regel

Warnung

Diese Maschine gehört dir allein. Sie hat keinen Weg zu den Maschinen anderer Lernender und keinen Weg ins Internet, außer zu ein paar Paketarchiven. Greife nur diese Maschine an: Wer das mit einer fremden Maschine tut, begeht in Großbritannien nach dem Computer Misuse Act 1990 eine Straftat.

1. Lerne das zweite Konto kennen

Diese Maschine hat ein zweites Konto, das die Einrichtung des Labs angelegt hat, ohne die Rechte deines eigenen Kontos. getent passwd liest die Kontoliste des Systems und gibt eine Zeile für intern aus: sein eigener Home-Ordner und seine eigene Shell, mehr nicht.

Befehl
getent passwd intern

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

2. Sieh dir das setuid-Hilfsprogramm an

Ein setuid-Programm läuft immer als der Benutzer, dem es gehört, egal wer es startet. ls -l zeigt ein s dort, wo das Ausführungsrecht des Eigentümers stünde: -rwsr-xr-x, Eigentümer root. Wer es ausführt, ist also root, solange es läuft.

Befehl
ls -l /usr/local/bin/sysfind

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

3. Sieh dir die sudo-Regel an

Die eigene Konfiguration von sudo legt fest, wer was als jemand anderes ausführen darf. Dein Konto kann sie mit sudo schon lesen. Diese Zeile erlaubt intern, ein Programm als root auszuführen, ganz ohne Passwort.

Befehl
sudo cat /etc/sudoers.d/90-lab-intern

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

4. Sieh dir das beschreibbare Skript an

Der Cron-Dienst von root führt dieses Skript jede Minute aus. ls -l zeigt rwxrwxrwx: Alle Rechte sind gesetzt, also kann jede Person auf der Maschine, auch intern, ändern, was es tut, bevor root es das nächste Mal ausführt.

Befehl
ls -l /opt/maintenance/cleanup.sh

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

5. Bestätige, dass root es ausführt

Das liest die geplanten Aufträge von root auf dieselbe Weise, wie sudo cat die sudo-Regel gelesen hat: eine Zeile, das Skript aus dem Schritt davor, jede Minute als root ausgeführt.

Befehl
sudo crontab -l -u root

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Jetzt das Lab

Tipp

Du hast die drei Schwachstellen gesehen. Eine davon zu nutzen, um root zu werden, ist die Aufgabe dieses Labs: Wechsle mit su - intern zum Konto mit wenigen Rechten (sein Passwort steht in README.md, lies es mit cat README.md), finde heraus, welche Schwachstelle dich zu root bringt, und beweise es so, wie es die README verlangt.

Für Lehrkräfte

Tipp

Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab bearbeitet wird: Die Schritte und die Schaltflächen „Ausführen“ sind die Lektion, und das Lab ist die eigene Kopie jeder lernenden Person. Diese Lektion wird in einem VM-Lab bearbeitet: Jede lernende Person hat eine eigene Ubuntu-Maschine mit einem zweiten Konto und drei Schwachstellen darauf. Das Lab hat kein Prüfskript, weil eine lernende Person auf dieser Maschine jede Datei schreiben kann, die ein Skript lesen könnte: Die Lernenden geben eine Beschreibung der Schwachstelle ab, die sie genutzt haben, dazu die Befehle, mit denen sie es getan haben, und Sie lesen sie. Kopieren Sie die Lektion in Ihr eigenes Modul und ändern Sie sie, oder bauen Sie mit dem Menü Lab im Lektionseditor eine ganz neue.

Über dieses Lab und seinen Quellcode: Lab zur Rechteausweitung unter Linux: eine setuid-Binärdatei, eine sudo-Regel und ein Cron-Job zum Knacken

Sie unterrichten eine Klasse? Weisen Sie diese Lektionen Ihren Lernenden zu, mit Bewertung und einem Lab für jede lernende Person.