Breaking Out Of A sudo Shell

18 august 2009 av Chris igjen et svar »

Jeg har vært meningen å skrive dette opp for en stund, men hadde et innlegg går forbi på en av SecurityFocus postlister som motiverte meg til å få det gjort. Innlegget spurte: "Hvordan begrenser du sudo slik at en bruker ikke kan slette hele harddisken?". Det korte svaret er, det er ekstremt vanskelig.

Sudo er en sikkerhets verktøy som brukes i UNIX-og Linux-verden. Det tillater administrator for å begrense tilgangen til høyt nivå kommandoer. Den skiller seg fra su kommandoen i det su umiddelbart gir brukeren rotnivået tilgang. Sudo tillater administrator å finjustere som roten kommandoer faktisk kan nås. I tillegg skaper sudo et revisjonsspor for alle utførte kommandoer.

Problemet med sudo er at det har ingen sikt når et verktøy tillater et kommandoskall å være gytt. Dette betyr at en bruker kan oppføre seg dårlig på systemet mens genererer en revisjonsspor som gjør det synes de har gjort noe galt.

Prøv det selv

Jeg skal lede deg gjennom et eksempel slik at du kan oppleve akkurat hva jeg mener. Du trenger en Linux-system for dette. Hvis du ikke har en hendig, Backtrack burde fungere helt fint. Testen systemet jeg bruker er basert på Fedora men de er ganske like.

Step # 1: Legg deg til brukerne gruppa

Bruk din favoritt tekst editor for å redigere / etc / group-fil. Se etter "brukere" gruppa og legge kontonavnet. I dette eksempelet har jeg lagt inn kontonavnet "cbrenton".

brukere: x: 100: cbrenton

Step # 2: Lag en sudousers oppføring

Neste vi trenger for å redigere / etc / sudoers fil for å definere hva brukerne gruppa er tillatt å gjøre. Vi må bruke visudo for dette, som er en tekst-editor basert på det vi editor . Hvis du er komfortabel med VI, skriver kommandoen "visudo" og legge denne linjen til slutten av filen:

% Brukere ALL = / usr / bin / mindre

Hvis du ikke vet vi, vil jeg gi deg nøyaktig kommandoer. Husk at alt er store og små bokstaver:

visudo

G

o <- liten bokstav O

% Brukere ALL = / usr / bin / mindre

<Esc> <Esc>

: Wq

Trinn 3: Monitor sudo aktivitet

Åpne en annen terminal vindu og bruke "su -" for å anta root privilegier. Skriv inn kommandoen:

tail-f / var / log / secure

Dette vil tillate oss å overvåke alle sudo aktivitet.

Trinn 4: Kjør en sudo kommando

Tilbake i den første terminalvinduet skriver kommandoen:

sudo mindre / etc / hosts

Du vil bli bedt om passord (passordet ditt, ikke root-passordet). Når du skriver inn passordet ditt bør du se innholdet i / etc / hosts. I den andre terminal-vinduet skal du nå ha en logg oppføring lik følgende:

18 august 16:07:58 Fubar sudo: cbrenton: TTY = pts / 4; PWD = / home / cbrenton; USER = root; command = / usr / bin / mindre / etc / hosts

Så vi kan se dato / klokkeslett, hvem som utførte kommandoen, som terminal de var på, hvilken katalog de var i, hvilke rettigheter nivå de brukte, og hva kommandoen de henrettet inkludert eventuelle kommandolinjebryterne (i dette tilfellet en fil spesifikasjon) . Så langt, så bra.

Trinn 5: Bust et skall

I det første terminal vinduet (kjører mindre kommandoen) skriver:

! <Enter>

Du skal nå se på en rot ledetekst. For å bekrefte at du er faktisk rot, skriver kommandoen:

whoami

Merk at å skrive i kommandoen "whoami" ikke genererer en sikkerhet loggoppføring. Med andre ord, når vi gytt en kommando shell med mindre kommandoen, kan vi gjøre alt vi ønsker og sudo vil ikke logge den.

Steg 6: Ekstra verifikasjon

I det første terminal vinduet der "mindre" er i bakgrunnen, skriver kommandoen:

topp

Dette vil skrive ut statistikk om kjørende system.

I den andre terminalvinduet oppmerksom terminalen i bruk. I eksempelet ovenfor loggoppføring terminalen er "TTY = pts / 4" men din kan være forskjellig. Lag et notat av terminalen. Nå, i denne andre vinduet trykker du på:

<CTRL>-C

å drepe halen kommandoen. Nå kjører kommandoen:

ps ax | grep 'pts / 4'

Bytte "pts / 4" med hva terminal navnet du noterte. Du skal motta resultat omtrent som følgende:

17330 pts / 4 Ss 00:00 bash

18392 pts / 4 S 0:00 mindre / etc / hosts

18410 pts / 4 S 0:00 / bin / bash

18432 pts / 4 S + 00:00 topp

Dette forteller oss at vi har to skall som kjører på som terminal. Den første ser på hosts-filen mens den andre kjører den øverste kommandoen. Slik at systemet ser faktisk at vi spiller rundt i andre skall, kan det bare at sudo ikke logge den.

Noen andre rotnivå kommandoer du kan prøve som ikke vil skade noe:

iptables-L

ifconfig

lsof-i

Når du er overbevist om at du har full root-tilgang, gå tilbake og sjekke loggen for å bekrefte at sudo er ikke logget noe:

tail / var / log / secure

Når du er ferdig med skallet i første terminal vinduet, skriver:

exit

q

Hva har vi lært?

Vi har lært at vi ikke kan tillate brukerne å ha full sudo tilgang til systemet og faktisk opprettholde et revisjonsspor for hva de gjør. Access har å være begrenset til verktøy som ikke støtter påkaller et skall. Hvis vi er usikker, er det en enkel sak å kontrollere mannen sidene. Prøv dette:

mann mindre

/

shell

Kommandoen "mann mindre" bringer opp i håndboken for å bruke "mindre" kommandoen. Ved å trykke på backslash nøkkelen bringer opp søkefunksjonen. Når vi skriver ordet "shell" og trykk på enter-tasten, man hopper til den første forekomsten av strengen "skall" og høydepunkter hvert tilfelle. Merk avsnittet mannen hoppet til beskriver hvordan mindre kan påberope seg et skall. Nå vet vi at vi ikke kan tillate sudo tilgang til kommandoen "mindre". Et bedre alternativ kan kommandoen "cat" som ikke støtter påkaller et skall.

En annen mulighet er å bare bruke et annet verktøy. For eksempel verktøyet op ble spesielt utviklet for å ta opp noen av sikkerheten mangler i sudo, inkludert muligheten til å kontrollere shell tilgang.

Exec Summary

Sudo er en stor trygghet verktøy forutsatt at du bruker den klokt. En av de vanligste feilene gjøres med sudo bruker det for å gi tilgang til alle rotnivå verktøy. Sudo kan generere en effektiv revisjonsspor, men bare hvis det er begrenset til verktøy som ikke har skall evne.

Relaterte innlegg:

  1. Gytingen En CMD Prompt Fra MS Word eller Excel

Annonse

Legg igjen en kommentar