erroa naiz. Linux OS Pribilegioen igoera ulertzea

2020ko lehen hiruhilekoa OSCP azterketa prestatzen eman nuen. Googlen informazioa bilatzea eta saiakera "itsu" asko kostatzen zitzaidan denbora librea. Bereziki zaila izan zen pribilegioak areagotzeko mekanismoak ulertzea. PWK ikastaroak arreta handia ematen dio gai honi, baina material metodologikoak beti ez dira nahikoak. Interneten eskuliburu asko daude komando erabilgarriak dituztenak, baina ez naiz gomendioak itsu-itsuan jarraitzearen aldekoa horrek nora eramango duen ulertu gabe.

Azterketa prestatzerakoan eta arrakastaz gainditzean (Hack The Box-en aldizkako erasoak barne) ikasitakoa partekatu nahiko nuke zuekin. Esker ona sentitu nuen Try Harder bidea modu kontzienteagoan ibiltzen lagundu zidan informazio bakoitzagatik, orain komunitateari itzultzeko unea da.

OS Linux-en pribilegioak igotzeko gida bat eman nahi dizut, behin betiko beharko dituzun bektore ohikoenen eta erlazionatutako ezaugarrien azterketa barne hartzen duena. Askotan, pribilegioak igotzeko mekanismoak beraiek nahiko sinpleak dira, zailtasunak sortzen dira informazioa egituratzeko eta aztertzeko orduan. Hori dela eta, "bisita turistiko" batekin hastea erabaki nuen eta gero bektore bakoitza artikulu batean kontuan hartzea. Gaia aztertzeko denbora aurreztuko dizudala espero dut.

erroa naiz. Linux OS Pribilegioen igoera ulertzea

Beraz, zergatik da posible pribilegioen igoera 2020an metodoak oso ezagunak badira? Izan ere, erabiltzaileak sistema behar bezala maneiatzen badu, ezinezkoa izango da bertan pribilegioak handitu. Horrelako aukerak sortzen dituen arazo global nagusia hauxe da konfigurazio segurua. Sisteman ahultasunak dituzten software bertsio zaharkituen presentzia segurua ez den konfigurazio kasu berezi bat da.

Pribilegioen igoera konfigurazio ez seguruaren bidez

Lehenik eta behin, aurre egin diezaiogun konfigurazio seguruari. Has gaitezen IT profesionalek maiz erabiltzen dituzte eskuliburuak eta baliabideak stackoverflow bezalakoak, horietako askok komando eta konfigurazio seguruak dituzte. Adibide deigarri bat da albisteak stackoverflow-tik gehien kopiatzen den kodeak errore bat zuela. Admin esperientziadun batek jamb ikusiko du, baina hau mundu ideal batean dago. Baita profesional konpetenteak ere lan karga handitu akatsak egiteko gai. Imajina ezazu administratzailea hurrengo lizitaziorako dokumentazioa prestatzen eta onesten ari dela, aldi berean hurrengo hiruhilekoan sartuko den teknologia berrian sakonduz, erabiltzaileei laguntza-zereginak aldian-aldian ebatziz. Eta gero, makina birtual pare bat azkar altxatzeko eta haietan zerbitzuak zabaltzeko zeregina ematen zaio. Zer uste duzu, zer probabilitatea da administratzaileak langa ez antzemateko? Gero espezialistak aldatzen dira, baina makuluak geratzen dira, enpresak beti ahalegintzen diren bitartean kostuak minimizatzen, informatika espezialistenak barne.

Sasi-shell eta jailbreak

Produkzio fasean lortzen den sistemaren shell-a askotan mugatua da, batez ere web zerbitzariaren erabiltzaile bat hackeatuz lortu baduzu. Adibidez, shell murrizketek sudo komandoa errore batekin erabiltzea eragotzi dezakete:

sudo: no tty present and no askpass program specified

Shell bat lortu ondoren, guztizko terminal bat sortzea gomendatzen dut, adibidez Python-ekin.

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

Galdetzen duzu: "Zergatik behar ditut mila komando, bat erabil dezaket, adibidez, fitxategiak transferitzeko?" Kontua da sistemak modu ezberdinean konfiguratuta daudela, hurrengo ostalarian baliteke Python ez instalatzea, baina Perl eskuragarri dago. Trebetasuna sisteman gauza ezagunak tresna ezagunik gabe egin ahal izatea da. Ezaugarrien zerrenda osoa aurki daiteke Hemen.

Pribilegio baxuko shell bat lor daiteke erabiliz taldeak 1 ΠΈ taldeak 2 (harrigarria bada ere GIMP).

Ikusi komandoen historia

Linuxek fitxategi batean exekutaturiko komando guztien historia biltzen du ~ / .bash_historia. Zerbitzaria erabilera aktiboan badago eta bere historia garbitzen ez bada, aukera ona dago kredentzialak fitxategi honetan aurkitzea. Historia garbitzea hutsalki deserosoa da. Administratzailea hamar mailako komandoak hautatzera behartuta badago, noski, komenigarriagoa izango zaio historiatik komando honi deitzea berriro sartzea baino. Gainera, askok ez dakite "hack" honi buruz. Sisteman Zsh edo Fish bezalako maskor alternatiboak badaude, beren historia dute. Komandoen historia edozein shelletan bistaratzeko, idatzi komandoen historia.

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

Hosting partekatua dago, zeinetan zerbitzaria hainbat gune ostatatzeko erabiltzen den. Normalean, konfigurazio honekin, baliabide bakoitzak bere erabiltzailea du etxeko direktorio bereizi batekin eta ostalari birtual batekin. Beraz, gaizki konfiguratuta badago, .bash_history fitxategia web baliabidearen erroko direktorioa aurki dezakezu.

Fitxategi-sisteman pasahitzak aurkitzea eta aldameneko sistemetako erasoak

Hainbat zerbitzuren konfigurazio-fitxategiak irakur ditzake zure egungo erabiltzaileak. Horietan, kredentzialak testu argian aurki ditzakezu: datu-basera edo erlazionatutako zerbitzuetara sartzeko pasahitzak. Pasahitz bera erabil daiteke bai datu-basera sartzeko bai root erabiltzaileari baimena emateko (kredentzialak langileak).
Gertatzen da aurkitutako kredentzialak beste ostalari batzuetako zerbitzuetakoak direla. Ostalari konprometitu baten bidez azpiegituraren aurkako erasoa garatzea ez da beste ostalari batzuen ustiapena baino okerragoa. Aldameneko sistemak fitxategi-sisteman IP helbideak bilatuz ere aurki daitezke.

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

Konprometitutako ostalariak Internetetik eskura daitekeen web aplikazio bat badu, hobe da bere erregistroak IP helbideak bilaketatik baztertzea. Interneteko baliabideen erabiltzaileen helbideak nekez izango zaizkigu baliagarriak, baina barne sareko helbideak (172.16.0.0/12, 192.168.0.0/16, 10.0.0.0/8) eta nora joaten diren, kontuan hartuta. erregistroak, interesgarriak izan daitezke.

sudo

Sudo komandoak erabiltzaileari komando bat exekutatzeko aukera ematen dio root testuinguruan bere pasahitzarekin edo batere erabili gabe. Linux-en eragiketa askok root pribilegioak behar dituzte, baina root gisa exekutatzen oso praktika txartzat hartzen da. Horren ordez, hobe da baimen selektiboa aplikatzea komandoak erro testuinguruan exekutatzeko. Hala ere, Linux tresna asko, vi bezalako estandarrak barne, pribilegioak modu legitimoan handitzeko erabil daitezke. Bide egokia aurkitzeko, begiratzea gomendatzen dut Hemen.

Sistemarako sarbidea lortu ondoren egin beharreko lehen gauza sudo -l komandoa exekutatu da. Sudo komandoa erabiltzeko baimena bistaratuko du. Pasahitzik gabeko erabiltzaile bat lortzen bada (adibidez, apache edo www-data), nekez izango da sudo pribilegioak igotzeko bektorerik. Sudo erabiltzean, sistemak pasahitza eskatuko du. Pasahitza ezartzeko passwd komandoa erabiltzeak ere ez du funtzionatuko, uneko erabiltzailearen pasahitza eskatuko du. Baina sudo oraindik eskuragarri badago, orduan, hain zuzen ere, bilatu behar duzu:

  • edozein interprete, edonork sor dezake shell bat (PHP, Python, Perl);
  • edozein testu-editore (vim, vi, nano);
  • edozein ikusle (gutxiago, gehiago);
  • fitxategi-sistemarekin lan egiteko aukerarik (cp, mv);
  • bash-en irteera duten tresnak, modu interaktiboan edo komando exekutagarri gisa (awk, find, nmap, tcpdump, man, vi, vim, ansible).

Suid/Sgid

Interneten suid / sgid komando guztiak eraikitzea aholkatzen duten eskuliburu ugari daude, baina artikulu arraro batek programa hauekin zer egin behar den zehazten du. Ustiategien erabilera kontuan hartzen ez duten pribilegioak igotzeko aukerak aurki daitezke Hemen. Gainera, fitxategi exekutagarri batzuek ahultasun zehatzak dituzte OS bertsiorako, adibidez.

Mundu ideal batean, instalatutako pakete guztiak exekutatu beharko dituzu gutxienez searchsploit bidez. Praktikan, sudo bezalako programa ezagunenekin egin behar da. Era berean, beti da aukera bat suid/sgid bit multzoa duten exekutagarri interesgarriak nabarmenduko dituzten tresna automatizatuak erabiltzeko eta garatzeko laguntza. Horrelako tresnen zerrenda emango dut artikuluari dagokion atalean.

Cron edo Init-ek exekutatzen dituzten script idazgarriak Erro testuinguruan

Cron lanak erabiltzaile ezberdinen testuinguruan exekutatu daitezke, root barne. Cron-en fitxategi exekutagarri baterako esteka duen ataza bat badago eta idazteko erabilgarri badago, erraz ordezkatu dezakezu maltzurren batekin eta pribilegioak handitu. Aldi berean, lehenespenez, cron zereginak dituzten fitxategiak eskuragarri daude edozein erabiltzaileri irakurtzeko.

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

Antzekoa da init-en kasua. Desberdintasuna da cron-en zereginak aldian-aldian exekutatzen direla eta init-en - sistema abiaraztean. Funtzionatzeko, sistema berrabiarazi beharko duzu, baliteke zerbitzu batzuk igotzen ez diren bitartean (karga automatikoan erregistratuta ez bazeuden).

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

Edozein erabiltzailek idazteko moduko fitxategiak ere bilatu ditzakezu.

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

Metodoa nahiko ezaguna da, sistema-administratzaile esperientziadunek arretaz erabiltzen dute chmod komandoa. Hala ere, sarean, eskuliburu gehienek gehieneko eskubideak ezartzea deskribatzen dute. Esperientziarik gabeko sistema-administratzaileen "funtzionatu besterik ez" ikuspegiak printzipioz pribilegioak handitzeko aukerak sortzen ditu. Ahal izanez gero, hobe da komandoen historian chmod-en erabilera arriskutsuak aztertzea.

chmod +w /path 
chmod 777 /path

Beste erabiltzaileentzako shell sarbidea lortzea

/etc/passwd-en erabiltzaileen zerrenda aztertuko dugu. Oskola dutenei kasu egiten diegu. Erabiltzaile hauei kalte egin diezaiekezu; baliteke emaitzaren erabiltzailearen bidez pribilegioak handitu ahal izatea.

Segurtasuna hobetzeko, beti pribilegio txikienaren printzipioa betetzea gomendatzen dizut. Arazoak konpondu ondoren gera daitezkeen konfigurazio seguruak egiaztatzeko denbora hartzea ere zentzuzkoa da - hau da sistema-administratzailearen "betebehar teknikoa".

Norberak idatzitako kodea

Merezi du erabiltzailearen eta web zerbitzariaren hasierako direktorioko exekutagarriak (/var/www/) aztertzea, bestela zehaztu ezean. Fitxategi hauek guztiz segurua ez den irtenbide bat izan daiteke eta ikaragarrizko makuluak eduki ditzakete. Jakina, zure web zerbitzariaren direktorioan esparruren bat baduzu, ez du zentzurik bertan pentest baten zati gisa zero-day bilatzea, baina gomendatzen da aldaketa pertsonalizatuak, pluginak eta osagaiak aurkitzea eta aztertzea.

Segurtasuna areagotzeko, hobe da norberak idatzitako scriptetan kredentzialak erabiltzea saihestea, baita arriskutsuak izan daitezkeen funtzionalitateak ere, hala nola /etc/shadow irakurtzea edo id_rsa manipulatzea, ahal bada.

Pribilegioaren igoera ahultasunen ustiapenaren bidez

Ustiapenaren bidez pribilegioak handitzen saiatu aurretik, garrantzitsua da ulertzea fitxategiak helburu ostalarira transferitzea. Ssh, ftp, http (wget, curl) bezalako ohiko tresnez gain, osotasun bat dago aukeren "zoo"..

Zure sistemaren segurtasuna hobetzeko, eguneratu aldizka azkenera egonkorra bertsioak, eta Enterprise-rako diseinatutako banaketak erabiltzen ere saiatu. Bestela, oso gutxitan, baina apt upgrade sistema erabilezin bihurtzen duten egoerak daude.

Erro erabiltzailearen testuinguruan exekutatzen diren zerbitzuak ustiatzea

Linux zerbitzu batzuk erabiltzailearen root pribilegiatu gisa exekutatzen dira. ps aux | erabiliz aurki daitezke grep erroa. Kasu honetan, baliteke zerbitzua sarean ez iragartzea eta lokalean eskuragarri egotea. Exploitazio publikoak baditu, segurtasunez erabil daitezke: hutsegite kasuan zerbitzuaren hutsegite bat OSaren hutsegite bat baino askoz kritikoagoa da.

ps -aux | grep root # Linux

Kasurik arrakastatsuena hackeatutako zerbitzu baten funtzionamendutzat har daiteke root erabiltzailearen testuinguruan. SMB zerbitzua ustiatzeak SYSTEM-i atzipen pribilegiatua ematen dio Windows sistemetan (adibidez, ms17-010 bidez). Hala ere, hori ez da ohikoa Linux sistemetan, beraz, denbora asko eman dezakezu pribilegioak igotzeko.

Linux Kernelaren ahultasunak ustiatzea

Hau da hartu beharreko azken bidea. Eragiketa arrakastatsuak sistemaren hutsegite bat ekar dezake, eta berrabiaraziz gero, baliteke zerbitzu batzuk (jatorrizko shell-a eskuratzea posible izan zutenak barne) ez igotzea. Gertatzen da administratzaileak systemctl enable komandoa erabiltzea ahaztu duela. Gainera, zure lanarekin atsekabe handia eragingo du ustiapena adostu ez bada.
Explotadb-ko iturriak erabiltzea erabakitzen baduzu, ziurtatu iruzkinak irakurtzen dituzula scriptaren hasieran. Besteak beste, ustiatu hau behar bezala nola konpilatu esaten da normalean. Epeak direla-eta alferra edo "atzo" behar bazenuen, dagoeneko konpilatutako ustiapenak dituzten biltegiak bilatu ditzakezu, adibidez. Hala ere, ulertu behar da kasu honetan txerri bat sartuko duzula. Bestalde, programatzaile batek ordenagailu batek nola funtzionatzen duen eta erabiltzen duen softwarea byteraino ulertuko balu, ez luke kode lerrorik idatziko bere bizitza osoan.

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

Metasploit

Konexio bat harrapatzeko eta kudeatzeko, beti da hobe exploit/multi/handler modulua erabiltzea. Garrantzitsuena karga egokia ezartzea da, adibidez, generic/shell/reverce_tcp edo generic/shell/bind_tcp. Metasploit-en lortutako shell-a Meterpreter-era egunera daiteke post/multi/manage/shell_to_meterpreter modulua erabiliz. Meterpreter-ekin, ustiaketa osteko prozesua automatiza dezakezu. Adibidez, post/multi/recon/local_exploit_suggester moduluak plataforma, arkitektura eta entitate ustiagarriak egiaztatzen ditu eta Metasploit moduluak iradokitzen ditu helburu-sisteman pribilegioak handitzeko. Meterpreter-i esker, pribilegioen igoera batzuetan modulu egokia exekutatzen da, baina kanpaiaren azpian gertatzen ari dena ulertu gabe pirateatzea ez da egia (oraindik txosten bat idatzi behar duzu).

tresnak

Tokiko informazio bilketa automatizatzeko tresnek esfortzu eta denbora asko aurreztuko zaituzte, baina berez ez dira gai pribilegioak igotzeko bidea guztiz identifikatzea, batez ere nukleoaren ahultasunak ustiatzearen kasuan. Automatizazio-tresnek beharrezko komando guztiak egingo dituzte sistemari buruzko informazioa biltzeko, baina garrantzitsua da gai izatea ere. aztertu jasotako datuak. Nire artikulua honetan erabilgarria izango zaizula espero dut. Jakina, jarraian zerrendatuko ditudanak baino askoz tresna gehiago daude, baina denek gauza bera egiten dute - gustu kontua da gehiago.

Linpeak

Tresna nahiko freskoa, lehen konpromisoa 2019ko urtarrilekoa da. Gaur egun nire instrumenturik gogokoena. Beheko lerroa da pribilegioak igotzeko bektore interesgarrienak nabarmentzen dituela. Ados, erosoagoa da maila honetan adituen ebaluazioa lortzea datu gordina monolitikoak analizatzea baino.

LineEnum

Nire bigarren tresna gogokoena, tokiko zenbaketaren ondorioz jasotako datuak ere bildu eta antolatzen ditu.

linux-exploit-suggester (1,2)

Ustiapen honek sistema aztertuko du ustiapenetarako baldintza egokietarako. Izan ere, Metasploit local_exploit_suggester moduluaren antzeko lana egingo du, baina exploit-db iturburu-kodeetarako estekak eskainiko ditu Metasploit moduluak baino.

Linuxprivchecker

Script honek atalka bildu eta antolatuko du pribilegioak igotzeko bektore bat eratzeko erabilgarria izan daitekeen informazio kopuru handia.

Beste batean landuko dut Linux pribilegioen igoera suid/sgid bidez.

Iturria: www.habr.com

Gehitu iruzkin berria