Hoe Run0 in Linux te gebruiken
Run0 is een nieuw en innovatief privilege escalation-programma voor Systemd-gebaseerde Linux-distributies. Het biedt een lichtgewicht en “config-less” alternatief voor traditionele escalatie-apps zoals sudo en doas. Hier laten we u de basis zien van het gebruik van Run0 om opdrachten voor uw Linux-systeem te escaleren.
Voordat u dat doet, wilt u misschien eerst weten wat Run0 is en hoe het verschilt van sudo.
Hoe u programma’s als een andere gebruiker kunt uitvoeren
Een van de meest voorkomende toepassingen voor privilege escalation apps is het uitvoeren van opdrachten als root-gebruiker. In dit opzicht vereist het tikken op de root-gebruiker in Run0 dat u run0 toevoegt voor de opdracht die u wilt uitvoeren. Het volgende maakt bijvoorbeeld een nieuwe map in een directory die alleen toegankelijk is voor root:
Er verschijnt een CLI-wachtwoordprompt of een klein GUI-venster waarin u wordt gevraagd het wachtwoord van uw huidige gebruiker in te voeren.
Net als sudo en doas kan Run0 ook overschakelen naar een niet-rootgebruiker bij het uitvoeren van opdrachten. Om dit te doen, voegt u de --user
vlag toe, gevolgd door de naam van de gebruiker waarmee u de opdracht wilt uitvoeren:
Geef het wachtwoord op voor de gebruiker waarnaar u wilt overschakelen en druk op Enter.
Hoe over te schakelen naar de shell van een andere gebruiker
Een ander belangrijk onderdeel van een privilege escalation app is de mogelijkheid om de gebruiker naar een root shell te droppen. Dit geeft u de mogelijkheid om als rootgebruiker met uw systeem te communiceren en complexere opdrachten uit te voeren vanaf de CLI.
In Run0 kunt u dit doen door het programma uit te voeren zonder extra argumenten.
Net zoals bij het uitvoeren van programma’s als root, is het ook mogelijk om Run0 te gebruiken met de --user
vlag om een shell-sessie te starten als een specifieke gebruiker:
Bovendien kunt u met run0 shell-sessies maken met tijdelijke groepsmachtigingen voor niet-rootgebruikers. Dit is handig als u toegang wilt tot mappen die achter een bepaalde gebruiker en groep zijn vergrendeld zonder naar root te gaan.
De volgende opdracht geeft de gebruiker “alice” bijvoorbeeld tijdelijke toegang tot de groep “www-data”:
U kunt de --chdir
vlag ook gebruiken om een directorywijziging af te dwingen wanneer u naar een nieuwe shell-sessie gaat:
Hoe de huidige Run0-sessie aan te passen
Het grootste verkoopargument van Run0 is dat het geen setuid (SUID) gebruikt om superuser-acties te verwerken. In plaats daarvan vertrouwt het op systemd-run, dat geïsoleerde pseudo-TTY’s creëert om opdrachten als root uit te voeren.
Een gevolg van deze aanpak is dat Systemd elke Run0 shell behandelt als een discrete eenheid die draait onder de service manager. Dit stelt u in staat om uw root shell-proces aan te passen, in tegenstelling tot traditionele privilege escalation-apps.
Om een label aan uw root shell toe te voegen, gebruikt u de --unit
vlag gevolgd door de naam die u wilt gebruiken:
U kunt ook een aangepaste beschrijving toevoegen aan uw root shell door de --description
volgende vlag toe te voegen:
Controleer of u uw gegevens correct hebt ingevoerd door de aangepaste naam van uw rootshell op te geven met systemctl
:
Standaard verandert Run0 de kleur van uw root shell-achtergrond naar rood. Hoewel dit een nuttige visuele indicator is, kan dit afleidend zijn als u een licht thema op uw systeem gebruikt.
Om dit te wijzigen, gebruikt u de --background
vlag gevolgd door een waarde tussen 40-49:
Tot slot kunt u ook het “niceness level” van uw root shell aanpassen. Dit is een waarde tussen -20 en 19 die bepaalt of uw kernel uw proces prioriteit geeft boven andere.
Om uw root shell de hoogste prioriteit te geven, gebruikt u de --nice
vlag met de waarde “-20”:
Hoe je Run0-sessies kunt groeperen
Naast het feit dat u elke Linux root shell kunt aanpassen, kunt u Run0 ook gebruiken om ze te groeperen in een Systemd slice. Dit is een speciale constructie waarmee uw machine de resource-vraag voor processen kan aanpassen zonder de rest van uw systeem te beïnvloeden.
Om een root shell op een andere slice te maken, voert u de --slice
flag uit, gevolgd door de naam van de slice waarnaar u wilt verplaatsen:
Controleer of uw nieuwe sessie onder uw nieuwe slice wordt uitgevoerd door de processen erin op te sommen:
U kunt de --slice-inherit
vlag ook gebruiken om uw nieuwe slice te groeperen met de slice waar Run0 vandaan kwam. Dit is handig als u uw shells al hebt gegroepeerd in hun respectievelijke slices en u gewoon een nieuwe shell wilt toevoegen:
Hoe u opdrachten uitvoert op Systemd-containers met Run0
Systemd-nspawn is een speciaal programma dat lichtgewicht Linux-containers kan maken en beheren die lijken op Docker. Omdat het onderdeel is van de Systemd-suite, kunt u Run0 ook gebruiken om opdrachten uit te voeren in uw nspawn-containers vanaf uw hostmachine.
Begin met het opsommen van de beschikbare Systemd-nspawn-containers in uw systeem:
Voer de volgende opdracht uit om een map te maken in de hoofdmap van uw container:
Het is ook mogelijk om naar de root shell van uw container te gaan met Run0:
Bevestig dat u nu binnen uw container werkt door de hostnaam van uw terminalsessie af te drukken:
Leren hoe je Run0 gebruikt om root-opdrachten uit te voeren en te beheren in Linux is slechts het topje van de ijsberg als het gaat om privilege escalation-apps. Duik diep in de complexe wereld door te kijken naar de verschillen tussen su, sudo en sudo -s.
Afbeelding tegoed: Xavier Cee via Unsplash . Alle wijzigingen en screenshots door Ramces Red.
Geef een reactie