Ég er rót. Að skilja Linux OS Privilege Escalation

Ég eyddi fyrsta ársfjórðungi 2020 í að undirbúa mig fyrir OSCP prófið. Upplýsingaleit á Google og margar „blindar“ tilraunir tóku allan frítímann minn. Það reyndist sérstaklega erfitt að átta sig á aðferðum til að auka sérréttindi. PWK námskeiðið leggur mikla áherslu á þetta efni, en aðferðafræðilegt efni er alltaf ekki nóg. Það er mikið af handbókum á netinu með gagnlegum skipunum, en ég er ekki fylgjandi því að fylgja ráðleggingunum í blindni án þess að skilja hvert þetta leiðir.

Mig langar að deila með ykkur því sem mér tókst að læra við undirbúning og árangursríkan prófkjör (þar á meðal reglubundnar árásir á Hack The Box). Ég fann fyrir djúpri þakklæti fyrir hvern einasta bita af upplýsingum sem hjálpuðu mér að ganga Reyndu erfiðara leiðina meira meðvitað, nú er tími minn til að gefa til baka til samfélagsins.

Ég vil gefa þér leiðbeiningar um stigmögnun forréttinda í OS Linux, sem inniheldur greiningu á algengustu vektorunum og tengdum eiginleikum sem þú munt örugglega þurfa. Oft eru forréttindi stigmögnunarkerfin sjálf frekar einföld, erfiðleikar koma upp við uppbyggingu og greiningu upplýsinga. Þess vegna ákvað ég að byrja á "skoðunarferð" og skoða síðan hvern vektor í sérstakri grein. Ég vona að ég muni spara þér tíma til að kynna þér efnið.

Ég er rót. Að skilja Linux OS Privilege Escalation

Svo hvers vegna er forréttindaaukning jafnvel möguleg árið 2020 ef aðferðirnar hafa verið vel þekktar í mjög langan tíma? Reyndar, ef notandinn meðhöndlar kerfið á réttan hátt, er í raun ekki hægt að auka réttindi í því. Helsta alþjóðlega vandamálið sem gefur tilefni til slíkra tækifæra er óörugg stilling. Tilvist gamaldags hugbúnaðarútgáfur sem innihalda veikleika í kerfinu er einnig sérstakt tilvik um óörugga uppsetningu.

Forréttindi stigmögnun með óöruggri uppsetningu

Fyrst af öllu skulum við takast á við óörugga uppsetningu. Við skulum byrja með Upplýsingatæknifræðingar nota oft handbækur og úrræði eins og stackoverflow, sem margar hverjar innihalda óöruggar skipanir og stillingar. Sláandi dæmi er fréttirnar að kóðinn sem mest var afritaður úr stackoverflow innihélt villu. Reyndur stjórnandi mun sjá jambið, en þetta er í kjörheimi. Jafnvel hæfir fagmenn aukið vinnuálag fær um að gera mistök. Ímyndaðu þér að stjórnandinn sé að undirbúa og samþykkja skjöl fyrir næsta útboð, um leið að kafa ofan í nýju tæknina sem verður kynnt á næsta ársfjórðungi, á sama tíma og hann leysi notendastuðningsverkefni reglulega. Og svo fær hann það verkefni að koma upp nokkrum sýndarvélum á fljótlegan hátt og útfæra þjónustu á þeim. Hvað finnst þér, hverjar eru líkurnar á því að admin taki einfaldlega ekki eftir jambinu? Þá breytast sérfræðingar en hækjur eru eftir á meðan fyrirtæki leitast alltaf við að lágmarka kostnað, þar á meðal fyrir upplýsingatæknisérfræðinga.

Gervi skel og jailbreak

Kerfisskel sem fæst á framleiðslustiginu er oft takmörkuð, sérstaklega ef þú fékkst hana með því að hakka netþjónsnotanda. Til dæmis geta skeljatakmarkanir komið í veg fyrir að þú notir sudo skipunina með villu:

sudo: no tty present and no askpass program specified

Eftir að hafa fengið skel mæli ég með því að búa til fullgildan terminal, til dæmis með Python.

python -c 'import pty;pty.spawn("/bin/bash")'

Þú spyrð: "Af hverju þarf ég þúsund skipanir, ef ég get notað eina, til dæmis til að flytja skrár?" Staðreyndin er sú að kerfi eru uppsett á annan hátt, á næsta gestgjafa gæti Python ekki verið sett upp, en Perl gæti verið tiltækt. Kunnáttan er að geta gert kunnuglega hluti í kerfinu án kunnuglegra verkfæra. Hægt er að finna heildarlista yfir eiginleika hér.

Hægt er að fá lága forréttindaskel með því að nota lið 1 и lið 2 (á óvart jafnvel GIMP).

Skoða skipanaferil

Linux safnar sögu yfir allar framkvæmdar skipanir í skrá ~ / .bash_history. Ef þjónninn er í virkri notkun og ferill hans er ekki hreinsaður, eru góðar líkur á að skilríkin finnist í þessari skrá. Það er banally óþægilegt að hreinsa söguna. Ef stjórnandinn neyðist til að velja tíu stiga skipanir í gegnum , þá er auðvitað þægilegra fyrir hann að kalla þessa skipun úr sögunni en að slá hana inn aftur. Auk þess vita margir ekki um þetta "hakk". Ef það eru aðrar skeljar eins og Zsh eða Fish í kerfinu, hafa þær sína eigin sögu. Til að birta sögu skipana í hvaða skel sem er, sláðu bara inn skipanaferilinn.

cat ~/.bash_history
cat ~/.mysql_history
cat ~/.nano_history
cat ~/.php_history
cat ~/.atftp_history

Það er sameiginleg hýsing, þar sem þjónninn er notaður til að hýsa nokkrar síður. Venjulega, með þessari uppsetningu, hefur hver auðlind sinn eigin notanda með sérstakri heimaskrá og sýndarhýsil. Þannig að ef rangt er stillt geturðu fundið .bash_history skrána í rótarskrá veftilföngsins.

Að finna lykilorð í skráarkerfinu og árásir á aðliggjandi kerfi

Stillingarskrár fyrir ýmsar þjónustur gætu verið læsilegar fyrir núverandi notanda. Í þeim er hægt að finna skilríki í skýrum texta - lykilorð til að komast í gagnagrunninn eða tengda þjónustu. Sama lykilorð er hægt að nota bæði til að fá aðgang að gagnagrunninum og til að heimila rótarnotanda (skilríkismönnun).
Það kemur fyrir að skilríkin sem fundust tilheyra þjónustu á öðrum vélum. Þróun árásar á innviðina í gegnum hýsil sem er í hættu er ekki verri en hagnýting annarra gestgjafa. Aðliggjandi kerfi er einnig hægt að finna með því að fletta upp IP tölum í skráarkerfinu.

grep -lRi "password" /home /var/www /var/log 2>/dev/null | sort | uniq #Find string password (no cs) in those directories
grep -a -R -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' /var/log/ 2>/dev/null | sort -u | uniq #IPs inside logs

Ef gestgjafinn sem er í hættu er með vefforrit aðgengilegt af internetinu er betra að útiloka annála þess frá leitinni að IP-tölum. Ólíklegt er að heimilisföng auðlindanotenda af internetinu gagnist okkur, en heimilisföng innra netsins (172.16.0.0/12, 192.168.0.0/16, 10.0.0.0/8) og hvert þau fara, miðað við logs, gæti verið áhugavert.

Súdó

Sudo skipunin gerir notandanum kleift að framkvæma skipun í tengslum við rót með eigin lykilorði eða án þess að nota það yfirleitt. Margar aðgerðir í Linux krefjast rótarréttinda, en að keyra sem rót er talin mjög slæm framkvæmd. Þess í stað er betra að beita sértæku leyfi til að framkvæma skipanir í rótarsamhengi. Hins vegar er hægt að nota mörg Linux verkfæri, þar á meðal venjuleg eins og vi, til að auka réttindi á lögmætan hátt. Til að finna réttu leiðina mæli ég með að skoða hér.

Það fyrsta sem þarf að gera eftir að hafa fengið aðgang að kerfinu er að keyra sudo -l skipunina. Það mun sýna leyfi til að nota sudo skipunina. Ef notandi án lykilorðs er fenginn (eins og apache eða www-data) er ólíklegt að auka réttindi sudo forréttinda. Þegar sudo er notað mun kerfið biðja um lykilorð. Að nota passwd skipunina til að setja lykilorð mun heldur ekki virka, það mun biðja um núverandi lykilorð notanda. En ef sudo er enn í boði, þá þarftu í raun að leita að:

  • hvaða túlk sem er, hver sem er getur sprottið skel (PHP, Python, Perl);
  • hvaða textaritlar sem er (vim, vi, nano);
  • allir áhorfendur (minna, meira);
  • allir möguleikar á að vinna með skráarkerfið (cp, mv);
  • verkfæri sem hafa úttak í bash, annað hvort gagnvirkt eða sem keyrsluskipun (awk, find, nmap, tcpdump, man, vi, vim, ansible).

Suid/Sgid

Það eru margar handbækur á netinu sem ráðleggja að byggja allar suid / sgid skipanir, en sjaldgæf grein gefur upplýsingar um hvað á að gera við þessi forrit. Hægt er að finna valkosti til að auka forréttindi sem taka ekki tillit til notkunar hetjudáða hér. Einnig hefur fjöldi keyranlegra skráa sérstaka veikleika fyrir stýrikerfisútgáfuna, til dæmis.

Í hugsjónum heimi ættir þú að keyra alla uppsetta pakka í gegnum að minnsta kosti searchsploit. Í reynd ætti þetta að vera gert með vinsælustu forritunum eins og sudo. Það er líka alltaf möguleiki að nota og styðja við þróun sjálfvirkra verkfæra sem munu varpa ljósi á áhugaverða, frá sjónarhóli forréttindastigmögnunar, executables með suid/sgid bita stilltum. Ég mun gefa lista yfir slík verkfæri í samsvarandi hluta greinarinnar.

Skrifanleg forskrift keyrð af Cron eða Init í rótarsamhengi

Cron störf geta keyrt í samhengi mismunandi notenda, þar á meðal rót. Ef það er verkefni í cron með tengil á keyrsluskrá, og það er tiltækt fyrir þig til að skrifa, geturðu auðveldlega skipt því út fyrir illgjarnt verkefni og framkvæmt forréttindi stigmögnun. Á sama tíma, sjálfgefið, eru skrár með cron verkefni tiltækar til að lesa fyrir hvaða notanda sem er.

ls -la /etc/cron.d  # show cron jobs 

Svipað er uppi á teningnum með init. Munurinn er sá að verkefni í cron eru framkvæmd reglulega og í init - við ræsingu kerfisins. Til notkunar þarftu að endurræsa kerfið á meðan sumar þjónusturnar gætu ekki hækkað (ef þær voru ekki skráðar í sjálfvirkri hleðslu).

ls -la /etc/init.d/  # show init scripts 

Þú getur líka leitað að skrám sem allir notendur geta skrifað.

find / -perm -2 -type f 2>/dev/null # find world writable files

Aðferðin er nokkuð vel þekkt, reyndir kerfisstjórar nota chmod skipunina vandlega. Hins vegar, á vefnum, lýsa langflestar handbækur stillingu hámarksréttinda. „Láttu það bara virka“ nálgun óreyndra kerfisstjóra skapar tækifæri til að auka forréttindi í grundvallaratriðum. Ef mögulegt er er best að leita í skipanasögunni fyrir óörugga notkun á chmod.

chmod +w /path 
chmod 777 /path

Að fá skel aðgang fyrir aðra notendur

Við skoðum notendalistann í /etc/passwd. Við gefum gaum að þeim sem eiga skel. Þú getur misnotað þessa notendur - það er mögulegt að í gegnum notandann sem myndast muntu að lokum geta aukið réttindi.

Til að bæta öryggi mæli ég með því að þú fylgir alltaf meginreglunni um minnstu forréttindi. Það er líka skynsamlegt að taka tíma til að athuga óöruggar stillingar sem gætu verið eftir eftir bilanaleit - þetta er "tæknileg skylda" kerfisstjórans.

Sjálfskrifaður kóða

Það er þess virði að skoða executables í heimamöppu notandans og vefþjónsins (/var/www/ nema annað sé tekið fram). Þessar skrár geta reynst algjörlega óörugg lausn og innihalda ótrúlegar hækjur. Auðvitað, ef þú ert með einhverja ramma í vefþjónsskránni þinni, þá er ekki skynsamlegt að leita að núll-dagur í henni sem hluta af pentest, en það er mælt með því að finna og rannsaka sérsniðnar breytingar, viðbætur og íhluti.

Til að auka öryggi er betra að forðast að nota skilríki í sjálfskrifuðum skriftum, sem og hugsanlega hættulega virkni, eins og að lesa /etc/shadow eða vinna með id_rsa, ef mögulegt er.

Aukning forréttinda með hagnýtingu á veikleikum

Áður en reynt er að hækka forréttindi með misnotkun er mikilvægt að skilja flytja skrár til miðhýsilsins. Til viðbótar við venjulega verkfæri eins og ssh, ftp, http (wget, curl), er til heild "dýragarður" af möguleikum.

Til að bæta öryggi kerfisins þíns skaltu uppfæra það reglulega í það nýjasta stöðugt útgáfur, og reyndu líka að nota dreifingar sem eru hannaðar fyrir Enterprise. Annars, sjaldan, en það eru aðstæður þegar viðeigandi uppfærsla gerir kerfið ónothæft.

Að nýta sér þjónustu sem keyrir í samhengi við rótarnotandann

Sumar Linux þjónustur keyra sem forréttinda notendarót. Þær má finna með því að nota ps aux | grep rót. Í þessu tilviki getur verið að þjónustan sé ekki tilkynnt á vefnum og hún sé tiltæk á staðnum. Ef það hefur opinbera hetjudáð er hægt að nota þau á öruggan hátt: þjónustuhrun ef bilun er mun minna mikilvægt en OS hrun.

ps -aux | grep root # Linux

Farsælasta tilvikið getur talist rekstur tölvusnáða þjónustu í samhengi við rót notanda. Notkun SMB þjónustunnar veitir SYSTEM forréttindaaðgang á Windows kerfum (td í gegnum ms17-010). Hins vegar er þetta ekki algengt á Linux kerfum, svo þú getur eytt miklum tíma í að auka forréttindi.

Að nýta veikleika í Linux kjarna

Þetta er síðasta leiðin til að fara. Misheppnuð aðgerð getur leitt til kerfishruns og ef endurræst er, gætu sumar þjónustur (þar á meðal þær sem hægt var að fá upprunalegu skelina í gegnum) ekki hækkað. Það gerist að stjórnandinn gleymdi einfaldlega að nota systemctl enable skipunina. Auk þess mun það valda mikilli óánægju með vinnu þína ef ekki hefur verið samið um hagnýtingu.
Ef þú ákveður að nota heimildirnar frá exploitdb, vertu viss um að lesa athugasemdirnar í upphafi handritsins. Þar segir meðal annars venjulega hvernig eigi að setja saman þessa misnotkun rétt. Ef þú varst of latur eða þurftir „í gær“ vegna fresta, geturðu leitað að geymslum með þegar samanteknum hetjudáðum, til dæmis. Hins vegar ætti að skilja að í þessu tilfelli færðu svín í pota. Á hinn bóginn, ef forritari skildi við bætið hvernig tölva virkar og hugbúnaðinn sem hún notar, hefði hann ekki skrifað kóðalínu á öllu lífi sínu.

cat /proc/version
uname -a
searchsploit "Linux Kernel" 

Metasploit

Til þess að ná og meðhöndla tengingu er alltaf betra að nota exploit/multi/handler eininguna. Aðalatriðið er að stilla rétta farmload, til dæmis generic/shell/reverce_tcp eða generic/shell/bind_tcp. Skelina sem fæst í Metasploit er hægt að uppfæra í Meterpreter með því að nota post/multi/manage/shell_to_meterpreter eininguna. Með Meterpreter geturðu sjálfvirkt ferlið eftir nýtingu. Til dæmis, post/multi/recon/local_exploit_suggester einingin athugar vettvang, arkitektúr og hagnýtanlegar einingar og stingur upp á Metasploit einingar til að auka forréttindi á markkerfinu. Þökk sé Meterpreter kemur forréttindastigmögnun stundum niður á að keyra rétta einingu, en að hakka án þess að skilja hvað er að gerast undir hettunni er ekki satt (þú verður samt að skrifa skýrslu).

Verkfæri

Verkfæri til að gera sjálfvirkan staðbundna söfnun upplýsinga spara þér mikla fyrirhöfn og tíma, en geta ein og sér ekki greint að fullu slóðina til að auka forréttindi, sérstaklega þegar um er að ræða veikleika í kjarnanum. Sjálfvirkniverkfæri munu framkvæma allar nauðsynlegar skipanir fyrir þig til að safna upplýsingum um kerfið, en það er líka mikilvægt að geta greina móttekin gögn. Ég vona að greinin mín muni nýtast þér í þessu. Auðvitað eru mun fleiri tæki en ég mun telja upp hér að neðan, en þau gera öll um það sama - þetta er meira smekksatriði.

Línubaunir

Nokkuð ferskt tæki, fyrsta skuldbindingin er dagsett í janúar 2019. Í augnablikinu er uppáhalds hljóðfærið mitt. Niðurstaðan er sú að hún dregur fram áhugaverðustu forréttindastigmögnunarvigrana. Sammála, það er þægilegra að fá sérfræðimat á þessu stigi en að flokka einhæf hrá gögn.

LinEnum

Annað uppáhalds tólið mitt, það safnar einnig og skipuleggur gögnin sem berast vegna staðbundinnar upptalningar.

linux-exploit-suggester (1,2)

Þessi misnotkun mun greina kerfið með tilliti til hentugra aðstæðna fyrir hagnýtingu. Reyndar mun það vinna verk eins og Metasploit local_exploit_suggester einingin, en mun bjóða upp á tengla á exploit-db frumkóða frekar en Metasploit einingar.

Linuxprivchecker

Þetta handrit mun safna og skipuleggja eftir köflum miklu magni af upplýsingum sem geta verið gagnlegar til að mynda forréttindi stigvaxandi vektor.

Annað skipti mun ég útskýra það nánar Linux forréttindi stigmögnun með suid/sgid.

Heimild: www.habr.com

Bæta við athugasemd