Ez root im. Fêmkirina Zêdekirina îmtiyazê ya Linux OS

Min çaryeka yekem a 2020-an ji bo azmûna OSCP amade kir. Lêgerîna li agahdariya li ser Google û gelek hewildanên "kor" hemî dema min a vala girt. Bi taybetî jî zehmet bû ku meriv mekanîzmayên zêdekirina îmtiyazan fêm bike. Kursa PWK gelek girîngiyê dide vê mijarê, lê materyalên hînkirinê qet têrê nakin. Li ser Înternetê gelek destan hene ku bi fermanên bikêrhatî ne, lê ez ne arîkarê pêşniyaran im ku bi çavê kor bişopînim bêyî ku fêm bikim ew ê ber bi çi ve bibe.

Ez dixwazim bi we re parve bikim ku ez di dema amadekarî û derbaskirina serketî ya azmûnê de fêr bûm (tevlî serpêhatiyên demkî yên li Hack The Box). Min hestek spasdariyek xurt hîs kir ji bo her bitek agahdariya ku ji min re bû alîkar ku ez bi hişmendî di riya Try Harder de bimeşim, naha dema min e ku ez vegerim civakê.

Ez dixwazim rêbernameyek bidim we ka meriv çawa îmtiyazan di OS Linux-ê de zêde dike, ku tê de analîzek vektorên herî gelemperî û taybetmendiyên têkildar ên ku bê guman dê ji we re bikêr be. Bi gelemperî mekanîzmayên ji bo zêdekirina îmtiyazan bixwe pir hêsan in; dema ava kirin û analîzkirina agahdarî de dijwarî derdikevin. Ji ber vê yekê, min biryar da ku ez bi "gerek gerîdeyê" dest pê bikim û dûv re her vektor di gotarek cûda de binirxînim. Ez hêvî dikim ku ez ji we re demek ji lêkolîna mijarê xilas bikim.

Ez root im. Fêmkirina Zêdekirina îmtiyazê ya Linux OS

Ji ber vê yekê çima zêdekirina îmtiyazê di sala 2020-an de jî gengaz e ger ku rêbaz ji demek pir dirêj ve baş têne zanîn? Di rastiyê de, ger bikarhêner pergalê bi rêkûpêk bi rê ve bibe, dê bi rastî ne gengaz be ku di wê de îmtiyazan zêde bike. Pirsgirêka sereke ya gerdûnî ya ku derfetên weha dide veavakirina neewle. Hebûna guhertoyên nermalava kevnar ên ku di pergalê de qelsiyan vedihewînin jî rewşek taybetî ya veavakirinek ne ewle ye.

Zêdebûna îmtiyazê bi veavakirina ne ewledar

Pêşîn, bila em bi veavakirina neewle re mijûl bibin. Ka em dest pê bikin Pisporên IT-ê bi gelemperî destan û çavkaniyên mîna stackoverflow bikar tînin, ku gelek ji wan ferman û mîhengên ne ewle hene. Nimûneyek berbiçav - nûçe ku koda ku herî zêde ji stackoverflow hatî kopî kirin xeletiyek heye. Rêvebirek pispor dê jambê bibîne, lê ev di cîhanek îdeal de ye. Heta pisporên jêhatî barê xebatê zêde kir dikarin xeletiyan bikin. Bifikirin ku rêveberek ji bo îhaleya paşîn belgeyan amade dike û hevrêz dike, di heman demê de li teknolojiya nû ya ku dê di çaryeka pêş de were bicîh kirin de vedikole, di heman demê de bi awayekî periyodîk pirsgirêkên piştevaniya bikarhêner çareser dike. Û dûv re peywira wî tê dayîn ku zû çend makîneyên virtual saz bike û karûbaran li ser wan bike. Hûn difikirin ku îhtîmala ku admin bi tenê guh nede jambê çi ye? Dûv re pispor diguhezin, lê kêşan dimînin, dema ku pargîdan her gav hewl didin ku lêçûn kêm bikin, tevî karmendên IT-ê.

Pseudo-shell û jailbreak

Pergala pergalê ya ku di qonaxa îstîsmarê de hatî wergirtin bi gelemperî sînordar e, nemaze heke we ew bi hackkirina bikarhênerek servera malperê werdigire. Mînakî, sînorkirinên şêlê dibe ku pêşî li we bigire ku hûn fermana sudo bimeşînin, xeletiyek çêbike:

sudo: no tty present and no askpass program specified

Gava ku we şêlek hebe, ez pêşniyar dikim ku termînalek bêkêmasî biafirînin, mînakî Python bikar bînin.

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

Hûn dikarin bipirsin: "Ger ez dikarim yek bikar bînim, mînakî, ji bo veguheztina pelan, çima ji min re hezar ferman hewce ne?" Rastî ev e ku pergalên cûda têne mîheng kirin; dibe ku mêvandarek diyarkirî Python neyê saz kirin, lê dibe ku Perl hebe. Jêhatî ev e ku meriv bêyî amûrên naskirî di pergalê de tiştên nas bike. Navnîşek bêkêmasî ya taybetmendiyan dikare were dîtin vir.

Şellek kêm-îmtiyaz dikare bi kar were bidestxistin tîmên 1 и tîmên 2 (eceb, tewra GIMP).

Dîroka fermanê bibînin

Linux di pelê de dîroka hemî fermanên darvekirî berhev dike ~ / .bash_history. Ger server bi çalak were bikar anîn û dîroka wê neyê paqij kirin, îhtîmalek mezin heye ku di vê pelê de pêbaweriyan bibînin. Paqijkirina dîrokê bi tenê nerehet e. Ger rêveber neçar bimîne ku bi riya -yê fermanên deh-çîrokî hilbijêrin, bê guman, ji wî re hêsantir e ku meriv vê fermanê ji dîrokê vebêje ji ketina wê. Zêdeyî, pir kes li ser vê "hackê" nizanin. Ger di pergalê de şêlên alternatîf ên mîna Zsh an Masî hebin, dîroka wan heye. Ji bo nîşandana dîroka fermanan di her şêlê de, tenê dîroka fermanê binivîsin.

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

Mêvandariyek hevpar heye, ku tê de server ji bo mêvandariya çend malperan tê bikar anîn. Bi gelemperî, bi vê veavakirinê re, her çavkaniyek bikarhênerek xwe bi pelrêça malê ya cihê û mêvandarek virtual heye. Ji ber vê yekê, heke xelet were mîheng kirin, hûn dikarin pelê .bash_history di pelrêça root ya çavkaniya webê de bibînin.

Lêgerîna şîfreyên di pergala pelan de û êrîşên li ser pergalên cîran

Dibe ku pelên vesazkirinê yên ji bo karûbarên cihêreng ji hêla bikarhênerê weya heyî ve werin xwendin. Di wan de hûn dikarin pêbaweriyan di nivîsa zelal de bibînin - şîfreyên ji bo gihîştina databasek an karûbarên têkildar. Heman şîfre dikare hem ji bo gihîştina databasê û hem jî ji bo destûrdayîna bikarhênerê root (karmendiya pêbaweriyê) were bikar anîn.
Diqewime ku pêbaweriyên hatine dîtin girêdayî karûbarên li ser mêvandarên din in. Pêşxistina êrîşek li ser binesaziyê bi navgîniya mêvandarek lihevhatî ji îstismarkirina mêvandarên din ne xirabtir e. Pergalên cîran jî dikarin bi lêgerîna navnîşanên IP-yê di pergala pelan de werin dîtin.

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

Ger mêvandarê lihevhatî serîlêdanek malperê heye ku ji Înternetê tê gihîştin, çêtir e ku têketinên wê ji lêgerîna navnîşanên IP-yê derxînin. Navnîşanên bikarhênerên çavkaniyê yên ji Înternetê ne mimkûn e ku ji me re bikêr bin, lê navnîşanên tora navxweyî (172.16.0.0/12, 192.168.0.0/16, 10.0.0.0/8) û ku ew diçin, li gorî têketin dadbar dikin , dibe ku balkêş be.

Sudo

Fermana sudo şansê dide bikarhêner ku fermanek di çarçoweya root de bi karanîna şîfreya xwe an bêyî karanîna şîfreyek bi tevahî pêk bîne. Gelek operasyonên li Linux-ê hewceyê mafên root root in, lê xebitandina wekî root wekî pratîkek pir xirab tê hesibandin. Di şûna wê de, çêtir e ku meriv destûra bijartî bicîh bîne da ku emrên di çarçoveyek root de bicîh bike. Lêbelê, gelek amûrên Linux, tevî yên standard ên mîna vi, dikarin werin bikar anîn da ku îmtiyazan bi awayên rewa zêde bikin. Ji bo dîtina rêbazek maqûl, ez pêşniyar dikim ku lê bigerim vir.

Yekem tiştê ku hûn hewce ne bikin gava ku hûn gihîştin pergalê ev e ku emrê sudo -l bimeşînin. Ew ê destûr nîşan bide ku emrê sudo bikar bîne. Ger bikarhênerek bê şîfre (wek apache an www-data) were bidestxistin, vektora zêdekirina îmtiyazê bi rêya sudo ne mimkûn e. Dema ku sudo bikar bînin, pergal dê şîfreyek bixwaze. Hûn ê nikaribin bi karanîna fermana passwd jî şîfreyek saz bikin; ew ê şîfreya heyî ya bikarhêner bipirse. Lê heke sudo hîn jî heye, wê hingê bi bingehîn hûn hewce ne ku lê bigerin:

  • her wergêr, her kes dikare şêlekî çêbike (PHP, Python, Perl);
  • her edîtorên nivîsê (vim, vi, nano);
  • her temaşevan (kêm, zêde);
  • her şiyana ku bi pergala pelan re bixebite (cp, mv);
  • Amûrên ku di bash, înteraktîf an jî wekî fermanek îcrakar de derketine (awk, find, nmap, tcpdump, man, vi, vim, ansible).

Suid/Sgid

Li ser Înternetê gelek destan hene ku şîret dikin ku hemî fermanên suid/sgid berhev bikin, lê gotarek kêm diyar dike ka meriv bi van bernameyan re çi bike. Vebijarkên ji bo zêdekirina îmtiyazên ku karanîna îstîsmaran nahesibînin dikarin werin dîtin vir. Di heman demê de, hejmarek pelên darvekirî ji bo guhertoya OS-ê qelsiyên taybetî hene, bo nimûne.

Di cîhanek îdeal de, hûn ê hemî pakêtên sazkirî bi kêmî ve di nav lêgerîna sploit de bimeşînin. Di pratîkê de, divê ev bi bernameyên herî populer ên wekî sudo were kirin. Di heman demê de her gav vebijarkek jî heye ku meriv pêşkeftina amûrên otomatîkî bikar bîne û piştgirî bike ku dê ji hêla mezinbûna îmtiyazê ve, pelên îcrakar ên bi setên suid/sgid-ê yên balkêş ronî bikin. Ez ê di beşa têkildar a gotarê de navnîşek amûrên weha peyda bikim.

Nivîsarên nivîskî yên ku ji hêla Cron an Init ve di çarçoveya Root de têne rêve kirin

Karên Cron dikarin di bin şertên bikarhêner ên cihêreng de, tevî root, werin meşandin. Ger peywirek kron bi girêdanek pelek darvekirî ve were saz kirin, û ew ji bo nivîsandinê ji we re peyda dibe, ew bi hêsanî dikare bi yek xirab û zêdekirina îmtiyazê were guheztin. Lêbelê, bi xwerû, pelên bi peywirên kronê ji hêla her bikarhêner ve têne xwendin.

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

Rewşa destpêkê jî bi heman rengî ye. Cûdahî ev e ku peywirên di cron de bi awayekî periyodîk, û di destpêkê de - di destpêka pergalê de têne darve kirin. Operasyon dê ji nû ve destpêkirina pergalê hewce bike, û dibe ku hin karûbar dest pê nekin (heke ew di destpêkê de nehatibin tomar kirin).

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

Her weha hûn dikarin li pelên ku ji hêla her bikarhênerek ve têne nivîsandin bigerin.

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

Rêbaz pir baş tê zanîn; Rêvebirên pergalê yên bi ezmûn bi baldarî fermana chmod bikar tînin. Lêbelê, li ser Înternetê, pirraniya destanan danasîna mafên herî zêde diyar dikin. Nêzîkatiya "tenê wê bixebite" ya rêvebirên pergalê yên bê tecrube di prensîbê de ji bo zêdekirina îmtiyazan derfetan diafirîne. Ger gengaz be, çêtir e ku meriv di dîroka fermanê de ji bo karanîna neewle ya chmod binihêre.

chmod +w /path 
chmod 777 /path

Bigihîjin gihîştina şêlê ji bikarhênerên din re

Em li navnîşa bikarhêneran li /etc/passwd dinêrin. Em bala xwe didin kesên ku şêlê wan hene. Hûn dikarin van bikarhêneran hovane bikin - mimkun e ku bi navgîniya bikarhênerê encam de di dawiyê de gengaz be ku îmtiyazan zêde bikin.

Ji bo baştirkirina ewlehiyê, ez pêşniyar dikim ku hûn her gav li gorî prensîba kêmtirîn îmtiyazê tevbigerin. Di heman demê de maqûl e ku meriv wextê xwe li ser verastkirinên ne ewle yên ku dikarin piştî çareserkirinê bimînin derbas bikin - ev "erka teknîkî" ya rêvebirê pergalê ye.

Koda xwe-nivîsandî

Hêja ye ku meriv ji nêz ve li pelên îcrakar ên di pelrêça malê ya bikarhêner û servera malperê de (/var/www/) binêre, heya ku wekî din neyê destnîşan kirin. Dibe ku ev pelan bibe çareseriyek bi tevahî ne ewledar û kelûpelên bêbawer dihewîne. Bê guman, heke we di pelrêça servera malperê de cûreyek çarçoveyek hebe, ne wate ye ku hûn di wê de wekî beşek pentestê li roja zero-yê bigerin, lê tê pêşniyar kirin ku hûn guheztin, pêvek û hêmanên xwerû bibînin û bixwînin.

Ji bo zêdekirina ewlehiyê, heke gengaz be, çêtir e ku ji karanîna pêbaweriyan di nivîsarên xwe-nivîsandî de, û her weha fonksiyonên potansiyel xeternak, wek xwendina /etc/shadow an manîpulekirina id_rsa, dûr bixin.

Bi îstismarkirina qelsiyan bilindkirina îmtiyazan

Berî ku hûn hewl bidin ku bi îstîsmarê îmtiyazan zêde bikin, girîng e ku meriv fêm bike veguhastina pelan ji bo mêvandarê armanc. Ji bilî amûrên asayî yên wekî ssh, ftp, http (wget, curl) tevahiyek heye "zoo" ya îmkanan.

Ji bo baştirkirina ewlehiya pergalê, wê bi rêkûpêk heya nûtirîn nûve bikin stewr versiyonên, û her weha hewl bidin ku belavkirinên ku ji bo Enterprise hatine çêkirin bikar bînin. Wekî din, ew kêm e lê rewş hene ku nûvekirina apt pergalê nexebitîne.

Karûbarên ku di bin çarçoweya bikarhênerê root de têne xebitandin

Hin karûbarên Linux-ê wekî root dimeşînin. Ew dikarin bi karanîna fermana ps aux | werin dîtin grep root. Di vê rewşê de, dibe ku karûbar li ser Înternetê neyê reklam kirin û li herêmê peyda bibe. Ger îstîsmarên wê yên gelemperî hebin, ew dikarin bi ewlehî werin bikar anîn: şkestinek karûbar di rewşek têkçûnê de ji têkçûna OS-ê pir kêmtir krîtîk e.

ps -aux | grep root # Linux

Doza herî serketî dikare operasyona karûbarek hackedkirî di çarçoweya bikarhênerê root de were hesibandin. Karûbarê karûbarê SMB li ser pergalên Windows-ê (mînakek, bi navgîniya ms17-010) gihîştina SYSTEM-a îmtiyazê dide. Lêbelê, ev li ser pergalên Linux-ê ne gelemperî ye, ji ber vê yekê hûn dikarin gelek wext derbas bikin ku îmtiyazan zêde bikin.

Kêmkirina Zelaliyên Kernel Linux

Ev rêya ku divê hûn dawî bigrin ev e. Operasyona neserketî dikare bibe sedema têkçûnek pergalê, û di bûyera ji nû ve destpêkirinê de, dibe ku hin karûbar (tevî yên ku bi navgîniya şêlê destpêkê ve hatî bidestxistin) dest pê nekin. Wusa diqewime ku rêveber bi tenê ji bîr kiriye ku fermana çalakkirina systemctl bikar bîne. Zêdeyî wê ew ê ji karê we re bibe sedema gelek nerazîbûnan ​​heke li ser operasyonê lihevkirin nehatibe kirin.
Ger hûn biryar didin ku kodên çavkaniyê ji exploitdb bikar bînin, bê guman şîroveyên di destpêka nivîsarê de bixwînin. Di nav tiştên din de, ew bi gelemperî dibêje ka meriv çawa birêkûpêkek diyarkirî rast berhev dike. Ger hûn pir tembel in an jî neçar bûn ku "duh" ji ber muhletan bikin, hûn dikarin li depoyên bi îstismarên jixwe hatine berhev kirin bigerin, bo nimûne. Lêbelê, divê hûn fêhm bikin ku di vê rewşê de hûn ê berazek di qulikê de bigirin. Ji hêla din ve, heke bernamenûsek bi bayt fam bike ka komputerek çawa dixebite û nermalava ku ew bikar tîne, ew ê di tevahiya jiyana xwe de yek rêzek kodê nenivîse.

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

metasploit

Ji bo ku hûn pêwendiyê bigirin û bi rê ve bibin, her gav çêtir e ku meriv modula ekploit/multi/handler bikar bîne. Ya sereke ev e ku meriv barkirina rast destnîşan bike, mînakî, gelemperî / shell / reverse_tcp an gelemperî / shell / bind_tcp. Şela ku ji hêla Metasploit ve hatî hilberandin dikare bi karanîna modula post/multi/manage/shell_to_meterpreter bi Meterpreter were nûve kirin. Bi Meterpreter re, hûn dikarin pêvajoya piştî îstismarkirinê otomatîk bikin. Mînakî, modula post/multi/recon/local_exploit_suggester platform, mîmarî û hebûnên ku ji bo îstismarkirinê hewce ne kontrol dike û modulên Metasploit pêşniyar dike ku îmtiyazên li ser pergala armanc zêde bikin. Bi saya Meterpreter, zêdekirina îmtiyazan carinan digihîje destpêkirina modulê ya pêwîst, lê hakkirin bêyî ku fêm bike ka çi di binê kapê de diqewime ne "rast" e (hûn neçar in ku raporek binivîsin).

Amûrên

Amûrên ji bo otomatîkkirina berhevkirina agahdariya herêmî dê ji we re gelek hewil û wext xilas bike, lê bi serê xwe ew nekarin riya zêdekirina îmtiyazan bi tevahî nas bikin, nemaze di rewşa îstismarkirina qelsiyên kernel de. Amûrên otomasyonê dê ji bo ku hûn agahdariya li ser pergalê berhev bikin hemî fermanên pêwîst pêk bînin, lê di heman demê de girîng e ku hûn karibin lêkolîn dane wergirtin. Ez hêvî dikim ku gotara min di vî warî de ji we re kêrhatî be. Bê guman, ji ya ku ez ê li jêr rêz bikim gelek amûrên din hene, lê ew hemî hema hema heman tiştî dikin - ev ji bilî tahmê ye.

Linpeas

Tula-ya pir dawî, kirina yekem ji Çileyê 2019-an vedigere. Amûra min a bijare ya vê gavê. Mesele ev e ku ew vektorên herî balkêş ên zêdekirina îmtiyazê ronî dike. Bipejirînim, ji berhevkirina daneya xav a yekparêzî hêsantir e ku meriv di vê astê de nirxandinek pispor bistîne.

LinEnum

Amûra mina bijare ya duyemîn, ew di heman demê de daneyên ku di encama hejmartina herêmî de hatine bidestxistin berhev dike û organîze dike.

Linux-exploit-suggester (1,2)

Ev îstîsmar dê pergalê ji bo şert û mercên îstîsmarê yên maqûl analîz bike. Di rastiyê de, ew ê karê mîna modula Metasploit local_exploit_suggester bike, lê dê li şûna modulên Metasploit lînkên kodên çavkaniyê exploit-db pêşkêşî bike.

Linuxprivchecker

Ev skrîpt dê hejmareke mezin a agahdariya ku dikare ji bo avakirina vektorek ji bo zêdekirina îmtiyazan bikêr be di beşan de kom bike û birêxistin bike.

Careke din ez ê bi berfirehî biçim bilindkirina îmtiyazan di OS Linux-ê de bi riya suid/sgid.

Source: www.habr.com

Add a comment