Ech sinn root. Linux OS Privileg Eskalatioun verstoen

Ech hunn den éischte Véierel vun 2020 fir den OSCP Examen virbereet. D'Sich no Informatioun op Google a vill "blannen" Versich huet all meng Fräizäit opgeholl. Et war besonnesch schwéier d'Mechanismen fir d'Erhéijung vun de Privilegien ze verstoen. De PWK-Cours gëtt vill Opmierksamkeet op dëst Thema, awer d'Léiermaterial geet ni duer. Et gi vill Handbücher um Internet mat nëtzlechen Kommandoen, awer ech sinn net e Fan vu blann Recommandatiounen ze verfollegen ouni ze verstoen wat et féiert.

Ech géif gären mat Iech deelen wat ech geléiert hunn während der Virbereedung an erfollegräiche Passage vum Examen (och periodesch Forays an Hack The Box). Ech hu e staarkt Gefill vun Dankbarkeet gefillt fir all Informatioun déi mir gehollef huet de Try Harder Wee méi bewosst ze goen, elo ass meng Zäit fir d'Gemeinschaft zréckzekommen.

Ech wëll Iech e Handbuch ginn wéi Dir Privilegien am OS Linux eskaléiert, wat eng Analyse vun den heefegste Vektoren a verbonne Feature enthält, déi Iech definitiv nëtzlech sinn. Dacks sinn d'Mechanismen fir d'Erhéijung vun de Privilegien selwer zimlech einfach; Schwieregkeeten entstinn wann Dir Informatioun strukturéiert an analyséiert. Dofir hunn ech decidéiert mat engem "Sightseeing Tour" unzefänken an dann all Vektor an engem separaten Artikel ze berücksichtegen. Ech hoffen ech spueren Iech Zäit fir d'Thema ze fuerschen.

Ech sinn root. Linux OS Privileg Eskalatioun verstoen

Also firwat ass Privileg Eskalatioun iwwerhaapt méiglech am Joer 2020 wann d'Methoden scho ganz laang bekannt sinn? Tatsächlech, wann de Benotzer de System richteg behandelt, wäert et wierklech net méiglech sinn Privilegien dran ze erhéijen. Den Haapt globalen Problem deen esou Méiglechkeeten entsteet ass onsécher Configuratioun. D'Präsenz vun alen Softwareversioune mat Schwachstelle am System ass och e spezielle Fall vun enger onsécherer Konfiguratioun.

Privileg Eskalatioun iwwer onsécher Konfiguratioun

Als éischt, loosst eis mat onsécherer Konfiguratioun beschäftegen. Loosst d'mat ufänken IT Fachleit benotzen dacks Handbuch a Ressourcen wéi Stackoverflow, vill vun deenen enthalen onsécher Kommandoen a Konfiguratiounen. E markant Beispill - den Neiegkeeten datt de Code am meeschte kopéiert vum Stackoverflow e Feeler enthält. En erfuerene Administrateur wäert de Jamb gesinn, awer dëst ass an enger idealer Welt. Och kompetent Spezialisten erhéicht Aarbechtsbelaaschtung kapabel Feeler ze maachen. Stellt Iech vir, datt en Administrateur d'Dokumentatioun fir déi nächst Ausschreiwung virbereet a koordinéiert, gläichzäiteg an déi nei Technologie verdéiwen, déi am nächste Véierel ëmgesat soll ginn, a periodesch Benotzersupportproblemer léisen. An dann kritt hien d'Aufgab fir séier e puer virtuelle Maschinnen opzestellen an d'Servicer drop auszerollen. Wat mengt Dir ass d'Wahrscheinlechkeet datt den Administrateur einfach de Jamb net bemierkt? Dann änneren d'Spezialisten, awer d'Krütchen bleiwen, während d'Firmen ëmmer beméien d'Käschten ze minimiséieren, och fir IT Personal.

Pseudo-Shell a Jailbreak

D'System Shell, déi während der Ausbeutungsstadium kritt gëtt, ass dacks limitéiert, besonnesch wann Dir et kritt hutt duerch e Benotzer vum Webserver ze hacken. Zum Beispill, Shell Restriktiounen kënne verhënneren datt Dir de sudo Kommando ausféiert, e Feeler produzéiert:

sudo: no tty present and no askpass program specified

Wann Dir eng Shell hutt, recommandéieren ech e vollwäertege Terminal ze kreéieren, zum Beispill Python.

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

Dir kënnt froen: "Firwat brauch ech dausend Kommandoen, wann ech een benotze kann, zum Beispill fir Dateien ze transferéieren?" D'Tatsaach ass datt Systemer anescht konfiguréiert sinn; e bestëmmte Host kann Python net installéiert hunn, awer Perl hunn. D'Fäegkeet ass fäeg ze sinn, vertraut Saachen am System ze maachen ouni vertraut Tools. Eng komplett Lëscht vu Funktiounen kann fonnt ginn hei.

Eng niddereg-privilegiéiert Schuel ka mat Hëllef kritt ginn Equipen 1 и Equipen 2 (iwwerraschend, souguer GIMP).

View Kommando Geschicht

Linux sammelt eng Geschicht vun all ausgefouerten Kommandoen an enger Datei ~ / .bash_history. Wann de Server aktiv benotzt gëtt a seng Geschicht net geläscht ass, ass et eng héich Probabilitéit fir Umeldungsinformatiounen an dëser Datei ze fannen. D'Geschicht läschen ass einfach onbequem. Wann den Administrateur gezwongen ass, zéng-Geschicht Kommandoen duerch ze wielen, ass et natierlech méi bequem fir hien dëst Kommando aus der Geschicht ze ruffen wéi et erëm anzeginn. Plus, vill Leit wëssen net iwwer dësen "Hack". Wann et alternativ Muschelen wéi Zsh oder Fësch am System sinn, hunn se hir eege Geschicht. Fir d'Geschicht vun de Kommandoen an all Shell ze weisen, gitt einfach d'Kommandogeschicht.

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

Et gëtt e gemeinsame Hosting, an deem de Server benotzt gëtt fir verschidde Websäiten ze hosten. Typesch, mat dëser Konfiguratioun, huet all Ressource säin eegene Benotzer mat engem separaten Heemverzeichnis an engem virtuelle Host. Also, wann falsch konfiguréiert ass, kënnt Dir d'.bash_history Datei am Root Verzeechnes vun der Webressource fannen.

Sich no Passwierder am Dateiesystem an Attacken op ugrenzend Systemer

Konfiguratiounsdateien fir verschidde Servicer kënne vun Ärem aktuelle Benotzer liesbar sinn. An hinnen kënnt Dir Umeldungsinformatiounen am Kloertext fannen - Passwierder fir Zougang zu enger Datebank oder verbonne Servicer. Datselwecht Passwuert kann souwuel benotzt ginn fir Zougang zu der Datebank ze kréien an de Root Benotzer ze autoriséieren (Umeldungspersonal).
Et geschitt datt d'Umeldungsinformatiounen, déi fonnt goufen, zu Servicer op anere Hosten gehéieren. En Attack op Infrastruktur duerch e kompromittéierten Host z'entwéckelen ass net méi schlëmm wéi aner Hosten auszenotzen. Nopesch Systemer kënnen och fonnt ginn andeems Dir IP Adressen am Dateiesystem kuckt.

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

Wann de kompromittéierten Host eng Webapplikatioun aus dem Internet zougänglech huet, ass et besser seng Logbicher aus der Sich no IP Adressen auszeschléissen. Adressen vun Ressource Benotzer aus dem Internet sinn onwahrscheinlech nëtzlech fir eis, mä d'Adressen vun der intern Reseau (172.16.0.0/12, 192.168.0.0/16, 10.0.0.0/8) a wou se goen, duerch d'Logbicher beurteelen , kann interessant sinn.

Sudo

De Sudo Kommando gëtt dem Benotzer d'Fäegkeet fir e Kommando am Root Kontext mat hirem eegene Passwuert auszeféieren oder ouni e Passwuert ze benotzen. Vill Operatiounen am Linux erfuerderen Root Privilegien, awer als Root lafen gëtt als eng ganz schlecht Praxis ugesinn. Amplaz ass et besser fir selektiv Erlaabnes ze gëllen fir Kommandoen am Root Kontext auszeféieren. Wéi och ëmmer, vill Linux Tools, dorënner Standard wéi vi, kënne benotzt ginn fir Privilegien op legitim Manéier ze eskaléieren. Fir eng gëeegent Method ze fannen, ech recommandéieren ze kucken hei.

Dat éischt wat Dir maache musst wann Dir Zougang zum System kritt ass de sudo -l Kommando auszeféieren. Et weist d'Erlaabnis fir de sudo Kommando ze benotzen. Wann e Benotzer ouni Passwuert kritt gëtt (wéi Apache oder www-Daten), ass de Privileg Eskalatiounsvektor iwwer sudo onwahrscheinlech. Wann Dir Sudo benotzt, freet de System e Passwuert. Dir kënnt och net e Passwuert mat dem Passwd Kommando setzen; Et freet d'aktuell Passwuert vum Benotzer. Awer wann sudo nach ëmmer verfügbar ass, da musst Dir am Fong no kucken:

  • all Dolmetscher, jidderee kann eng Shell spawnen (PHP, Python, Perl);
  • all Text Editoren (vim, vi, nano);
  • all Zuschauer (manner, méi);
  • all Fäegkeet fir mam Dateiesystem ze schaffen (cp, mv);
  • Tools déi Output am Bash hunn, interaktiv oder als ausführbar Kommando (awk, find, nmap, tcpdump, man, vi, vim, ansible).

Süd/Sgid

Et gi vill Handbücher um Internet déi beroden all suid / sgid Kommandoen ze sammelen, awer e rare Artikel gëtt Spezifizitéiten iwwer wat mat dëse Programmer ze maachen. Optiounen fir Privilegien ze eskaléieren, déi d'Benotzung vun Ausnotzen net berücksichtegen, kënne fonnt ginn hei. Och eng Zuel vun ausführbaren Dateien hu spezifesch Schwachstelle fir d'OS Versioun, zum Beispill.

An enger idealer Welt géift Dir all installéiert Packagen duerch op d'mannst Searchsploit lafen. An der Praxis sollt dëst mat de populärste Programmer wéi Sudo gemaach ginn. Et gëtt och ëmmer d'Optioun fir d'Entwécklung vun automatiséierten Tools ze benotzen an z'ënnerstëtzen, déi interessant Highlight, aus der Siicht vun der Privileg Eskalatioun, ausführbar Dateie mat dem suid / sgid Bits Set. Ech ginn eng Lëscht vun esou Tools an der entspriechender Rubrik vum Artikel.

Schreifbar Scripte lafen vum Cron oder Init am Kontext vu Root

Cron Jobs kënnen ënner verschiddene Benotzerkontexter lafen, dorënner Root. Wann eng Cron Task mat engem Link op eng ausführbar Datei ageriicht ass, an et ass verfügbar fir Iech ze schreiwen, kann se einfach duerch eng béiswëlleg a Privileg Eskalatioun ersat ginn. Wéi och ëmmer, Par défaut sinn Dateie mat Cron Aufgaben vun all Benotzer liesbar.

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

D'Situatioun ass ähnlech mat Init. Den Ënnerscheed ass datt d'Aufgaben am Cron periodesch ausgefouert ginn, an am Init - beim Systemstart. D'Operatioun erfuerdert e System Neistart, a verschidde Servicer kënnen net starten (wann se net beim Startup registréiert waren).

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

Dir kënnt och no Dateien sichen déi vun all Benotzer schreiwenbar sinn.

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

D'Method ass zimlech bekannt; erfuerene Systemadministrateuren benotze virsiichteg de chmod Kommando. Wéi och ëmmer, um Internet beschreift déi grouss Majoritéit vun Handbücher d'Astellung vun maximal Rechter. D'Approche "just make it work" vun onerfueren Systemadministrateuren schaaft Méiglechkeete fir d'Eskalatioun vu Privilegien am Prinzip. Wa méiglech, ass et besser an der Kommandogeschicht fir onsécher Notzung vu chmod ze kucken.

chmod +w /path 
chmod 777 /path

Gitt Shell Zougang zu anere Benotzer

Mir kucken d'Lëscht vun de Benotzer an /etc/passwd. Mir bezuelen Opmierksamkeet op déi, déi eng Schuel hunn. Dir kënnt dës Benotzer bruten - et ass méiglech datt duerch de resultéierende Benotzer et schlussendlech méiglech ass Privilegien ze erhéijen.

Fir d'Sécherheet ze verbesseren, recommandéieren ech Iech ëmmer un de Prinzip vum mannsten Privileg ze halen. Et mécht och Sënn Zäit ze verbréngen fir onsécher Konfiguratiounen ze kontrolléieren déi no der Troubleshooting bleiwen kéinten - dat ass déi "technesch Flicht" vum Systemadministrator.

Self-schrëftlech Code

Et ass derwäert e Bléck op déi ausführbar Dateien am Heemverzeichnis vum Benotzer an dem Webserver (/var/www/, wann net anescht uginn). Dës Dateie kënne sech als komplett onsécher Léisung erausstellen an onheemlech Krutchen enthalen. Natierlech, wann Dir eng Aart Kader am Webserververzeechnes hutt, mécht et kee Sënn fir null-Dag dran als Deel vun engem Pentest ze sichen, awer et ass recommandéiert fir personaliséiert Ännerungen, Plugins a Komponenten ze fannen an ze studéieren.

Fir d'Sécherheet ze erhéijen, ass et besser, wa méiglech, d'Benotzung vun Umeldungsinformatiounen a selbstgeschriwwene Scripten ze vermeiden, souwéi potenziell geféierlech Funktionalitéit, wéi zB /etc/shadow liesen oder id_rsa manipuléieren.

Erhéijung vun de Privilegien duerch Ausbeutung vu Schwachstelle

Ier Dir probéiert Privilegien duerch Ausbeutung ze eskaléieren, ass et wichteg ze verstoen Dateien op den Zilhost transferéieren. Zousätzlech zu den üblechen Tools wéi ssh, ftp, http (wget, curl) gëtt et eng ganz "Zoo" vu Méiglechkeeten.

Fir d'Sécherheet vum System ze verbesseren, aktualiséieren se regelméisseg op déi lescht stabil Versiounen, a probéiert och Verdeelungen ze benotzen fir Enterprise entwéckelt. Soss ass et seelen awer et ginn Situatiounen wou apt Upgrade de System inoperabel mécht.

Ausnotzen Servicer déi ënner dem Root Benotzerkontext lafen

E puer Linux Servicer lafen als Root. Si kënne mam Kommando ps aux | fonnt ginn grep root. An dësem Fall kann de Service net um Internet ugekënnegt ginn a lokal verfügbar sinn. Wann et ëffentlech Ausnotzen huet, kënne se sécher benotzt ginn: e Service Crash am Fall vun engem Echec ass vill manner kritesch wéi e Crash vum OS.

ps -aux | grep root # Linux

Déi erfollegräichste Fall kann als Operatioun vun engem gehackte Service am Kontext vum Root Benotzer ugesi ginn. Operatioun vum SMB Service gëtt privilegiéierten SYSTEM Zougang op Windows Systemer (zum Beispill duerch ms17-010). Wéi och ëmmer, dëst ass net heefeg op Linux Systemer, sou datt Dir vill Zäit verbrénge kënnt fir Privilegien ze eskaléieren.

Ausnotzen vun Linux Kernel Schwachstelle

Dëst ass de Wee deen Dir fir d'lescht sollt huelen. Mëssgléckt Operatioun kann zu engem System Crash féieren, an am Fall vun engem Restart, kënnen e puer Servicer (och déi duerch déi déi initial Shell kritt goufen) net starten. Et geschitt datt den Administrator einfach vergiess huet de Systemctl Enable Kommando ze benotzen. Plus et wäert vill Onzefriddenheet mat Ärer Aarbecht féieren, wann d'Operatioun net ausgemaach gouf.
Wann Dir décidéiert d'Quellcoden aus exploitdb ze benotzen, gitt sécher d'Kommentaren am Ufank vum Skript ze liesen. Ënner anerem seet et normalerweis wéi een e bestëmmten Exploit korrekt kompiléiert. Wann Dir ze faul sidd oder et "gëschter" musst maachen wéinst Frist, kënnt Dir Repositories mat scho kompiléierten Exploiten sichen, zum Beispill. Wéi och ëmmer, Dir sollt verstoen datt an dësem Fall Dir e Schwäin an engem Poke kritt. Op der anerer Säit, wann e Programméierer bis zum Byte versteet wéi e Computer funktionnéiert an d'Software déi se benotzt, da géif hien a sengem ganze Liewen net eng eenzeg Zeil Code schreiwen.

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

metasploit

Fir d'Verbindung ze fangen an ze handhaben, ass et ëmmer besser den Exploit / Multi / Handler Modul ze benotzen. Den Haapt Saach ass déi richteg Notzlaascht ze setzen, zum Beispill generic/shell/reverse_tcp oder generic/shell/bind_tcp. D'Shell, déi vu Metasploit produzéiert gëtt, kann op Meterpreter aktualiséiert ginn mat dem Post/multi/manage/shell_to_meterpreter Modul. Mat Meterpreter kënnt Dir de Post-Exploitatiounsprozess automatiséieren. Zum Beispill kontrolléiert de Post/multi/recon/local_exploit_suggester Modul d'Plattform, d'Architektur an d'Entitéite fir d'Exploitatioun erfuerderlech a proposéiert Metasploit Moduler fir d'Privilegien am Zilsystem z'eskaléieren. Dank Meterpreter, eskaléierend Privilegien kommen heiansdo erof op den erfuerderleche Modul ze lancéieren, awer Hacken ouni ze verstoen wat ënner der Hood geschitt ass net "richteg" (Dir musst nach ëmmer e Bericht schreiwen).

Tools

Tools fir d'Automatiséierung vun der lokaler Informatiounssammlung spueren Iech vill Effort an Zäit, awer eleng kënnen se de Wee fir d'Eskalatioun vu Privilegien net voll z'identifizéieren, besonnesch am Fall vun der Ausbeutung vu Kernel Schwachstelle. Automatisatiounsinstrumenter wäerten all déi néideg Kommandoen ausféieren fir Iech Informatioun iwwer de System ze sammelen, awer et ass och wichteg fir ze kënnen analyséieren kritt Donnéeën. Ech hoffen, datt mäin Artikel Iech an dëser Hisiicht nëtzlech ass. Natierlech ginn et vill méi Tools wéi ech hei ënnen opzielen, awer si maachen all ongeféier déiselwecht Saach - dëst ass éischter eng Saach vu Goût.

Linpeas

Ganz rezent Tula, den éischten Engagement staamt zréck op Januar 2019. Meng Léifsten Outil am Moment. De Punkt ass datt et déi interessantst Vektore vu Privileg Eskalatioun beliicht. Averstanen, et ass méi praktesch en Expert Bewäertung op dësem Niveau ze kréien wéi monolithesch Matière Daten ze analyséieren.

LinEnum

Meng zweet Liiblingsinstrument, et sammelt an organiséiert och Daten, déi als Resultat vun der lokaler Enumeratioun kritt goufen.

Linux-Exploit-Suggester (1,2)

Dësen Ausbeutung analyséiert de System fir gëeegent Ausbeutungsbedéngungen. Tatsächlech wäert et d'Aarbecht identesch mam Metasploit Modul local_exploit_suggester maachen, awer bitt Linken op Exploit-db Quellcodes anstatt Metasploit Moduler.

Linuxprivchecker

Dëst Skript sammelt an organiséiert an Sektiounen eng grouss Quantitéit un Informatioun déi nëtzlech ka sinn fir e Vektor ze bilden fir d'Privilegien ze erhéijen.

Eng aner Kéier ginn ech an den Detail Héicht vu Privilegien am Linux OS iwwer suid / sgid.

Source: will.com

Setzt e Commentaire