Es esmu sakne. Linux OS privilÄÄ£iju eskalÄcijas izpratne
2020. gada pirmo ceturksni pavadÄ«ju, gatavojoties OSCP eksÄmenam. InformÄcijas meklÄÅ”ana Google tÄ«klÄ un daudzi āakliā mÄÄ£inÄjumi aizÅÄma visu manu brÄ«vo laiku. ÄŖpaÅ”i grÅ«ti bija izprast privilÄÄ£iju palielinÄÅ”anas mehÄnismus. PWK kursÄ Å”ai tÄmai tiek pievÄrsta liela uzmanÄ«ba, taÄu ar mÄcÄ«bu materiÄliem nekad nepietiek. InternetÄ ir daudz rokasgrÄmatu ar noderÄ«gÄm komandÄm, taÄu es neesmu cienÄ«tÄjs akli sekot ieteikumiem, nesaprotot, pie kÄ tas novedÄ«s.
VÄlos dalÄ«ties ar jums tajÄ, ko uzzinÄju, gatavojoties eksÄmenam un sekmÄ«gi nokÄrtojot eksÄmenu (ieskaitot periodiskus apmeklÄjumus Hack The Box). Es izjutu spÄcÄ«gu pateicÄ«bas sajÅ«tu par katru informÄcijas daļiÅu, kas man palÄ«dzÄja apzinÄtÄk iet āIzmÄÄ£iniet grÅ«tÄkā ceļu. Tagad ir mans laiks atdot kopienai.
Es vÄlos sniegt jums rokasgrÄmatu par to, kÄ palielinÄt privilÄÄ£ijas operÄtÄjsistÄmÄ OS Linux, kurÄ ir ietverta visbiežÄk sastopamo vektoru un saistÄ«to funkciju analÄ«ze, kas jums noteikti noderÄs. Bieži vien paÅ”i privilÄÄ£iju palielinÄÅ”anas mehÄnismi ir diezgan vienkÄrÅ”i, grÅ«tÄ«bas rodas informÄcijas strukturÄÅ”anÄ un analÄ«zÄ. TÄpÄc es nolÄmu sÄkt ar āapskates ekskursijuā un pÄc tam aplÅ«kot katru vektoru atseviÅ”Ä·Ä rakstÄ. Ceru, ka ietaupÄ«Å”u kÄdu laiku tÄmas izpÄtei.
TÄtad, kÄpÄc privilÄÄ£iju eskalÄcija ir pat iespÄjama 2020. gadÄ, ja metodes ir bijuÅ”as labi zinÄmas ļoti ilgu laiku? Faktiski, ja lietotÄjs pareizi rÄ«kojas ar sistÄmu, tajÄ patieÅ”Äm nebÅ«s iespÄjams palielinÄt privilÄÄ£ijas. GalvenÄ globÄlÄ problÄma, kas rada Å”Ädas iespÄjas, ir nedroÅ”a konfigurÄcija. ÄŖpaÅ”s nedroÅ”as konfigurÄcijas gadÄ«jums ir arÄ« novecojuÅ”u programmatÅ«ras versiju klÄtbÅ«tne, kas satur sistÄmas ievainojamÄ«bas.
PrivilÄÄ£iju eskalÄcija, izmantojot nedroÅ”u konfigurÄciju
PirmkÄrt, tiksim galÄ ar nedroÅ”u konfigurÄciju. SÄksim ar IT speciÄlisti bieži izmanto rokasgrÄmatas un resursus, piemÄram, stackoverflow, no kurÄm daudzas satur nedroÅ”as komandas un konfigurÄcijas. Spilgts piemÄrs - ziÅas ka kods, kas visvairÄk kopÄts no stackoverflow, satur kļūdu. PieredzÄjis administrators redzÄs aploksni, taÄu tas ir ideÄlÄ pasaulÄ. Pat kompetenti speciÄlisti palielinÄta darba slodze spÄj kļūdÄ«ties. IedomÄjieties, ka administrators gatavo un saskaÅo dokumentÄciju nÄkamajam konkursam, vienlaikus iedziļinoties jaunajÄ tehnoloÄ£ijÄ, ko paredzÄts ieviest nÄkamajÄ ceturksnÄ«, vienlaikus periodiski risinot lietotÄju atbalsta problÄmas. Un tad viÅam tiek dots uzdevums Ätri iestatÄ«t pÄris virtuÄlÄs maŔīnas un ieviest tajÄs pakalpojumus. KÄda, jÅ«suprÄt, ir iespÄjamÄ«ba, ka admins vienkÄrÅ”i nepamanÄ«s jamb? Tad mainÄs speciÄlisti, bet kruÄ·i paliek, savukÄrt uzÅÄmumi vienmÄr cenÅ”as samazinÄt izmaksas, tostarp IT personÄlam.
PseidoÄaula un jailbreak
SistÄmas Äaula, kas iegÅ«ta ekspluatÄcijas posmÄ, bieži ir ierobežota, it Ä«paÅ”i, ja to ieguvÄt, uzlaužot tÄ«mekļa servera lietotÄju. PiemÄram, Äaulas ierobežojumi var neļaut palaist komandu sudo, radot kļūdu:
sudo: no tty present and no askpass program specified
Kad jums ir apvalks, iesaku izveidot pilnvÄrtÄ«gu terminÄli, piemÄram, izmantojot Python.
python -c 'import pty;pty.spawn("/bin/bash")'
JÅ«s varat jautÄt: "KÄpÄc man ir vajadzÄ«gas tÅ«kstoÅ” komandu, ja es varu izmantot vienu, piemÄram, failu pÄrsÅ«tÄ«Å”anai?" Fakts ir tÄds, ka sistÄmas ir konfigurÄtas atŔķirÄ«gi; konkrÄtajÄ resursdatorÄ var nebÅ«t instalÄts Python, bet tajÄ var bÅ«t Perl. Prasme ir spÄt veikt pazÄ«stamas lietas sistÄmÄ bez pazÄ«stamiem rÄ«kiem. Pilnu funkciju sarakstu var atrast Å”eit.
Zemu priviliÄ£Ätu apvalku var iegÅ«t, izmantojot komandas 1 Šø komandas 2 (pÄrsteidzoÅ”i, pat GIMP).
SkatÄ«t komandu vÄsturi
Linux apkopo visu failÄ izpildÄ«to komandu vÄsturi ~ / .bash_history. Ja serveris tiek aktÄ«vi izmantots un tÄ vÄsture netiek notÄ«rÄ«ta, pastÄv liela varbÅ«tÄ«ba, ka Å”ajÄ failÄ tiks atrasti akreditÄcijas dati. VÄstures dzÄÅ”ana ir vienkÄrÅ”i neÄrta. Ja administrators ir spiests izvÄlÄties desmit stÄvu komandas caur , viÅam, protams, bÅ«s ÄrtÄk izsaukt Å”o komandu no vÄstures, nevis ievadÄ«t to vÄlreiz. TurklÄt daudzi cilvÄki nezina par Å”o "uzlauÅ”anu". Ja sistÄmÄ ir alternatÄ«vi apvalki, piemÄram, Zsh vai Fish, tiem ir sava vÄsture. Lai parÄdÄ«tu komandu vÄsturi jebkurÄ ÄaulÄ, vienkÄrÅ”i ierakstiet komandu vÄsturi.
Ir dalÄ«ts hostings, kurÄ serveris tiek izmantots vairÄku vietÅu mitinÄÅ”anai. Parasti ar Å”o konfigurÄciju katram resursam ir savs lietotÄjs ar atseviŔķu mÄjas direktoriju un virtuÄlo resursdatoru. TÄtad, ja tas ir nepareizi konfigurÄts, .bash_history failu varat atrast tÄ«mekļa resursa saknes direktorijÄ.
Paroļu meklÄÅ”ana failu sistÄmÄ un uzbrukumi blakus sistÄmÄm
JÅ«su paÅ”reizÄjais lietotÄjs var lasÄ«t dažÄdu pakalpojumu konfigurÄcijas failus. Tajos jÅ«s varat atrast akreditÄcijas datus skaidrÄ tekstÄ - paroles, lai piekļūtu datu bÄzei vai saistÄ«tiem pakalpojumiem. To paÅ”u paroli var izmantot gan piekļuvei datu bÄzei, gan root lietotÄja autorizÄcijai (akreditÄcijas personÄls).
GadÄs, ka atrastie akreditÄcijas dati pieder pakalpojumiem citos saimniekdatoros. Uzbrukuma izveide infrastruktÅ«rai, izmantojot apdraudÄtu resursdatoru, nav sliktÄka nekÄ citu resursdatoru izmantoÅ”ana. Blakus esoÅ”Äs sistÄmas var atrast arÄ«, failu sistÄmÄ meklÄjot IP adreses.
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
Ja apdraudÄtajam resursdatoram ir tÄ«mekļa lietojumprogramma, kas pieejama no interneta, labÄk ir izslÄgt tÄs žurnÄlus no IP adreÅ”u meklÄÅ”anas. Diez vai mums noderÄs resursa lietotÄju adreses no interneta, taÄu iekÅ”ÄjÄ tÄ«kla adreses (172.16.0.0/12, 192.168.0.0/16, 10.0.0.0/8) un kurp tÄs dodas, spriežot pÄc žurnÄliem. , varÄtu interesÄt.
Sudo
Komanda sudo dod lietotÄjam iespÄju izpildÄ«t komandu saknes kontekstÄ, izmantojot savu paroli vai neizmantojot paroli vispÄr. DaudzÄm operÄcijÄm operÄtÄjsistÄmÄ Linux ir nepiecieÅ”amas root tiesÄ«bas, taÄu darbinÄÅ”ana kÄ root tiek uzskatÄ«ta par ļoti sliktu praksi. TÄ vietÄ labÄk ir piemÄrot selektÄ«vas atļaujas komandu izpildei saknes kontekstÄ. TomÄr daudzus Linux rÄ«kus, tostarp standarta rÄ«kus, piemÄram, vi, var izmantot, lai likumÄ«gÄ veidÄ palielinÄtu privilÄÄ£ijas. Lai atrastu piemÄrotu metodi, iesaku meklÄt Å”eit.
PirmÄ lieta, kas jums jÄdara, kad iegÅ«stat piekļuvi sistÄmai, ir palaist komandu sudo -l. Tas parÄdÄ«s atļauju izmantot sudo komandu. Ja tiek iegÅ«ts lietotÄjs bez paroles (piemÄram, apache vai www-data), privilÄÄ£iju eskalÄcijas vektors, izmantojot sudo, ir maz ticams. Lietojot sudo, sistÄma prasÄ«s paroli. JÅ«s arÄ« nevarÄsit iestatÄ«t paroli, izmantojot komandu passwd; tÄ prasÄ«s lietotÄja paÅ”reizÄjo paroli. Bet, ja sudo joprojÄm ir pieejams, tad bÅ«tÄ«bÄ jums ir jÄmeklÄ:
jebkuri tulki, ikviens var radÄ«t Äaulu (PHP, Python, Perl);
jebkuri teksta redaktori (vim, vi, nano);
jebkuri skatÄ«tÄji (mazÄk, vairÄk);
jebkura spÄja strÄdÄt ar failu sistÄmu (cp, mv);
RÄ«ki, kuru izvade ir bash, interaktÄ«va vai izpildÄma komanda (awk, find, nmap, tcpdump, man, vi, vim, ansible).
Suid/Sgid
InternetÄ ir daudz rokasgrÄmatu, kas iesaka apkopot visas suid/sgid komandas, taÄu retÄ rakstÄ ir sniegta informÄcija par to, ko darÄ«t ar Ŕīm programmÄm. Var atrast privilÄÄ£iju palielinÄÅ”anas iespÄjas, kas neÅem vÄrÄ Ä¼aunprÄtÄ«gu izmantoÅ”anu Å”eit. TurklÄt vairÄkiem izpildÄmiem failiem ir noteiktas OS versijas ievainojamÄ«bas, piemÄram.
IdeÄlÄ pasaulÄ jÅ«s palaist visas instalÄtÄs pakotnes, izmantojot vismaz searchsploit. PraksÄ tas jÄdara ar populÄrÄkajÄm programmÄm, piemÄram, sudo. VienmÄr ir arÄ« iespÄja izmantot un atbalstÄ«t automatizÄtu rÄ«ku izstrÄdi, kas no privilÄÄ£iju eskalÄcijas viedokļa izcels interesantus izpildÄmos failus ar iestatÄ«tajiem suid/sgid bitiem. Es sniegÅ”u Å”Ädu rÄ«ku sarakstu attiecÄ«gajÄ raksta sadaļÄ.
RakstÄmie skripti, kurus saknes kontekstÄ vada Cron vai Init
Cron darbus var palaist dažÄdos lietotÄju kontekstos, tostarp root. Ja cron uzdevums ir iestatÄ«ts ar saiti uz izpildÄmo failu un tas ir pieejams rakstÄ«Å”anai, to var viegli aizstÄt ar ļaunprÄtÄ«gu uzdevumu un privilÄÄ£iju eskalÄciju. TomÄr pÄc noklusÄjuma failus ar cron uzdevumiem var lasÄ«t jebkurÅ” lietotÄjs.
ls -la /etc/cron.d # show cron jobs
LÄ«dzÄ«ga situÄcija ir ar init. AtŔķirÄ«ba ir tÄda, ka uzdevumi cron tiek izpildÄ«ti periodiski, bet init - sistÄmas startÄÅ”anas laikÄ. DarbÄ«bai bÅ«s nepiecieÅ”ama sistÄmas atsÄknÄÅ”ana, un daži pakalpojumi var netikt startÄti (ja tie nav reÄ£istrÄti startÄÅ”anas laikÄ).
ls -la /etc/init.d/ # show init scripts
Varat arÄ« meklÄt failus, kurus var rakstÄ«t jebkurÅ” lietotÄjs.
find / -perm -2 -type f 2>/dev/null # find world writable files
Metode ir diezgan labi zinÄma; pieredzÄjuÅ”i sistÄmas administratori rÅ«pÄ«gi izmanto komandu chmod. TomÄr internetÄ lielÄkajÄ daÄ¼Ä rokasgrÄmatu ir aprakstÄ«ta maksimÄlo tiesÄ«bu noteikÅ”ana. NepieredzÄjuÅ”u sistÄmu administratoru pieeja āvienkÄrÅ”i strÄdÄā principÄ rada iespÄjas privilÄÄ£iju eskalÄcijai. Ja iespÄjams, labÄk ir meklÄt komandu vÄsturÄ nedroÅ”u chmod izmantoÅ”anu.
chmod +w /path
chmod 777 /path
Apvalka piekļuves iegÅ«Å”ana citiem lietotÄjiem
MÄs aplÅ«kojam lietotÄju sarakstu mapÄ /etc/passwd. MÄs pievÄrÅ”am uzmanÄ«bu tiem, kam ir apvalks. JÅ«s varat apgrÅ«tinÄt Å”os lietotÄjus - iespÄjams, ka ar iegÅ«tÄ lietotÄja palÄ«dzÄ«bu galu galÄ bÅ«s iespÄjams palielinÄt privilÄÄ£ijas.
Lai uzlabotu droŔību, iesaku vienmÄr ievÄrot vismazÄko privilÄÄ£iju principu. Ir arÄ« lietderÄ«gi pavadÄ«t laiku, lai pÄrbaudÄ«tu nedroÅ”as konfigurÄcijas, kas varÄtu palikt pÄc problÄmu novÄrÅ”anas - tas ir sistÄmas administratora ātehniskais pienÄkumsā.
PaŔu rakstīts kods
Ir vÄrts rÅ«pÄ«gi apskatÄ«t izpildÄmos failus lietotÄja mÄjas direktorijÄ un tÄ«mekļa serverÄ« (/var/www/, ja nav norÄdÄ«ts citÄdi). Å ie faili var izrÄdÄ«ties pilnÄ«gi nedroÅ”s risinÄjums un satur neticami kruÄ·us. Protams, ja tÄ«mekļa servera direktorijÄ ir kÄds ietvars, nav jÄgas meklÄt tajÄ nulles dienu kÄ daļu no pentest, taÄu ir ieteicams atrast un izpÄtÄ«t pielÄgotas modifikÄcijas, spraudÅus un komponentus.
Lai palielinÄtu droŔību, labÄk, ja iespÄjams, izvairÄ«ties no akreditÄcijas datu izmantoÅ”anas paÅ”u rakstÄ«tos skriptos, kÄ arÄ« no potenciÄli bÄ«stamas funkcionalitÄtes, piemÄram, /etc/shadow lasÄ«Å”anas vai manipulÄcijas ar id_rsa.
PrivilÄÄ£iju paaugstinÄÅ”ana, izmantojot ievainojamÄ«bas
Pirms mÄÄ£inÄt palielinÄt privilÄÄ£ijas, izmantojot ekspluatÄciju, ir svarÄ«gi saprast failu pÄrsÅ«tÄ«Å”ana uz mÄrÄ·a resursdatoru. Papildus parastajiem rÄ«kiem, piemÄram, ssh, ftp, http (wget, curl), ir vesels iespÄju "zoodÄrzs"..
Lai uzlabotu sistÄmas droŔību, regulÄri atjauniniet to uz jaunÄko stabils versijas, kÄ arÄ« mÄÄ£iniet izmantot uzÅÄmumam paredzÄtus izplatÄ«jumus. CitÄdi tas notiek reti, taÄu ir situÄcijas, kad apt jauninÄjums padara sistÄmu nederÄ«gu.
Pakalpojumu izmantoÅ”ana, kas darbojas saknes lietotÄja kontekstÄ
Daži Linux pakalpojumi darbojas kÄ root. Tos var atrast, izmantojot komandu ps aux | grep sakne. Å ÄdÄ gadÄ«jumÄ pakalpojums var netikt reklamÄts internetÄ un ir pieejams lokÄli. Ja tam ir publiski izlietojumi, tos var droÅ”i izmantot: pakalpojuma avÄrija kļūmes gadÄ«jumÄ ir daudz mazÄk svarÄ«ga nekÄ OS avÄrija.
ps -aux | grep root # Linux
Par veiksmÄ«gÄko gadÄ«jumu var uzskatÄ«t uzlauzta pakalpojuma darbÄ«bu saknes lietotÄja kontekstÄ. SMB pakalpojuma darbÄ«ba nodroÅ”ina priviliÄ£Ätu piekļuvi SISTÄMAI Windows sistÄmÄs (piemÄram, izmantojot ms17-010). TomÄr Linux sistÄmÄs tas nav izplatÄ«ts, tÄpÄc jÅ«s varat pavadÄ«t daudz laika, lai palielinÄtu privilÄÄ£ijas.
Linux kodola ievainojamību izmantoŔana
Å is ir ceļŔ, kas jums jÄiet pÄdÄjam. NeveiksmÄ«ga darbÄ«ba var izraisÄ«t sistÄmas avÄriju, un atsÄknÄÅ”anas gadÄ«jumÄ daži pakalpojumi (tostarp tie, caur kuriem tika iegÅ«ts sÄkotnÄjais apvalks) var netikt startÄts. GadÄs, ka administrators vienkÄrÅ”i aizmirsa izmantot komandu systemctl enable. TurklÄt tas radÄ«s lielu neapmierinÄtÄ«bu ar jÅ«su darbu, ja operÄcija netika saskaÅota.
Ja nolemjat izmantot avota kodus no exploitdb, noteikti izlasiet komentÄrus skripta sÄkumÄ. Cita starpÄ tajÄ parasti ir norÄdÄ«ts, kÄ pareizi apkopot doto izmantoÅ”anu. Ja esat pÄrÄk slinks vai nÄcÄs to izdarÄ«t "vakar" termiÅu dÄļ, varat meklÄt repozitorijus ar jau apkopotiem varoÅdarbiem, piemÄram. TomÄr jums vajadzÄtu saprast, ka Å”ajÄ gadÄ«jumÄ jÅ«s dabÅ«siet cÅ«ku kulÄ. No otras puses, ja programmÄtÄjs lÄ«dz baitam saprastu, kÄ darbojas dators un kÄda programmatÅ«ra tajÄ tiek izmantota, viÅÅ” visas dzÄ«ves laikÄ nerakstÄ«tu nevienu koda rindiÅu.
cat /proc/version
uname -a
searchsploit "Linux Kernel"
Metasploit
Lai uztvertu un apstrÄdÄtu savienojumu, vienmÄr labÄk ir izmantot moduli exploit/multi/handler. Galvenais ir iestatÄ«t pareizo lietderÄ«go slodzi, piemÄram, generic/shell/reverse_tcp vai generic/shell/bind_tcp. Metasploit ražoto apvalku var jauninÄt uz Meterpreter, izmantojot moduli post/multi/manage/shell_to_meterpreter. Izmantojot Meterpreter, varat automatizÄt pÄcekspluatÄcijas procesu. PiemÄram, modulis post/multi/recon/local_exploit_suggester pÄrbauda ekspluatÄcijai nepiecieÅ”amo platformu, arhitektÅ«ru un entÄ«tijas un iesaka Metasploit moduļus, lai palielinÄtu privilÄÄ£ijas mÄrÄ·a sistÄmÄ. Pateicoties Meterpreter, privilÄÄ£iju palielinÄÅ”ana dažkÄrt izpaužas lÄ«dz vajadzÄ«gÄ moduļa palaiÅ”anai, taÄu uzlauÅ”ana, nesaprotot, kas notiek zem pÄrsega, nav āpatiesaā (joprojÄm ir jÄraksta ziÅojums).
darbarīki
VietÄjÄs informÄcijas vÄkÅ”anas automatizÄÅ”anas rÄ«ki ietaupÄ«s jums daudz pūļu un laika, taÄu paÅ”i par sevi nespÄj pilnÄ«bÄ noteikt ceļu uz privilÄÄ£iju eskalÄciju, it Ä«paÅ”i kodola ievainojamÄ«bu izmantoÅ”anas gadÄ«jumÄ. AutomatizÄcijas rÄ«ki izpildÄ«s visas nepiecieÅ”amÄs komandas, lai jÅ«s varÄtu savÄkt informÄciju par sistÄmu, taÄu svarÄ«gi ir arÄ« analizÄt saÅemtos datus. Es ceru, ka mans raksts jums bÅ«s noderÄ«gs Å”ajÄ sakarÄ. Protams, ir daudz vairÄk rÄ«ku, nekÄ es uzskaitÄ«Å”u zemÄk, taÄu tie visi dara aptuveni vienu un to paÅ”u - tas drÄ«zÄk ir gaumes jautÄjums.
Diezgan nesen Tula, pirmÄ apÅemÅ”anÄs datÄta ar 2019. gada janvÄri. Mans Ŕī brīža mīļÄkais rÄ«ks. Lieta ir tÄda, ka tas izceļ interesantÄkos privilÄÄ£iju eskalÄcijas vektorus. PiekrÄ«tu, ir ÄrtÄk iegÅ«t eksperta novÄrtÄjumu Å”ajÄ lÄ«menÄ«, nevis analizÄt monolÄ«tus neapstrÄdÄtus datus.
Å Ä« izmantoÅ”ana analizÄs sistÄmu piemÄrotiem ekspluatÄcijas apstÄkļiem. Faktiski tas veiks darbu identiski Metasploit modulim local_exploit_suggester, taÄu piedÄvÄs saites uz exploit-db pirmkodiem, nevis Metasploit moduļiem.