Arkisto ajaksi 'Linux Security "luokkaan

Breaking Out ​​Of sudo Shell

18 elokuu 2009

Olen ollut tarkoitus kirjoittaa tämä ylös jonkin aikaa, mutta oli viesti mennä yhdellä SecurityFocuksella postituslistoille, jotka motivoivat minua asiat valmiiksi. Post kysyi: "Miten rajoittaa sudo joten käyttäjä ei voi poistaa koko kovalevy?". Lyhyt vastaus on, että on äärimmäisen vaikeaa.

Sudo on Security Tool käytetään UNIX-ja Linux-maailmassa. Se sallii järjestelmänvalvoja voi rajoittaa pääsyä korkean tason komennot. Se eroaa su-komennon siinä SU välittömästi antaa käyttäjälle juuritasolla pääsy. Sudo mahdollistaa Administrator hienosäätää joka root-komentoja voidaan tosiasiassa käyttää. Lisäksi sudo luo kirjausketjun kaikista teloitettiin komentoja.

Ongelma sudo on, että se ei ole näkyvyyttä, kun työkalu mahdollistaa komentotulkin olla poikinut. Tämä tarkoittaa käyttäjä voi huonosti järjestelmään ja tuottaa kirjausketju, joka saa sen näyttämään he ole tehneet mitään väärää.

Kokeile itse

Aion opastaa esimerkiksi jotta voit kokea, mitä minä tarkoitan. Tarvitset Linux tähän. Jos sinulla ei ole yhdessä kätevässä, perääntyä pitäisi toimia ihan hyvin. Testausjärjestelmän Käytän perustuu Fedora mutta ne ovat melko samanlaisia.

Vaihe 1: Lisää itsesi käyttäjät ryhmään

Käytä haluamallasi tekstieditorilla muokata / etc / group tiedostoa. Etsi "käyttäjien" ryhmää ja lisää tilin nimi. Tässä esimerkissä olen lisännyt tilin nimi "cbrenton".

käyttäjät: x: 100: cbrenton

Vaihe # 2: Luo sudousers merkintä

Seuraavaksi meidän täytyy muokata / etc / sudoers tiedosto määritellä, mitä käyttäjät ryhmä on sallittua tehdä. Meidän on käytettävä visudo tähän, joka on tekstieditori perustuu vi editorilla . Jos olet tyytyväinen VI, kirjoita käsky "visudo" ja lisäämällä seuraava rivi tiedoston loppuun:

% Käyttäjät ALL = / usr / bin / vähemmän

Jos et tiedä VI, minä annan sinulle tarkan komentoja. Muistan kaiken kirjainkoko:

visudo

G

O <- pientä O

% Käyttäjät ALL = / usr / bin / vähemmän

<Esc> <Esc>

: WQ

Vaihe 3: Monitor sudo toiminta

Avaa toinen terminaali ikkuna ja käyttää "su -" olettaa pääkäyttäjän oikeudet. Kirjoita komento:

tail-f / var / log / secure

Tämän ansiosta voimme seurata kaikkia sudo toimintaa.

Vaihe 4: Suorita sudo komento

Back ensimmäisellä pääteikkunassa kirjoita komento:

sudo vähemmän / etc / hosts

Sinulta kysytään salasanaa (salasana, ei root salasanan). Kun kirjoitat salasanan sinun pitäisi nähdä sisällön / etc / hosts. Toisessa pääteikkuna sinun pitäisi nyt lokitapahtuman seuraavanlainen:

18 elokuu 16:07:58 Fubar sudo: cbrenton: TTY = pts / 4; PWD = / home / cbrenton; user = root; COMMAND = / usr / bin / vähemmän / etc / hosts

Joten voimme nähdä päivämäärä / aika, joka teloitettiin komentoa, missä terminaalissa he olivat, mitä hakemiston he olivat, mitä oikeuksia taso he käyttivät, ja mitä komento he teloittivat lukien komentorivivalitsimia (tässä tapauksessa tiedostomäärityksen) . Toistaiseksi kaikki hyvin.

Vaihe 5: Bust kuori

Ensimmäisessä pääteikkuna (käynnissä vähemmän komento) kirjoittaa:

! <enter>

Sinun pitäisi nyt tarkastella juuri komentokehotteeseen. Voit tarkistaa Olet itse asiassa juuri, kirjoita komento:

whoami

Huomaa, että kirjoittamalla komento "whoami" ei tuottanut turvallisuutta lokitapahtuman. Toisin sanoen, kun me poiki komentoliittymä vähemmän komento, voimme tehdä mitä haluamme ja sudo ei loki sitä.

Vaihe 6: Ylimääräisiä tarkastuskäyntejä

Ensimmäisessä pääteikkuna jossa "vähemmän" on taustalla, kirjoita komento:

Top

Tämä tulostaa tilastoja käynnissä järjestelmässä.

Toisessa pääteikkuna Huom terminaalin käytössä. Yllä olevassa esimerkissä lokimerkintä terminaali on "TTY = pts / 4" mutta sinun voi olla erilainen. Tehdä merkintä terminaaliin. Nyt tässä toisessa ikkunassa painamalla:

<CTRL>-C

tappaa häntä komento. Nyt komento:

ps ax | grep 'pts / 4 "

Vaihtaminen "pts / 4" mitä terminaali nimi muistiin. Sinun tulisi saada lähtö seuraavanlainen:

17330 pts / 4 Ss 00:00 bash

18392 pts / 4 S 0:00 vähemmän / etc / hosts

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

18432 pts / 4 S + 0:00 alkuun

Tämä kertoo, että meillä on kaksi kuoret käynnissä että päätelaitteet. Ensimmäinen tutkii hosts-tiedoston ja toinen on käynnissä alkuun komennon. Joten järjestelmä ei itse nähdä, että olemme leikkimisestä sisällä toinen kuori, sen vain, että sudo ei voi kirjautua siihen.

Jotkut muut juurihakemistossa komennot voit kokeilla että ei haittaa mitään:

iptables-L

ifconfig

lsof-i

Kun olet vakuuttunut sinulla on täydet rootin salasanaa, palaa takaisin ja tarkista loki tarkistaa, että sudo ei ole kirjautunut mitään:

tail / var / log / secure

Kun olet tehnyt Shellin ensimmäisen pääteikkunaa kirjoita:

poistuminen

q

Mitä olemme oppineet?

Olemme oppineet, että emme voi sallia käyttäjien täydet sudo-järjestelmä ja todella ylläpitää kirjausketju, mitä he tekevät. Pääsy on rajattu työkaluja, jotka eivät tue vetoamalla kuori. Jos olemme epävarmoja, sen yksinkertainen asia tarkistaa man-sivuilta. Kokeile tätä:

mies vähemmän

/

kuori

Komento "man vähemmän" tuo manuaalinen käyttämästä "vähemmän" komento. Painamalla kenoviiva näppäin tuo hakutoiminto. Kun kirjoitat sanan "kuori" ja paina Enter-näppäintä, mies hyppää ensimmäisen oikeusasteen merkkijonon "kuori" ja korostetaan jokaisen oikeusasteen. Huom osassa mies hyppäsi kuvataan, miten vähemmän voi vedota kuori. Nyt tiedämme, emme voi sallia sudo-komennon "vähemmän". Parempi vaihtoehto voi olla komento "kissa", joka ei tue vetoamalla kuori.

Toinen mahdollisuus on yksinkertaisesti käyttää eri työkalua. Esimerkiksi työkalu OP oli suunniteltu erityisesti tukemaan joitakin turvallisuuden puutteita sudo, mukaan lukien kyky valvoa shell.

Exec Yhteenveto

Sudo on suuri turvallisuus työkalulla käytät sitä viisaasti. Yksi yleisimmistä virheistä on sudo käyttää sitä sallia pääsyn kaikkiin juuritasolle työkaluja. Sudo voi luoda tehokas kirjausketju, mutta vain jos se on rajoitettu työkaluja joilla ei ole shell-ominaisuus.