Sò radica. Capisce u Linux OS Privilege Escalation

Aghju passatu u primu trimestre di u 2020 à preparà per l'esame OSCP. A ricerca d'infurmazioni nantu à Google è assai tentativi "cecu" anu pigliatu tuttu u mo tempu liberu. Era soprattuttu difficiuli di capiscenu i miccanismi per aumentà i privilegi. U cursu PWK presta assai attenzione à questu tema, ma i materiali didattici ùn sò mai abbastanza. Ci hè una mansa di manuali in Internet cù cumandamenti utili, ma ùn sò micca un fanàticu di seguità a cieca cunsiglii senza capisce ciò chì portarà.

Vogliu sparte cun voi ciò chì aghju amparatu durante a preparazione è u passaghju successu di l'esame (cumprese incursioni periodiche in Hack The Box). Mi sentu un forte sensu di gratitùdine per ogni pocu di infurmazione chì m'hà aiutatu à marchjà u percorsu Try Harder più cunsciente, avà hè u mo tempu di rinvià à a cumunità.

Vogliu dà un manuale nantu à cumu scalate i privilegii in OS Linux, chì include un analisi di i vettori più cumuni è e funzioni cunnessi chì vi saranu definitivamente utili. Spessu i meccanismi per aumentà i privilegi stessi sò abbastanza sèmplice; e difficultà sorgianu quandu strutturate è analizà l'infurmazioni. Per quessa, aghju decisu di principià cù un "tour turisticu" è poi cunsiderà ogni vettore in un articulu separatu. Spergu chì vi risparmià un pocu di tempu per ricercà u tema.

Sò radica. Capisce u Linux OS Privilege Escalation

Allora perchè l'escalazione di u privilegiu hè ancu pussibule in 2020 se i metudi sò cunnisciuti dapoi assai tempu? In fatti, se l'utilizatore manighja u sistema currettamente, ùn serà micca veramente pussibule di aumentà i privilegi in questu. U principale prublema glubale chì dà origine à tali opportunità hè cunfigurazione insegura. A prisenza di versioni di software obsoleti chì cuntenenu vulnerabilità in u sistema hè ancu un casu speciale di una cunfigurazione micca sicura.

Escalazione di privilegi via cunfigurazione insicura

Prima, facemu cun cunfigurazione insicura. Cuminciamu cù I prufessiunali IT spessu usanu manuali è risorse cum'è stackoverflow, assai di quali cuntenenu cumandamenti è cunfigurazioni insicure. Un esempiu chjappu - a nutizia chì u codice più copiatu da stackoverflow cuntene un errore. Un amministratore espertu vi vede u jamb, ma questu hè in un mondu ideale. Ancu specialisti competenti carica di travagliu aumentata capaci di fà sbagli. Immaginate chì un amministratore preparanu è coordinendu a documentazione per a prossima licitazione, à u stessu tempu sfondendu in a nova tecnulugia chì deve esse implementata in u prossimu trimestre, mentre risolve periodicamente i prublemi di supportu di l'utilizatori. E poi hè datu u compitu di stallà rapidamente un coppiu di macchine virtuali è sparghje servizii nantu à elli. Chì pensate chì hè a probabilità chì l'amministratore ùn simpricamente micca avvistà u jamb? Allora i spezialisti cambianu, ma i crutches fermanu, mentri l'imprese sempre s'impegnanu à minimizzà i costi, ancu per u persunale di l'IT.

Pseudo-shell è jailbreak

A cunchiglia di u sistema ottenuta durante a fase di sfruttamentu hè spessu limitata, soprattuttu s'ellu l'avete ottenutu per pirate un utilizatore di u servitore web. Per esempiu, e restrizioni di cunchiglia pò impediscenu di eseguisce u cumandamentu sudo, producendu un errore:

sudo: no tty present and no askpass program specified

Una volta avete una cunchiglia, ricumandemu di creà un terminal cumpletu, per esempiu utilizendu Python.

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

Pudete dumandà: "Perchè aghju bisognu di mille cumandamenti se possu aduprà unu, per esempiu, per trasfiriri i schedari?" U fattu hè chì i sistemi sò cunfigurati in modu diversu; un òspite datu pò micca avè installatu Python, ma pò avè Perl. L'abilità hè di pudè fà cose familiari in u sistema senza arnesi familiari. Una lista cumpleta di funziunalità pò esse truvata ccà.

Una cunchiglia à pocu privilegiu pò esse ottenuta usendu squadre 1 и squadre 2 (sorprendentemente, ancu GIMP).

Vede a storia di cumandamenti

Linux raccoglie una storia di tutti i cumandamenti eseguiti in un schedariu ~/.bash_history. Se u servitore hè attivamente utilizatu è a so storia ùn hè micca sguassata, ci hè una alta probabilità di truvà credenziali in stu schedariu. Sguassà a storia hè simplicemente inconveniente. Se l'amministratore hè furzatu à selezziunà i cumandamenti di deci storii attraversu , sicuru, serà più cunvene per ellu chjamà stu cumandamentu da a storia cà per entre in novu. Inoltre, assai persone ùn sanu micca di questu "pirate". Se ci sò cunchiglia alternative cum'è Zsh o Fish in u sistema, anu a so propria storia. Per vede a storia di cumandamenti in ogni cunchiglia, basta à scrive a storia di cumandamenti.

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

Ci hè un hosting spartutu, in quale u servitore hè utilizatu per accoglie parechji siti web. Di genere, cù sta cunfigurazione, ogni risorsa hà u so propiu utilizatore cù un repertoriu di casa separatu è un host virtuale. Allora, se cunfiguratu incorrectamente, pudete truvà u schedariu .bash_history in u repertoriu radicali di a risorsa web.

Ricerca di password in u sistema di fugliale è attacchi à i sistemi adiacenti

I schedarii di cunfigurazione per diversi servizii ponu esse leghjite da u vostru utilizatore attuale. In elli pudete truvà credenziali in testu chjaru - password per accede à una basa di dati o servizii cunnessi. A stessa password pò esse usata sia per accede à a basa di dati sia per autorizà l'utilizatore root (credential staffing).
Succede chì i credenziali truvati appartenenu à i servizii nantu à altri ospiti. Sviluppà un attaccu à l'infrastruttura attraversu un òspite cumprumissu ùn hè micca peghju chè sfruttà altri òspiti. I sistemi adiacenti ponu ancu esse truvati cerchendu l'indirizzi IP in u sistema di fugliale.

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

Se l'ospitu cumprumissu hà una applicazione web accessibile da Internet, hè megliu escludiri i so logs da a ricerca di l'indirizzi IP. L'indirizzi di l'utilizatori di risorse da l'Internet sò improbabile di esse utili per noi, ma l'indirizzi di a reta interna (172.16.0.0/12, 192.168.0.0/16, 10.0.0.0/8) è induve vanu, à ghjudicà da i logs. , pò esse di interessu.

Sudo

U cumandamentu sudo dà à l'utilizatori l'abilità di eseguisce un cumandamentu in u cuntestu root usendu a so propria password o senza aduprà una password in tuttu. Parechje operazioni in Linux necessitanu privilegi di root, ma l'esecuzione cum'è root hè cunsiderata una pratica assai cattiva. Invece, hè megliu applicà u permessu selettivu per eseguisce cumandamenti in u cuntestu radicali. Tuttavia, assai arnesi Linux, cumpresi quelli standard cum'è vi, ponu esse aduprati per scalate i privilegi in modi legittimi. Per truvà un metudu adattatu, vi cunsigliu di circà ccà.

A prima cosa chì duvete fà quandu avete accessu à u sistema hè di eseguisce u cumandamentu sudo -l. Mostrarà u permessu di utilizà u cumandamentu sudo. Se un utilizatore senza password hè ottenutu (cum'è apache o www-data), u vettore di escalazione di privilegi via sudo hè improbabile. Quandu si usa sudo, u sistema dumandarà una password. Ùn puderà micca stabilisce una password utilizendu u cumandimu passwd; dumandà a password attuale di l'utilizatore. Ma se sudo hè sempre dispunibule, allora essenzialmente avete bisognu di circà:

  • qualsiasi interpreti, qualcunu pò spawn una shell (PHP, Python, Perl);
  • qualsiasi editori di testu (vim, vi, nano);
  • qualsiasi spettatori (menu, più);
  • ogni capacità di travaglià cù u sistema di schedari (cp, mv);
  • Strumenti chì anu output in bash, interattivu o cum'è un cumandamentu eseguibile (awk, find, nmap, tcpdump, man, vi, vim, ansible).

Suid/Sgid

Ci sò parechji manuali in Internet chì cunsiglianu di cullà tutti i cumandamenti suid / sgid, ma un articulu raru dà specificità nantu à ciò chì fà cù questi prugrammi. L'opzioni per l'escalamentu di privilegi chì ùn anu micca cunsideratu l'usu di sfruttamenti ponu esse truvati ccà. Inoltre, una quantità di fugliali eseguibili anu vulnerabili specifichi per a versione OS, per esempiu.

In un mondu ideale, averete eseguitu tutti i pacchetti installati attraversu almenu searchsploit. In pratica, questu deve esse fattu cù i prugrammi più populari cum'è sudo. Ci hè ancu sempre l'opzione d'utilizà è sustene u sviluppu di arnesi automatizati chì metteranu in risaltu interessanti, da u puntu di vista di l'escalation di privilegi, i fugliali eseguibili cù i suid / sgid bits set. Puderaghju una lista di tali strumenti in a sezione currispundente di l'articulu.

Scrittori scrivibili gestiti da Cron o Init in u cuntestu di Root

I travaglii di Cron ponu esse eseguiti in diversi cuntesti d'utilizatori, cumprese root. Se un compitu cron hè stallatu cù un ligame à un schedariu eseguibile, è hè dispunibule per voi per scrive, pò esse facilmente rimpiazzatu cù un maliziusu è escalazione di privilegi. In ogni casu, per automaticamente, i schedari cù e funzioni cron sò leghjite da qualsiasi utilizatore.

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

A situazione hè simile cù init. A diferenza hè chì i travaglii in cron sò eseguiti periodicamente, è in init - à l'iniziu di u sistema. L'operazione richiederà un reboot di u sistema, è alcuni servizii ùn ponu micca inizià (se ùn sò micca stati registrati in startup).

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

Pudete ancu circà i schedari chì sò scrivibili da ogni utilizatore.

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

U metudu hè abbastanza cunnisciutu; amministratori di sistema sperimentati utilizanu currettamente u cumandamentu chmod. In ogni casu, in Internet, a maiò parte di i manuali descrizanu stabilisce i diritti massimi. L'approcciu di "solu fà u travagliu" di l'amministratori di sistema inexperienced crea opportunità per l'escalation di privilegi in principiu. Sè pussibule, hè megliu circà in a storia di cumandamentu per l'usu inseguru di chmod.

chmod +w /path 
chmod 777 /path

Guadagnà l'accessu di shell à altri utilizatori

Fighjemu a lista di l'utilizatori in /etc/passwd. Avemu attentu à quelli chì anu una cunchiglia. Pudete brute questi utilizatori - hè pussibule chì per mezu di l'utilizatori risultatu eventualmente serà pussibule aumentà i privilegi.

Per migliurà a sicurità, ricumandemu chì sempre aderite à u principiu di u minimu privilegiu. Hè ancu sensu di passà u tempu per verificà e cunfigurazioni insicure chì puderanu restare dopu a risoluzione di prublemi - questu hè u "duvere tecnicu" di l'amministratore di u sistema.

codice auto-scrittu

Hè vale a pena guardà attentamente i fugliali eseguibili in u cartulare di casa di l'utilizatore è u servitore web (/var/www/, salvu s'ellu ùn hè micca specificatu). Questi fugliali ponu esse una soluzione cumpletamente insegura è cuntenenu crutches incredibili. Di sicuru, sè vo avete qualchì tipu di quadru in u repertoriu di u servitore web, ùn hà micca sensu di circà u ghjornu zero in ellu cum'è parte di un pentest, ma hè cunsigliatu per truvà è studià mudificazioni persunalizati, plugins è cumpunenti.

Per aumentà a sicurità, hè megliu, se pussibule, per evità l'usu di credenziali in script scritti da sè stessu, è ancu di funziunalità potenzialmente periculosa, cum'è leghje /etc/shadow o manipulà id_rsa.

Elevazione di privilegi per sfruttamentu di vulnerabili

Prima di pruvà à scalate i privilegii per sfruttamentu, hè impurtante capisce trasferimentu di schedari à u òspite di destinazione. In più di l'arnesi di solitu cum'è ssh, ftp, http (wget, curl) ci hè un sanu. "zoo" di pussibulità.

Per migliurà a sicurità di u sistema, aghjurnà regularmente à l'ultime stabile versioni, è ancu pruvate d'utilizà distribuzioni pensate per Enterprise. Altrimenti, hè raru, ma ci sò situazioni induve l'upgrade apt rende u sistema inoperabile.

Sfruttamentu di servizii in esecuzione sottu u cuntestu di l'utilizatori root

Certi servizii Linux funzionanu cum'è root. Puderanu esse truvati cù u cumandimu ps aux | grep root. In questu casu, u serviziu ùn pò micca esse annunziatu nantu à a Rete è pò esse dispunibule in u locu. S'ellu hà sfruttamenti publichi, ponu esse utilizati in modu sicuru: un crash di serviziu in casu di fallimentu hè assai menu criticu cà un crash di l'OS.

ps -aux | grep root # Linux

U casu più successu pò esse cunsideratu l'operazione di un serviziu pirate in u cuntestu di l'utilizatore root. L'operazione di u serviziu SMB dà un accessu privilegiatu à u SISTEMA in i sistemi Windows (per esempiu, attraversu ms17-010). Tuttavia, questu ùn hè micca cumunu nantu à i sistemi Linux, cusì pudete passà assai tempu in scala di privilegi.

Sfruttamentu di Vulnerabilità di u Kernel Linux

Questu hè u percorsu chì duvete piglià l'ultimu. L'operazione senza successu pò purtà à un crash di u sistema, è in l'eventualità di un reboot, alcuni servizii (cumpresu quelli attraversu quale a shell originale hè stata ottenuta) ùn ponu micca avvià. Succede chì l'amministratore hà scurdatu di utilizà u cumandimu systemctl enable. In più, pruvucarà assai insatisfazione cù u vostru travagliu se l'operazione ùn hè micca accunsentutu.
Se decide di utilizà i codici fonte da exploitdb, assicuratevi di leghje i cumenti à u principiu di u script. Frà altre cose, di solitu dice cumu cumpilà currettamente un sfruttatu datu. Sè vo site troppu pigro o avete da fà "ayer" per via di i termini, pudete cercà repository cù sfruttamenti digià compilati, per esempiu. Tuttavia, duvete capisce chì in questu casu avete un porcu in un poke. Per d 'altra banda, se un programatore hà capitu finu à u byte cumu funziona un computer è u software chì usa, ùn scrive micca una sola linea di codice in tutta a so vita.

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

metasploit

Per catturà è manighjà a cunnessione, hè sempre megliu aduprà u modulu exploit/multi/handler. A cosa principal hè di stabilisce a carica curretta, per esempiu, generic/shell/reverse_tcp o generic/shell/bind_tcp. A cunchiglia prodotta da Metasploit pò esse aghjurnata à Meterpreter utilizendu u modulu post/multi/manage/shell_to_meterpreter. Cù Meterpreter, pudete automatizà u prucessu di post-sfruttamentu. Per esempiu, u modulu post/multi/recon/local_exploit_suggester verifica a piattaforma, l'architettura è l'entità necessarie per a sfruttamentu è suggerisce i moduli Metasploit per scalate i privilegii in u sistema di destinazione. Grazie à Meterpreter, l'escalamentu di i privilegii à volte si riduce à lancià u modulu necessariu, ma pirate senza capisce ciò chì succede sottu u cappucciu ùn hè micca "veru" (avete ancu da scrive un rapportu).

Tools

Strumenti per l'automatizazione di a cullizzioni di l'infurmazioni lucali vi risparmià assai sforzu è tempu, ma per elli ùn sò micca capaci di identificà cumplettamente a strada per l'escalation di privilegi, soprattuttu in u casu di sfruttamentu di vulnerabili di u kernel. L'arnesi d'automatizazione eseguiranu tutti i cumandamenti necessarii per voi per cullà infurmazioni nantu à u sistema, ma hè ancu impurtante per pudè analizà dati ricevuti. Spergu chì u mo articulu vi serà utile in questu sensu. Di sicuru, ci sò assai più arnesi ch'è aghju elencu quì sottu, ma tutti facenu circa a listessa cosa - questu hè piuttostu una questione di gustu.

Linpeas

Un Tula abbastanza recente, u primu impegnu data di ghjennaghju 2019. U mo strumentu preferitu in u mumentu. U puntu hè chì mette in risaltu i vettori più interessanti di l'escalazione di privilegi. D'accordu, hè più cunvenutu per ottene una valutazione esperta à questu livellu chì per analizà e dati prima monoliticu.

LinEnum

U mo secunnu strumentu preferitu, ancu raccoglie è urganizeghja e dati ottenuti com'è u risultatu di l'enumerazione lucale.

Linux-exploit-suggester (1,2)

Stu sfruttamentu analizà u sistema per e cundizioni di sfruttamentu adattati. In fattu, farà u travagliu identicu à u modulu Metasploit local_exploit_suggester, ma offre ligami à i codici fonte exploit-db invece di i moduli Metasploit.

Linuxprivchecker

Stu script raccolte è urganizeghja in sezioni una grande quantità di informazioni chì ponu esse utili per furmà un vettore per aumentà i privilegi.

Un'altra volta entreraghju in i dettagli elevazione di privilegi in Linux OS via suid/sgid.

Source: www.habr.com

Add a comment