Abdi akar. Ngartos Linux OS Privilege Escalation

Kuring nyéépkeun kuartal kahiji 2020 pikeun nyiapkeun ujian OSCP. Milarian inpormasi dina Google sareng seueur usaha "buta" nyéépkeun waktos luang kuring. Tétéla hésé pisan ngartos mékanisme pikeun naékna hak istimewa. Tangtu PWK nengetan hébat kana topik ieu, tapi bahan metodologis sok teu cukup. Aya seueur manual dina Internét kalayan paréntah anu mangpaat, tapi kuring henteu ngadukung ambing nuturkeun saran tanpa ngartos dimana ieu bakal ngakibatkeun.

Abdi hoyong bagikeun sareng anjeun naon anu kuring tiasa diajar nalika nyiapkeun sareng lulus ujian anu suksés (kalebet serangan périodik dina Hack The Box). Kuring ngarasa rasa syukur anu jero pikeun unggal inpormasi anu ngabantosan kuring leumpang dina jalur Coba Harder langkung sadar, ayeuna waktos kuring masihan deui ka masarakat.

Abdi hoyong masihan anjeun pituduh pikeun escalation hak husus dina OS Linux Ubuntu, nu ngawengku analisis vektor paling umum sarta fitur patali nu pasti bakal butuh. Mindeng, mékanisme escalation hak husus sorangan cukup basajan, kasusah timbul nalika structuring jeung analisa informasi. Ku alatan éta, kuring mutuskeun pikeun mimitian ku "wisata wisata" lajeng mertimbangkeun unggal vektor dina artikel misah. Abdi ngarepkeun anjeun tiasa ngahémat waktos pikeun diajar topik.

Abdi akar. Ngartos Linux OS Privilege Escalation

Janten, naha eskalasi hak istimewa tiasa dilaksanakeun dina taun 2020 upami metodena parantos dipikanyaho lami pisan? Nyatana, upami pangguna leres-leres ngatur sistem, leres-leres moal mungkin pikeun ningkatkeun hak istimewa di jerona. Masalah global utama anu nyababkeun kasempetan sapertos kitu nyaéta konfigurasi teu aman. Ayana versi software luntur anu ngandung kerentanan dina sistem ogé kasus khusus tina konfigurasi anu teu aman.

Escalation hak husus ngaliwatan konfigurasi teu aman

Anu mimiti, hayu urang nungkulan konfigurasi teu aman. Hayu urang mimitian ku Profesional IT sering nganggo manual sareng sumber sapertos stackoverflow, seueur anu ngandung paréntah sareng konfigurasi anu teu aman. Hiji conto keuna nyaeta wartos yén kodeu paling disalin ti stackoverflow ngandung kasalahan. Admin anu berpengalaman bakal ningali jamb, tapi ieu dina dunya anu idéal. Malah profésional kompeten ngaronjat beban gawé sanggup nyieun kasalahan. Bayangkeun yén pangurus nyiapkeun sareng nyatujuan dokuméntasi pikeun tender salajengna, dina waktos anu sami ngagali kana téknologi anyar anu bakal diwanohkeun dina kuartal salajengna, bari périodik ngarengsekeun tugas pangrojong pangguna. Teras anjeunna dipasihan tugas gancang ngangkat sababaraha mesin virtual sareng ngaluncurkeun jasa na. Kumaha saur anjeun, naon kamungkinan yén admin ngan saukur teu perhatikeun jamb? Lajeng spesialis robah, tapi crutches tetep, bari pausahaan salawasna narékahan pikeun ngaleutikan waragad, kaasup nu keur spesialis IT.

cangkang pseudo jeung jailbreak

Cangkang sistem anu dicandak salami fase produksi sering diwatesan, khususna upami anjeun nampi ku cara nga-hack pangguna server wéb. Salaku conto, larangan cangkang tiasa nyegah anjeun nganggo paréntah sudo kalayan kasalahan:

sudo: no tty present and no askpass program specified

Sanggeus meunang cangkang, Kuring nyarankeun nyieun hiji terminal full-fledged, contona jeung Python.

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

Anjeun nanya: "Naha kuring kudu sarébu Paréntah, lamun kuring bisa make hiji, contona, pikeun mindahkeun file?" Kanyataan yén sistem anu ngonpigurasi béda, dina host hareup Python bisa jadi teu dipasang, tapi Perl sadia. Kaahlian nyaéta tiasa ngalakukeun hal-hal anu biasa dina sistem tanpa alat anu akrab. Daptar lengkep fitur tiasa dipendakan di dieu.

A cangkang hak husus low bisa didapet maké tim 1 и tim 2 (héran malah GIMP).

Témbongkeun sajarah paréntah

Linux ngumpulkeun sajarah sadaya paréntah anu dieksekusi dina file ~ / .bash_history. Lamun server dina pamakéan aktip tur sajarah na teu diberesihan, aya kasempetan alus yén Kapercayaan nu kapanggih dina file ieu. Ngabersihan sajarah sacara banal teu pikaresepeun. Lamun administrator kapaksa milih paréntah sapuluh-tingkat via , tangtosna, eta bakal leuwih merenah pikeun anjeunna nelepon paréntah ieu ti sajarah ti ngasupkeun deui. Tambih Deui, seueur anu henteu terang ngeunaan "hack" ieu. Upami aya cangkang alternatif sapertos Zsh atanapi Fish dina sistem, aranjeunna gaduh sajarah sorangan. Pikeun mintonkeun sajarah paréntah dina cangkang mana wae, ketik sajarah paréntah.

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

Aya shared hosting, dimana server dipaké pikeun host sababaraha situs. Ilaharna, kalawan konfigurasi ieu, unggal sumberdaya boga pamaké sorangan kalawan diréktori imah misah jeung host virtual. Ku kituna, upami ngonpigurasi lepat, anjeun tiasa manggihan file .bash_history dina diréktori akar sumberdaya web.

Milarian kecap akses dina sistem file sareng serangan kana sistem anu padeukeut

Payil konfigurasi pikeun sagala rupa layanan bisa dibaca ku pamaké anjeun ayeuna. Di antarana, anjeun tiasa mendakan kredensial dina téks anu jelas - kecap akses pikeun ngakses pangkalan data atanapi jasa anu aya hubunganana. Sandi anu sami tiasa dianggo pikeun ngaksés pangkalan data sareng pikeun otorisasi pangguna akar (petugas kredensial).
Ieu kajadian yén Kapercayaan kapanggih milik jasa on host séjén. Ngembangkeun serangan dina infrastruktur ngaliwatan host compromised teu leuwih goreng ti eksploitasi host séjén. Sistem anu padeukeut ogé tiasa dipendakan ku milarian alamat IP dina sistem file.

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

Upami host anu dikompromi gaduh aplikasi wéb anu tiasa diaksés tina Internét, langkung saé ngaluarkeun log na tina milarian alamat IP. Alamat-alamat pangguna sumber tina Internét sigana henteu kapaké pikeun urang, tapi alamat jaringan internal (172.16.0.0/12, 192.168.0.0/16, 10.0.0.0/8) sareng dimana aranjeunna angkat, ditilik ku log, bisa jadi dipikaresep.

Sudo

Paréntah sudo ngamungkinkeun pamaké pikeun ngaéksekusi paréntah dina konteks root kalawan sandi sorangan atawa tanpa ngagunakeun eta pisan. Loba operasi di Linux Ubuntu merlukeun hak husus root, tapi ngajalankeun salaku root dianggap prakték pisan goréng. Gantina, éta hadé pikeun nerapkeun idin selektif pikeun ngaéksekusi paréntah dina konteks root. Nanging, seueur alat Linux, kalebet anu standar sapertos vi, tiasa dianggo pikeun ningkatkeun hak istimewa ku cara anu sah. Pikeun milarian jalan anu leres, kuring nyarankeun ningali di dieu.

Hal kahiji anu kedah dilakukeun saatos nampi aksés kana sistem nyaéta ngajalankeun paréntah sudo -l. Bakal nembongkeun idin pikeun ngagunakeun paréntah sudo. Upami pangguna tanpa kecap akses dicandak (sapertos apache atanapi www-data), vektor éskalasi hak istimewa sudo henteu mungkin. Nalika nganggo sudo, sistem bakal naroskeun kecap akses. Nganggo paréntah passwd pikeun nyetél sandi ogé moal jalan, éta bakal naroskeun kecap konci pangguna ayeuna. Tapi upami sudo masih sayogi, teras, kanyataanna, anjeun kedah milarian:

  • sagala juru, saha bisa spawn cangkang (PHP, Python, Perl);
  • éditor téks naon waé (vim, vi, nano);
  • sagala pemirsa (kirang, leuwih);
  • sagala kamungkinan gawé bareng sistem file (cp, mv);
  • alat anu kaluaran dina bash, boh sacara interaktif atanapi salaku paréntah anu tiasa dieksekusi (awk, find, nmap, tcpdump, man, vi, vim, ansible).

Suid/Sgid

Aya seueur manual dina Internét anu mamatahan ngawangun sadaya paréntah suid / sgid, tapi tulisan anu jarang masihan spésifik ngeunaan naon anu kudu dilakukeun sareng program ieu. Pilihan escalation hak husus nu teu tumut kana akun pamakéan exploitasi bisa kapanggih di dieu. Ogé, sajumlah file anu tiasa dieksekusi gaduh kerentanan khusus pikeun versi OS, contona.

Dina dunya idéal, Anjeun kudu ngajalankeun sagala pakét dipasang ngaliwatan sahenteuna searchsploit. Dina prakna, ieu kedah dilakukeun sareng program anu pang populerna sapertos sudo. Éta ogé salawasna pilihan ngagunakeun tur ngarojong ngembangkeun parabot otomatis nu bakal nyorot metot, ti sudut pandang escalation hak husus of view, executables kalawan suid / sgid bit set. Kuring bakal masihan daptar alat sapertos dina bagian anu saluyu dina tulisan.

Skrip anu tiasa ditulis dijalankeun ku Cron atanapi Init dina kontéks Root

jobs Cron bisa ngajalankeun dina konteks pamaké béda, kaasup root. Upami aya tugas dina cron sareng tautan kana file anu tiasa dieksekusi, sareng éta sayogi pikeun anjeun nyerat, anjeun tiasa kalayan gampang ngagentos ku anu jahat sareng ngalaksanakeun escalation hak husus. Dina waktos anu sami, sacara standar, file sareng tugas cron sayogi dibaca ku pangguna mana waé.

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

Sarupa kasus kalawan init. Bédana nyaéta tugas dina cron dilaksanakeun sacara périodik, sareng dina init - nalika ngamimitian sistem. Pikeun operasi, anjeun bakal kedah reboot sistem, bari sababaraha layanan bisa jadi teu naek (lamun maranéhna teu didaptarkeun dina autoload).

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

Anjeun ogé tiasa milarian file anu tiasa ditulis ku pangguna mana waé.

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

Metoda ieu cukup dipikawanoh, administrator sistem ngalaman taliti ngagunakeun paréntah chmod. Nanging, dina Wéb, seuseueurna manual ngajelaskeun netepkeun hak maksimal. The "ngan nyieun jalan" pendekatan pangurus sistem inexperienced nyiptakeun kasempetan pikeun escalation hak husus dina prinsipna. Upami mungkin, langkung saé ningali dina sajarah paréntah pikeun panggunaan chmod anu teu aman.

chmod +w /path 
chmod 777 /path

Mangtaun aksés cangkang pikeun pamaké séjén

Urang nempo daptar pamaké dina /etc/passwd. Urang nengetan jalma anu boga cangkang. Anjeun tiasa brute pamaké ieu - mungkin wae nu ngaliwatan pamaké hasilna antukna anjeun bakal bisa ngaronjatkeun hak husus.

Pikeun ningkatkeun kaamanan, kuring nyarankeun yén anjeun salawasna taat kana prinsip hak husus sahenteuna. Éta ogé masuk akal pikeun nyandak waktos mariksa konfigurasi anu teu aman anu tiasa tetep saatos ngungkulan - ieu mangrupikeun "tugas téknis" administrator sistem.

Kode tulisan sorangan

Éta patut nyandak katingal caket di executables dina diréktori imah pamaké sarta web server urang (/ var / www / iwal disebutkeun béda). File ieu tiasa janten solusi anu teu aman sareng ngandung crutches anu luar biasa. Tangtosna, upami anjeun gaduh sababaraha kerangka dina diréktori pangladén wéb anjeun, éta henteu masuk akal pikeun milarian nol dinten di dinya salaku bagian tina pentest, tapi disarankeun pikeun milarian sareng diajar modifikasi khusus, plugins sareng komponén.

Pikeun ningkatkeun kaamanan, éta hadé pikeun nyingkahan ngagunakeun credentials dina Aksara ditulis sorangan, kitu ogé pungsionalitas berpotensi bahaya, kayaning maca /etc/shadow atawa manipulasi id_rsa, lamun mungkin.

Paningkatan hak husus ngaliwatan eksploitasi kerentanan

Sateuacan nyobian elevate hak husus ngaliwatan eksploitasi, hal anu penting pikeun ngarti mindahkeun file ka host target. Salian parabot biasa kawas ssh, ftp, http (wget, curl), aya sakabeh "kebon binatang" tina kemungkinan.

Pikeun ningkatkeun kaamanan sistem anjeun, ngapdet sacara rutin ka panganyarna stabil versi, sarta ogé coba ngagunakeun distribusi dirancang pikeun Enterprise. Upami teu kitu, jarang, tapi aya kaayaan nalika pamutahiran apt ngajadikeun sistem teu tiasa dianggo.

Ngamanfaatkeun Jasa anu Dijalankeun dina Konteks Pamaké Akar

Sababaraha ladenan Linux dijalankeun salaku akar pamaké anu istimewa. Éta tiasa dipendakan nganggo ps aux | akar grep. Dina hal ieu, jasa bisa jadi teu diumumkeun dina Wéb tur sadia lokal. Upami aya garapan umum, aranjeunna tiasa dianggo kalayan aman: kacilakaan jasa upami gagal langkung kritis tibatan kacilakaan OS.

ps -aux | grep root # Linux

Kasus tersukses bisa dianggap operasi layanan hacked dina konteks pamaké root. Ngoperasikeun layanan SMB méré SYSTEM aksés husus dina sistem Windows (misalna via ms17-010). Nanging, ieu henteu umum dina sistem Linux, ku kituna anjeun tiasa nyéépkeun seueur waktos dina escalation hak husus.

Ngamangpaatkeun Kerentanan Kernel Linux

Ieu mangrupikeun jalan anu terakhir anu kedah dilakukeun. Operasi gagal bisa ngakibatkeun sistem kacilakaan, sarta dina acara reboot a, sababaraha layanan (kaasup nu ngaliwatan nu ieu mungkin pikeun meunangkeun cangkang aslina) moal naek. Éta kajadian yén administrator ngan hilap nganggo paréntah systemctl enable. Tambih Deui bakal ngabalukarkeun loba dissatisfaction kalawan karya anjeun lamun eksploitasi teu acan sapuk kana.
Upami anjeun mutuskeun nganggo sumber tina exploitdb, pastikeun maca koméntar dina awal naskah. Diantara hal anu sanés, biasana nyarios kumaha cara nyusun eksploitasi ieu kalayan leres. Upami anjeun kesel teuing atanapi peryogi "kamari" kusabab wates waktu, anjeun tiasa milarian repositori sareng garapan anu parantos disusun, contona. Sanajan kitu, eta kudu dipikaharti yén dina hal ieu anjeun bakal meunang babi dina nyodok a. Di sisi anu sanésna, upami programer ngartos kana bait kumaha komputer jalan sareng parangkat lunak anu dianggo, anjeunna moal nyerat garis kode dina sapanjang hirupna.

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

Metasploit

Dina raraga nyekel jeung nanganan sambungan a, éta salawasna hadé ngagunakeun modul mangpaatkeun / multi / Handler. Hal utama nyaéta ngeset payload anu leres, contona, generik/cangkang/reverce_tcp atanapi generik/cangkang/bind_tcp. Cangkang diala dina Metasploit bisa ditingkatkeun jadi Meterpreter ngagunakeun pos / multi / ngatur / shell_to_meterpreter modul. Kalayan Meterpreter, anjeun tiasa ngajadikeun otomatis prosés pasca-eksploitasi. Contona, modul post/multi/recon/local_exploit_suggester pariksa platform, arsitéktur, jeung éntitas exploitable sarta nyarankeun modul Metasploit pikeun escalation hak husus dina sistem target. Hatur nuhun kana Meterpreter, escalation hak husus kadang datang ka handap pikeun ngajalankeun modul katuhu, tapi Hacking tanpa ngarti naon anu lumangsung dina tiung teu bener (anjeun masih kudu nulis laporan).

pakakas

Alat pikeun ngajadikeun otomatis kempelan inpormasi lokal bakal nyalametkeun anjeun seueur usaha sareng waktos, tapi ku nyalira henteu tiasa ngaidentipikasi pinuh jalur eskalasi hak husus, khususna dina kasus ngamangpaatkeun kerentanan kernel. Alat otomasi bakal ngalaksanakeun sagala paréntah anu dipikabutuh pikeun anjeun pikeun ngumpulkeun inpormasi ngeunaan sistem, tapi ogé penting pikeun tiasa nganalisis nampi data. Kuring miharep artikel abdi bakal mangpaat ka anjeun dina ieu. Tangtosna, aya seueur deui alat anu kuring bakal daptar di handap, tapi aranjeunna sadayana ngalakukeun hal anu sami - éta langkung seueur ngeunaan rasa.

Linpeas

Alat anu cukup seger, komitmen munggaran tanggal Januari 2019. Ayeuna alat favorit kuring. Garis handap nyaéta yén éta nyorotkeun vektor escalation hak husus anu paling narik. Satuju, éta leuwih merenah pikeun meunangkeun assessment ahli dina tingkat ieu ti keur parse data baku monolithic.

LinEnum

alat favorit kadua kuring, éta ogé ngumpulkeun sarta organizes data narima salaku hasil tina enumeration lokal.

linux-exploit-suggester(1,2)

Eksploitasi ieu bakal nganalisis sistem pikeun kaayaan anu cocog pikeun eksploitasi. Kanyataanna, eta bakal ngalakukeun pakasaban idéntik jeung modul Metasploit local_exploit_suggester, tapi bakal nawiskeun Tumbu ka mangpaatkeun-db kode sumber tinimbang modul Metasploit.

Linuxprivchecker

Skrip ieu bakal ngumpulkeun jeung ngatur ku bagian jumlah badag informasi nu bisa jadi mangpaat pikeun formasi hiji vektor escalation hak husus.

Lain waktos abdi bakal ngajentrekeun Éskalasi hak istimewa Linux via suid/sgid.

sumber: www.habr.com

Tambahkeun komentar