Joe Blog Levy

Frissítés 2: a bejegyzés megírása után felfedeztem egy másik sebezhetőséget a Trivia Crack-ben, amely lehetővé tette a felhasználók számára korlátlan életet/pörgetést. Abban az időben ezt egy másik funkcióként adtam hozzá a Trivia Cracker-hez. Tegnap (1/29/2016), Trivia Cracker kezdett megakadályozza ezt a funkciót (automatikus kérdés megválaszolása továbbra is működik — leírtak ebben a bejegyzésben). De mi a vicces, amellett, hogy megakadályozza, hogy, a Trivia Crack szerver is hív ki kifejezetten!

Trivia Crack error

frissítés 1: hasonló technikákat az alábbi, én is kiadott egy csaló Chrome kiterjesztés Candy Crush. Hozd ide.

mivel az ünnepi szezon néhány héttel ezelőtt kezdődött, észrevettem, hogy egy új alkalmazás, a Trivia Crack, népszerűvé vált a barátaim körében. Azok számára, akik nem tudják, a Trivia Crack egy új játék Android, iPhone és Facebook számára. A játék előfeltétele egyszerű, és nagyon hasonlít egy másik tavalyi népszerű alkalmazáshoz, a Quizuphoz. Lényegében, különféle kategóriákba tartozó trivia kérdésekre válaszol, versenyez a barátaival a kérkedési Jogokért. Annak ellenére, hogy az egyszerűség (vagy talán annak köszönhető, hogy), Trivia Crack nagyon népszerűvé vált, mint a késői – állványok akár 5.3 millió szereti a Facebook-on, és egyre a legjobb ingyenes alkalmazás a Google Play (Android) store.

azt gondolnád, hogy egy ilyen csiszolt és sikeres játék fejlesztői időt szántak arra, hogy a csalástól biztonságos módon hajtsák végre, de kiderült, hogy a Trivia Crack csalására szolgáló program írása valójában meglehetősen egyszerű. Egy hétvége alatt tudtam írni és kiadni egy Chrome kiterjesztést, a Trivia Cracker-t, amely egy medicore-at-best Trivia Crack játékosból egy látszólag zseniális félistenné vált. Láthatjuk Trivia Cracker akcióban az alábbi:

Tehát mi a baj Trivia Crack végrehajtását, amely lehetővé tette számomra, hogy olyan könnyen építeni egy eszköz, amely lehetővé teszi, hogy bárki megcsal? Röviden-amikor a Trivia Crack kliens a Trivia Crack szerverről kéri a következő kérdést, amelyet feltesz a Felhasználónak, a szerver nem csak a kérdéssel és a lehetséges válaszokkal válaszol, hanem elküldi, hogy melyik válasz a helyes válasz. A biztonsági rés részletei, hogyan találtam meg, és hogyan építettem fel egy Chrome-bővítményt, hogy kihasználjam azt.

1 – a sebezhetőség megtalálása

miután elvesztettem a barátaimat a Trivia Crack túl sokszor, úgy döntöttem, hogy meg akarom nézni, hogy tudok-e nyerni a saját, különleges módon. Bár nem vagyok olyan jó a véletlenszerű apróságokban, elég jó vagyok a visszafejtésben. Gyanítottam, hogy kihasználhatom a saját kéréseim küldését a Trivia Crack szervereire, vagy bizonyos adatok felhasználása a Trivia Crack szervereinek válaszaiban, hogy előnyt szerezzen a játékban. Így kezdtem kutatja, hogy milyen adatokat a Trivia Crack kliens és szerver át oda-vissza.

ezen adatok ellenőrzéséhez Trivia Crack-et játszottam a böngészőmben a Facebook-on, miközben rögzítettem és ellenőriztem a Trivia Crack kliense és szervere között küldött kéréseket és válaszokat egy korábban Gargl nevű eszközzel. Igen, tudom, hogy ugyanezt használhattam volna a Fiddler vagy a Chrome Fejlesztői eszközeivel. Úgy döntöttem, hogy inkább a Gargl-t használom, mert amellett, hogy lehetővé teszi az ügyfél/szerver kérések/válaszok megtekintését, a Gargl lehetővé teszi ezen kérések módosítását és paraméterezését is, majd automatikusan generál modulokat egy választott programozási nyelven, így ugyanazokat a kéréseket teheti meg kódsor írása nélkül. Erről majd később.

különben is, miután elmondta Gargl – nak, hogy kezdje el a felvételt és menjen Trivia Crack a Facebook-on a böngészőmben, az első lépés az volt, hogy kitaláljuk, melyik a Facebook oldalon küldött sok kérés közül a Trivia Crackhez kapcsolódott, szemben a Facebook-tal. Az oldalon található HTML ellenőrzése azt mutatta, hogy a Trivia Crack tartalma iframe-en keresztül van beágyazva a Facebook-ba. Az iframe feletti elem egy olyan űrlap volt, amelyet egy sajátos URL – re kellett küldeni – https://preguntados.com/game.

a Chrome Dev Tools segítségével ellenőrizze a Trivia Crack HTML-jét

korlátozott spanyol ismereteim emlékeztettek arra, hogy a “pregunta” azt jelenti, hogy “kérdés”, ami úgy tűnik, hogy a trivia-hoz kapcsolódik, ezért gyanítottam, hogy ez az a domain, ahol a Trivia Crack házigazdája. Megy a https://preguntados.com/game URL megerősítette, hogy a gyanú:

játék Trivia Crack a Preguntados.com

a következő lépés az volt, hogy elkezd játszani Trivia Crack, és ahogy játszottam nézd meg a kéréseket Gargl megállapítja, hogy az oldal teszi, hogy minden url-t tartalmazó “preguntados.com”:

a Gargl használata a Trivia Crack

műveleteinek rögzítésére, amikor válaszoltam A Trivia Crack kérdésekre, észrevettem, hogy minden kérdésre új kérést adtak ki. Tulajdonképpen, úgy tűnt, hogy a kérelmet még azelőtt kiadták, hogy a Trivia Crack-ben még “megpördítettem a fonót”, hogy meghatározzam, melyik kategóriába tartozik a következő kérdés:

használata Gargl rögzíteni akciók Trivia Crack

ez elgondolkodtatott talán a kérdéseket előre meghatározott, és a “random spinner” valójában volt előre meghatározott leszállni egy bizonyos kategóriában (és kérni egy bizonyos kérdés) alapján a választ a szerver a “random spinner”, hogy a “api.preguntados.com/api/users / <userID>/játékok / < gameID>” kérés, hogy küldött, mielőtt rákattint a “Spin” gombra. Számomra ez azt jelentette, hogy valószínűleg figyelmeztethetem a felhasználót arra a kérdésre, amelyet idő előtt fel fognak tenni, így annyi idejük lenne, amennyit gondolni akarnak rá, vagy fel akarnak nézni. Ez előny lenne, mert a Trivia Crack-ben csak 30 másodpercet kap arra, hogy válaszoljon egy kérdésre, miután a kérdés megjelenik, hogy megakadályozza a felhasználót abban, hogy válaszokat keressen. Továbbá, egyes játékmódokban nem csak a helyes kérdések száma, hanem a válaszadáshoz szükséges idő is, amely meghatározza, hogy nyersz-e. Ha meg tudnám mutatni a Felhasználónak a kérdést idő előtt, nyilvánvalóan sokkal gyorsabban válaszolhatnának rá, ha a Trivia Crack maga is megmutatja a kérdést.

úgy gondoltam, hogy van egy nyomom, és beleástam magam a kérés részleteibe. Kiderült, hogy ez a kérés valójában sokkal nagyobb “csaló előnyt” biztosított, mint gondoltam …

2-a biztonsági rés részletesen

a Gargl használatával az “api-ra nézve.preguntados.com / api / users / <userID>/games/< gameID> ” kérés/válasz részletesen meg tudtam erősíteni, hogy valóban megadja a feltett kérdést, valamint a lehetséges válaszokat a válaszban. Meglepődve tapasztaltam azonban, hogy a kérdésre adott helyes válasz is be van ágyazva a válaszba!

a Gargl használata a Trivia Crack műveleteinek rögzítéséhez - a válasz sebezhetősége

mint fent látható, a kérésre adott válasz tartalmazza a kérdést, a lehetséges válaszokat, és a lehetséges válaszok tömbjében melyik index a helyes válasz. Tehát, ha ezek az adatok valóban a következő kérdésre vonatkoznak, miután rákattintottam a “Spin” gombra, fel kell tennem a kérdést: “az alábbi afrikai országok közül melyiknek nincs partja?”a helyes válasznak pedig felülről kell lennie, ami “mindannyian”. A “Spin” gombra kattintás igazolta ezt a hipotézist:

játék Trivia Crack, mielőtt kiválasztaná a választ

játék Trivia Crack, kiválasztja a helyes választ

én is használtam a böngészőt, hogy megtalálja, hogy ismételt GET kéréseket ” api.preguntados.com / api / users / <userID>/games/< gameID> ” mindig ugyanazt a választ adja, amíg nem válaszol a kérdésre. Ez azt jelenti, hogy kérhetem ezt az URL-t a saját eszközömről, és továbbra is ugyanazt a kérdést kapom, mint a Facebook Trivia Crack kliense.

a helyes választ tartalmazó válasz, amikor a cél az, hogy a felhasználónak magának kell meghatároznia a választ, közvetlen ellentétben áll a programozás “védekező programozási” gyakorlatával – különösen a “soha ne bízz az ügyfélben” webprogramozási elv. Mivel a szervernek nincs befolyása az ügyfél viselkedésére, nem feltételezheti, hogy az ügyfél nem fog rosszindulatú módon cselekedni, ezért meg kell védenie magát. A válaszellenőrzési viselkedés megvalósításának helyes módja a szerver oldalon történő végrehajtása. Soha ne küldje el a helyes választ az ügyfélnek, hanem arra kényszerítse az Ügyfelet, hogy küldje el a felhasználó válaszát a szervernek, ahol a szerver ellenőrzi a helyességét, és jóváírja a felhasználót, ha helyes (és természetesen csak egy választ küldhet felhasználónként kérdésenként).

a Trivia Crack azonban ezt nem tette meg, ehelyett bízik az ügyfélben. Most már csak egy rosszindulatú ügyfél létrehozása volt, hogy kihasználja azt a tényt, hogy a helyes válasz a válaszban kerül elküldésre. Ideális esetben olyan, amelyet a nem technikai felhasználók könnyen telepíthetnek és használhatnak. Hmm … mit szólnál egy Chrome-bővítményhez, amely csak hozzáad egy gombot a Trivia Crack játékhoz, amikor a Facebook-on játsszák, hogy ha rákattintanak, automatikusan helyesen válaszol az aktuális kérdésre??

3 – kihasználva a biztonsági rést

mint már említettük, Gargl lehetővé teszi, hogy a kéréseket kellett rögzíteni, módosítani és paraméterezni őket, ha szükséges, majd automatikusan generál modulokat egy programozási nyelv az Ön által választott, hogy ugyanezeket a kéréseket. Nem fogok belemenni a folyamat részleteibe, mivel megnézheti az egyik Gargl blogbejegyzésemet, hogy megtalálja ezt az információt, de lényegében létrehoztam egy Gargl sablonfájlt a Trivia Crack különféle API-kéréseihez, a Gargl Chrome kiterjesztés használatával, majd egy Gargl generátort használtam, hogy ezt a sablonfájlt Trivia Crack JavaScript könyvtárrá alakítsam. A Gargl használata lehetővé tette számomra, hogy létrehozzak egy JavaScript könyvtárat, amely a Trivia Crack szervereivel beszél, anélkül, hogy ehhez egy sor kódot írna, és a jövőben is van egy sablonfájl, ha később ugyanezt akarom tenni egy másik programozási nyelv esetében.

Egyszer volt ez Trivia Crack JavaScript könyvtár, ez egy egyszerű kérdés az épület egy Chrome kiterjesztés JavaScript fut a domain betöltött Trivia Crack Facebook játék oldal iframe (preguntados.com), hozzáad egy gombot a játék HTML-jéhez, és amikor erre a gombra kattint, kéri az “api” – t.preguntados.com / api / users / <userID>/games/< gameID> ” URL, elemzi a választ a helyes válaszra, majd rákattint a válasz gombra a helyes választ képviselő oldalon.

 Trivia Cracker futó Trivia Crack válaszolni a kérdésekre nekem

Write a Comment

Az e-mail-címet nem tesszük közzé.