Doriți să obțineți acces de superutilizator la un sistem Linux? Iată câteva dintre cele mai bune modalități de a enumera o mașină Linux.

Enumerarea este una dintre etapele cheie ale testării de penetrare. Este primul lucru de făcut când ați compromis un sistem țintă ca tester de penetrare. Deși există o multitudine de instrumente pentru automatizarea acestui proces, este întotdeauna recomandat să cercetați manual și să verificați din nou sistemul pentru potențiali vectori de escaladare a privilegiilor.

Să ne uităm la diferitele moduri de a enumera manual un sistem Linux pentru escaladarea privilegiilor.

De ce este importantă enumerarea pentru escaladarea privilegiilor?

Escalarea privilegiilor, cunoscută și sub numele de Escalare a privilegiilor (EOP) este o componentă de bază a testării de penetrare și a metodologiei de testare a penetrației. După cum sugerează și numele, este o etapă în care încercați să vă ridicați privilegiile administratorului sau, în sistemele Linux, utilizatorului rădăcină.

instagram viewer

Pentru a obține privilegii de root, trebuie mai întâi să găsiți o vulnerabilitate în sistem. Aici intervine enumerarea. Deși există instrumente pentru a automatiza enumerarea, de cele mai multe ori, enumerarea manuală și amănunțită poate descoperi configurații greșite și alte vulnerabilități care nu sunt detectate de instrumente.

1. Enumerarea sistemului

Primul lucru pe care ar trebui să-l faceți după ce ați câștigat o poziție inițială este să aflați despre sistemul la care aveți acces stabilit. Acest lucru vă va ajuta să vă optimizați încărcăturile utile pentru a se potrivi cu arhitectura și să asigurați compatibilitatea maximă a sarcinilor dvs. utile cu sistemul țintă.

De exemplu, dacă aveți un exploit pe 64 de biți, va trebui să îl modificați dacă sistemul dvs. țintă acceptă doar software pe 32 de biți, deoarece există o diferență între sistemele pe 32 de biți și cele pe 64 de biți.

De asemenea, cunoașterea versiunii de kernel vă va ajuta să căutați exploit-uri pe web în cazul în care descoperiți că versiunea este învechită și vulnerabilă la o exploatare publică. Iată câteva comenzi care vă vor ajuta să obțineți informații despre sistem:

Pentru a găsi informații despre sistem, cum ar fi versiunea kernelului, versiunea sistemului de operare etc., tastați:

cat /etc/cpuinfo 
uname -a

Dacă doriți să aflați mai multe despre arhitectura CPU, utilizați comanda lscpu:

lscpu

2. Enumerarea procesului

Procesele sunt programe în execuție. Cunoașterea listei complete de procese pe un sistem Linux, cuplată cu alte câteva tactici de enumerare menționate în acest ghid vă vor ajuta să identificați procesele potențial vulnerabile și să le folosiți pentru a le crește privilegiu.

De exemplu, dacă găsiți un proces care rulează cu privilegii de rădăcină, este posibil să puteți injecta cod arbitrar în el, ceea ce ar putea duce la escaladarea cu succes a privilegiilor.

Poți să folosești comanda ps cu aux steaguri pentru a lista toate procesele din sistem:

ps aux

3. Enumerarea utilizatorilor și a grupurilor

Enumerarea utilizatorilor și a grupurilor este importantă pentru a afla cine are acces la ce parte a sistemului. Știind acest lucru, vă permite să vă stabiliți obiectivele în mod eficient și să construiți o strategie eficientă de atac. În plus, puteți crea mapări adecvate și puteți înțelege în profunzime rolurile și privilegiile fiecărui cont.

Vizibilitatea conturilor privilegiate vă permite să încercați combinații cunoscute nume de utilizator-parolă. Puteți imprima conținutul /etc/passwd și /etc/group fișiere pentru a accesa lista de utilizatori. Alternativ, puteți utiliza și comanda getent.

La obține lista de utilizatori pe Linux:

getent passwd

Pentru a obține lista de grupuri:

grup getent

4. Investigarea fișierelor sensibile

Fișiere sensibile, cum ar fi /etc/passwd și /etc/shadow poate scurge o mulțime de informații. Din /etc/shadow puteți găsi hash-urile parolei utilizatorilor și puteți încerca să le spargeți cu un instrument de hash-cracking precum Hashcat sau John the Ripper.

Există, de asemenea, /etc/sudoers fișier, care, dacă îl puteți edita cumva, va permite modificarea permisiunilor sudo pentru utilizatori și grupuri.

5. Se verifică permisiunile sudo

Gestionarea corectă a permisiunilor sudo este crucială pentru siguranța unui sistem Linux. Analizarea permisiunilor sudo vă va oferi o perspectivă asupra potențialilor vectori pentru escaladarea privilegiilor. Dacă există configurații greșite, precum anumite programe au un nivel alarmant de privilegii, este posibil să le puteți exploata pentru a obține acces root.

Acesta este doar un exemplu al numeroaselor căi de atac care se pot deschide odată ce aveți claritatea permisiunilor sudo în sistemul Linux. Un alt exemplu ar fi abuzarea mecanismului de preîncărcare a bibliotecii LD_PRELOAD, pe care îl puteți enumera uitându-vă la permisiunile sudo.

sudo -l

6. Găsirea exploatărilor kernelului Linux

Exploatările nucleului Linux sunt mortale, deoarece atacă nucleul sistemului de operare care rulează pe sistemul compromis. Cu o defecțiune critică a nucleului, veți putea face aproape orice cu sistemul.

Pentru a găsi exploatările kernel-ului, mai întâi, aflați versiunea kernel-ului și apoi, folosind un instrument precum searchsploit sau, folosind Google Dorks, găsiți un exploit adecvat care afectează versiunea exactă a nucleului care rulează pe sistem.

7. Exploatarea binarelor SUID

SUID este abrevierea pentru Set Owner User ID la execuție. Este un tip special de permisiune de fișier care, atunci când este setată, execută un program cu privilegiile proprietarului său.

Dacă un program a fost creat de utilizatorul root și bitul SUID a fost setat pentru acesta, programul, atunci când este executat, ar avea privilegii de root. Cum poate fi abuzat SUID? E simplu.

Enumerați toate binarele cu biți SUID setați, parcurgeți lista, găsiți un binar pentru care aveți acces la scriere și editați-i sursa pentru a adăuga sarcina utilă. Puteți folosi comanda find pentru a căuta binare SUID și pentru a redirecționa ieșirea standard către /dev/null:

găsi / -perm -4000 2>/dev/null

8. Deturnarea bibliotecilor

Uneori pot exista programe care rulează pe sistem care utilizează biblioteci care nu sunt protejate la scriere. Într-un astfel de scenariu, puteți suprascrie cu ușurință biblioteca în uz și puteți prelua controlul asupra funcționalității programului.

Dacă aveți noroc și găsiți un program care rulează ca root, puteți deturna biblioteca de care depinde și puteți obține acces la shell root.

9. Investigarea și deturnarea variabilelor de mediu

Variabilele de mediu sunt tipuri speciale de variabile care, într-o anumită măsură, definesc modul în care sistemul și programele funcționează. O variabilă de mediu importantă este variabila PATH.

Stochează locația tuturor fișierelor binare executabile din sistem. Puteți manipula variabila PATH și o puteți lega cu alte vulnerabilități, cum ar fi deturnarea bibliotecii, pentru a obține acces la rădăcină.

De exemplu, să presupunem că există un executabil cu un bit SUID setat. Pentru a funcționa corect, apelează un binar fără a-i defini calea completă.

Puteți profita de acest lucru creând o versiune duplicată, rău intenționată a binarului și actualizând variabila PATH cu locația binarul rău intenționat, astfel încât atunci când executabilul SUID este rulat, binarul rău intenționat va fi rulat ca root și veți putea genera un shell rădăcină.

În plus, există și șanse mari de a găsi chei și parole secrete prin simpla căutare prin variabilele de mediu. Puteți imprima toate variabilele de mediu folosind comanda env:

înv

10. Găsiți artefacte în Bash History

De multe ori, istoricul utilizatorului actual nu va fi șters. Puteți abuza de acest lucru pentru a obține acces la informații sensibile sau pentru a rula din nou comenzile anterioare cu parametri modificați.

Deși probabil că acestea nu vor duce la escaladarea privilegiilor, este o sursă bună de scurgeri de informații pentru a vă oferi claritate despre ceea ce face de obicei utilizatorul pe sistem.

11. Deturnarea locurilor de muncă Cron vulnerabile

Joburile Cron sunt o caracteristică încorporată și foarte plină de resurse a Linux. Dacă ați migrat din Windows, o sarcină cron poate fi comparată direct cu o sarcină programată pe Windows.

Se rulează periodic și execută comenzi. Atât timpul în care va rula, cât și comenzile pe care le va executa sunt predefinite de utilizator. Uneori s-ar putea să găsiți câteva job-uri cron vulnerabile la atacuri, cum ar fi injectarea de wildcard sau care pot fi scrise de către utilizatorul la care v-ați autentificat.

Puteți abuza de aceste vulnerabilități pentru a obține acces root la sistem. Pentru a exploata un job cron, trebuie mai întâi să găsiți unul vulnerabil. Iată comenzile pentru a enumera joburile cron care rulează în prezent și alte date relevante:

ls /etc/cron.d/
crontab -l -u

12. Listarea pachetelor învechite

Când ați stabilit accesul la un sistem, unul dintre primii pași pe care ar trebui să-i faceți este să enumerați toate pachetele de software instalate și să numărați versiunile lor instalate cu cea mai recentă versiune.

Există posibilitatea ca un pachet obscur să fie instalat, care ar putea să nu fie folosit prea mult, dar este extrem de vulnerabil la un atac de escaladare a privilegiilor. Apoi puteți exploata acel pachet pentru a obține acces root.

Utilizați comanda dpkg cu -l etichetă pentru a lista pachetele instalate pe sisteme bazate pe Debian și Ubuntu:

dpkg -l

Pentru sistemele RHEL/CentOS/Fedora, utilizați această comandă pentru a lista pachetele instalate:

rpm -qa 

Acum știți cum să enumerați manual Linux pentru escaladarea privilegiilor

Escaladarea privilegiilor depinde numai de enumerare. Cu cât ai acces la mai multe informații, cu atât vei putea să-ți planifici mai bine strategiile de atac.

Enumerarea eficientă este cheia pentru a stabili un punct de sprijin, a escalada privilegiile și a persista cu succes pe sistemul dumneavoastră țintă. Deși a face lucrurile manual ajută, unele dintre sarcini pot fi atribuite instrumentelor automate pentru a economisi timp și efort. Trebuie să știți despre cele mai bune instrumente de securitate pentru a scana un sistem pentru vulnerabilități.