Neat így tudok küldeni egy POST kérést a VulnWebSite.com:8008/apps/Youtube címre egy JSON testtel, amely tartalmazza az adatokat {‘v’:’VIDEO_ID_HERE’}. Tehát alapvetően a sebezhetőség itt az, hogy bárki, aki post kérést küld a chromcast eszközre, ráveheti a tévét, hogy lejátsszon egy youtube videót. Ez az egész nem hitelesített.
Következő Megpróbáltam megkeresni az API dokumentációt, de nem tudtam, amit akartam. Aztán rábukkantam a valaki más által közzétett nem hivatalos API dokumentációra (API documentation). Találtam más, alább felsorolt dokumentációt is.
- chromecast python script
- chromecast urls list
A dokumentáció elolvasása után már sokkal jobban tudtam, hogyan működik az eszköz, és nagyjából tudtam, hogyan hajtotta végre a hacker a támadást.
A támadás
Először tehát létre kell hoznunk valamilyen ujjlenyomatot, hogy azonosítsuk azokat a chromecast eszközöket, amelyeknek ez az API végpontja ki van téve. Ezt könnyen megtehetjük egy GET-kérés elküldésével a /setup/eureka_info végpontra, amely itt dokumentálva van(device-info API dokumentáció). Ez egy json objektumot fog visszaadni, amely tartalmazza a build verziót, az eszközinformációt, a nyilvános kulcsot és egyebeket. Ez ugyanaz az api végpont, amit a shodan.io használ a chromcast eszközök ujjlenyomatvételéhez.
Most, hogy azonosítani tudjuk a chromcast eszközöket, már csak a youtube payloadot kell elküldenünk a korábban felfedezett “/apps/YouTube” végpontra. Ezután a felhasználó tévéje kénytelen lesz lejátszani azt a videót, amit szeretnénk, hogy lejátsszon. Más dolgokat is tehetünk, például felsorolhatjuk a környező hozzáférési pontokat és bluetooth eszközöket, vagy bármit, ami az API dokumentációban szerepel. Mindezt természetesen hitelesítés nélkül is megtehetjük.
Universal Plug and Play
Ez a támadás egyszerű, és szinte bárki meg tudja csinálni ezzel a tudással felvértezve. A helyzetet tovább rontja, hogy a chromecast az Universal Plug and Play (UPnP) szolgáltatást használja. Ha nem tudod, mit csinál az UPnP, akkor alapvetően egy egészet üt át a tűzfalon. Ez azt jelenti, hogy a chromecast eszköz az UPnP segítségével megnyitja a 8008-as portot az útválasztón, és továbbítja az összes forgalmat a chromecast eszközre. Ha az útválasztója engedélyezi az UPnP-t, ami alapértelmezés szerint a legtöbb routerben megvan, akkor a chromecast eszköz megnyitja magát az internet felé. Ez azt jelenti, hogy bárki képes lesz arra, hogy a chromecast eszközt és a hozzá csatlakoztatott TV-t az internetről, hitelesítés nélkül vezérelje.
Következtetés
Mélyen hiszek abban, hogy a google valóban egy nagyszerű vállalat. Sokat tesznek azért, hogy mindennap megvédjenek minket, és a project zero projektnek köszönhetően más cégeket és eszközöket is védenek. Nem számít, hogy mennyire jó vagy, néhány dolog csak kicsúszik a résen. Ez mindig megtörténik. A Google már említette, hogy az elkövetkező hetekben frissítést fognak tolni. Valószínűleg a legjobb, ha teljesen blokkolja az UPnP-t, mivel sok más IOT-eszköz is sebezhető. Gondolj bele, ha egy Google eszköz sebezhető egy nem hitelesített API exploit hány más eszköz van?
Leave a Reply