Нажмите "Enter", чтобы перейти к содержанию

OTP közvetlen biztonsági kód

A kétfaktoros hitelesítés és a lehetséges bypass opciók tesztelése

Még mielőtt elkezdtem megérteni az információbiztonság összetett tudományát, úgy tűnt számomra, hogy a 2FA hitelesítés garantált módja annak, hogy megvédje fiókját, és ne legyen «ezek a hackerek» nem tudják azt mondani, hogy a belső pénznemet vásárolhassák A játékszámlán szereplő karakterek esetében. De idővel a kísérleti út bizonyítottan bizonyított — a kétfaktoros hitelesítés rendszere nagyszámú sebezhetőséggel rendelkezik. 

Az egyszerű szavakkal való beszélgetés, a kétfaktoros hitelesítés a cselekvés visszaigazolása a generált kód belépésével, hogy növelje a biztonsági és dobási botokat a kerekekbe a kondicionális hackerekbe vezetés közben, vagy mielőtt elindulna.

A kód megerősítő rendszere a kód segítségével nagyon elkülönül, mindenhol különböző helyeken, mind az elsődleges bemenet és a másodlagos. De ez az alkalmazás nem korlátozott, — a fejlesztők megerősítést kapnak a jelszó-helyreállítási funkcionalitás, a regisztráció / előfizetés megerősítése, a pénzügyi tranzakciók további megerősítése, a jelszóváltozások, a személyes adatok változásai. Ezenkívül alkalmanként a kijelentkezés után, és az időzítést pontosan 2FA, és nem jelszó vagy más módja annak, hogy megerősítse.

Ebben a cikkben 2FA tesztelési módszereket gyűjtöttem a sebezhetőségekre, azok működésére, valamint a meglévő védelem megkerülésére a meglévő védelem megkerülésére. Fontolja meg a 2FA-ra vonatkozó biztonsági rések ellenőrzésének listáját:

1. A sebességkorlátozás hiánya

A határértéket algoritmust használnak, hogy ellenőrizze a lehetőségét, hogy egy felhasználói munkamenet (vagy IP-címek) korlátozni kell kísérletek vagy a sebesség, és milyen körülmények között történik. Ha a felhasználó túl sok kérést végzett egy bizonyos ideig, a webes alkalmazás válaszolhat 429 kódot (sok kérés), vagy alkalmazza a sebességi korlátot anélkül, hogy hibákat mutatna. Ennek hiányában a határértéket azt feltételezi, hogy a közönséges szándék nincsenek korlátozások a próbálkozások száma és / vagy a sebesség, akkor azt hagyjuk, hogy rendezni kódok tetszőleges számú alkalommal (bármilyen sebességnél) időtartama alatt az ülés / Tokeny.

Gyakran találkoznak a «csendes» sebességhatáron, — ha látta, hogy nincsenek hibák, és a test / http kód nem változik a későbbi kérésekben, akkor korán örvend, és először ellenőriznie kell a végső eredményt Támadás, érvényes kód alkalmazásával.

2. Létezik, de meg tudod hozni

Olyan esetek, akik találkoztak:

1) A patakok sebességének korlátozása a zárolás hiánya egy bizonyos sebesség elérése után

Gyakran a biztonsági kutatók próbálják felvenni a kódot 5 vagy több szálat, hogy gyorsan végrehajtsák a támadást (a Burp behatolóban az alapértelmezett streamek száma — késedelem nélkül). De néha a biztonsági rendszer integritását vagy a szokásos Load Balancer csak reagálni erre az egyetlen tényező. Ha az ötödik szálakkal próbálja megrúgni, akkor érdemes csökkenteni az 1-et, majd az első 1 másodperccel. Korábban elég szerencsés voltam ahhoz, hogy megfigyeljem az ilyen viselkedést, és ilyen manipulációkat használtam, hogy a kód sikeres kiválasztása történt, ami a számla átvételéhez vezetett. Ha a 2FA kódnak nincs bizonyos tevékenysége, akkor sok idő van a mellszoborban. Ha az érvényességi idő jelen van, a támadás sikere csökken, de a sebezhetőség potenciális veszélye még mindig jelen van, mivel a kívánt kód elérésének esélye még mindig van.

2) A generált OTP-kód nem változik

Ez az aggodalmak nem folyamatosan változó kódok, mint a Google Hitelesítőben, de csak statikusak, amelyek SMS-ben, e-mailben vagy személyes üzenetben érkeznek a Messengerben.

Ennek a megkerülőnek a lényege, hogy folyamatosan vagy egy ideig, például 5 perc, ugyanazt az OTP kódot küldi SMS-nek, amely mindezen idő alatt érvényes. Ezenkívül a csendes sebesség-határérték biztosítása is.

Jelentés példa: Hackerone.COM / jelentések / 420163

Tegyük fel, hogy az alkalmazás egy véletlenszerű kódot generál 001-től 999-ig, és a «Reen» funkció használatakor 10 perc alatt elküldi a telefonra, ugyanazt a kódot kapjuk. De a lekérdezés van kötve a Rate-Limit, ami korlátozza a kísérletek számát egy token kérés. Tudjuk folyamatosan kérhet új kódot, létrehoz egy új lekérdezési token, alkalmazza azt a későbbi kérelem (a Grep-Match Burp Suite vagy a saját script), és termel grutfors számtartománnyal 001-999. Így folyamatosan új lekérdezési token használatával sikeresen kiválasztjuk a megfelelő kódot, mivel nem változik, és bizonyos időintervallumban statikus. Ennek a támadásnak a korlátai — hosszú számú vagy keverő betűk számokkal, mint megerősítő kód.

Az ilyen helyzet nem éri meg a dekontaminációt, meg kell próbálnod elvenni a listánk legalább egy részét, mert esély van arra, hogy a generált kód a lista ezen részében lesz, mivel véletlenszerűen generálódik. Amikor áthalad, reménykedned kell a randon, de még mindig van esély arra, hogy bejussanak a megfelelő kombinációba, ami bizonyítja a sebezhetőséget, hogy pontosan helyes.

3) Reset Rate-Limit-A A kód frissítése esetén.

A lekérdezési hitelesítési kérelemben a sebességkorlát jelen van, de az újbóli küldési funkciók használata után visszaáll, és lehetővé teszi, hogy folytassa a Krutforok kódját.
Jelentési példák:

https: // Hackerone.COM / jelentések / 149598, — elmélet;
szamár.COM / jelentések / 205000, — gyakorlati kiaknázás az előző jelentés alapján.

4) az IP-cím megváltoztatásával

Sok blokkok épülnek korlátozó kérés vétel IP, amely elérte az egy bizonyos számú próbálkozás, amikor a kérelem teljesítése. Ha az IP-cím megváltozik, akkor ez a korlátozás megteremthető. Annak érdekében, hogy ellenőrizze ezt a módszert, egyszerűen módosítsa az IP-t a proxykiszolgáló / vpn segítségével, és meglátja, hogy az IP-zár függ.

IP Shift módszerek:

  • A proxy a támadásban használható a Burp Suite Github program IP rotor kiegészítésével.Com / rhinocuritylabs / iprotate_burp_extension. Véleményem szerint ez a legjobb választás, mert ez ad nekünk ~ korlátlan kísérletek a keresést és IP-címek, amelyek lehetővé teszik, hogy végre a brute-force támadás nélkül 42x hibák és megszakítások.
  • Egy jó lehetőség lehet Python Script a Proxy kérések moduljával, de először sok érvényes proxyot kell kapnia valahol.

Mivel az IP Rotate Tulza kéréseket küld az AWS IP-címekkel, az összes kérés blokkolva lesz, ha a webes alkalmazás a CloudFlare Faero mögött van.

Ebben az esetben szükség van az eredeti webszerver IP-jét, vagy megtalálni azt a módot, amely nem érinti az AWS IP-címeket.

5) Az oldal tartalmazza az X-Forwarded-for támogatását

A beépített fejléc X-Forwarded-for módosítható az IP módosítására. Ha az alkalmazás beépülne ennek a heternek a feldolgozásába, egyszerűen küldje el az X-Forwarded-for: cention_ip-t, hogy helyettesítse a vizsgálatot a korlátozás körül, további proxyok használata nélkül. Minden alkalommal, amikor elküldi az X-Forwarded-for kérését, a webszerver úgy gondolja, hogy az IP-címünk megfelel a fejlécen átadott értéknek.
Anyagok ezen a témában:
szamár.COM / jelentések / 225897
közepes.COM / @ arbazhussain / bypassing-rate-limit-Protection-by-spoofing-diedetition-ip-ff06ADF34157

3. Megkerülve a második a kérés részét a másik fiók ülésszakáról

Ha egy adott értékű paramétert elküldünk a lekérdezés kódjának ellenőrzésére, próbáljon meg egy értéket küldeni egy másik fiók lekérdezéséből.

Ha adatokat alkalmaz a fiókparaméterekről, amelyeken meg szeretné osztani a kódellenőrzést (fiók 1), egy teljesen más fiók (fiók 2) munkamenetében, megkapjuk a kódot, és beírjuk a második fiókra, megkerülhetjük az első számla védelme. Az újraindítás után az oldal 2FA kell eltűnnie.

4. Megkerülve a 2FA-t az «Üzenet funkcionális» segítségével

A 2FA engedélyt támogató számos webhelyen van egy funkcionalitás «Emlékezz rám». Hasznos abban az esetben, ha a felhasználó nem kíván 2FA kódot adni a következő bejáratokra a számlára. Fontos azonosítani azt a módszert, amellyel a 2FA «emlékezett».

2) Ha a 2FA csatlakozik az IP-címhez, akkor megpróbálhatja kicserélni azt

A módszer azonosításához jelentkezzen be fiókjába a 2FA memorizációs funkcióval, majd lépjen az aktuális böngésző másik böngészőjére vagy inkognitó módjára, és próbálja meg újra a naplózást. Ha egyáltalán nem kért 2FA-t, akkor a 2FA-os szerelvény az IP-címre történt.
Helyettesíteni az IP-címet, akkor X-Forwarded-FOR HEDER a bejelentkezési név és jelszó beviteli szakaszban, ha a webes alkalmazás támogatja.

Ezzel a Hederrel megkerülheti az «IP-cím fehér-lista» funkciót is, ha ez jelen van a fiókbeállításokban. A 2FA-val ellátott kötegben használható további számlavédelemként, vagy 2FA-t nem lehet kérni, ha az IP-cím egybeesik a fehér listával (a felhasználó beleegyezésével). Így még a 2FA rögzítés nélkül is az IP-címre, egyes esetekben a 2FA megkerülhető a hozzá tartozó védelmi módszerek megkerülésével.
Általában a 2FA mount az IP-cím nem teljesen biztonságos módon védelmet, mivel közben jelenléte ugyanazon a hálózaton, ha csatlakozik ugyanarra VPN / Internet szolgáltató statikus IP-címet, 2FA lehet megkerülni.

A védelem legbiztonságosabb módja, hogy ne memorizáljon 2FA-t a használhatóság kárára.

5. Helytelen hozzáférésvezérlő táska a 2FA bemeneti oldalon

Néha egy 2FA bemeneti párbeszédpanel az URL-címként szerepel paraméterekkel. De ha a fejlesztők úgy döntöttek, hogy kockázatokat vállalnak, akkor több fontos ponton kell mennie:

  1. hogy a 2FA-t író hivatkozás lejár-e;
  2. A keresőmotorok linkje indexelt indexelt.

Ha a link hosszabb létezési időtartammal rendelkezik, és / vagy a keresőmotorokban, akkor működik a 2FA / hivatkozások beírása (nincs szabályok a robotokban.Txt / meta címkék), akkor lehetőség van arra, hogy a 2FA mechanizmus megkerülését használja a 2FA bemeneti oldalon, amelyben teljesen megkerülheti a bejelentkezést és a jelszót, és hozzáférhet valaki más fiókjához.

6. A személyes adatok nem megfelelő cenzúrája a 2FA-ban

Ha az OTP-kódot az oldalon küldi a cenzúrát a személyes adatok védelme érdekében, például e-mail, telefonszám, becenév, stb. De ezek az adatok teljes körűen ismertethetők az API-ban és más kérésekben, amelyeket elegendő jogunk van a 2FA lépésben. Ha kezdetben ezt az adatokat nem ismert, például csak bejelentkeztünk, anélkül, hogy tudnánk a telefonszámot, akkor ez a «információs közzététel» sérülékenységnek tekinthető. A telefonszám / e-mail ismerete a későbbi adathalászathoz és a bruthent támadásokhoz használható.

Példa a sérülékenység kizsákmányolására hitelesítő adatokkal. Tegyük fel, hogy nyilvános hozzáférésben van egy adatbázis bejelentkezéssel és jelszavakkal az a. A támadók adatokat alkalmazhatnak ebből a bázisból a B:

  • Először ellenőrzik, hogy a felhasználó a B adatbázis B adatbázisban van-e a Jelszó Regisztráció / Restore fiókok felszámolási hibájával. Általában sok webhely nem tekinti ezt a sérülékenységet és kockázatokat vállal. «A biztonsági rés» egy hiba jelenléte a felhasználónak a webhelyen történő nyilvántartásba vételével kapcsolatban. Ideális esetben a jelszó-helyreállítási oldalon lévő biztonságos üzenet úgy néz ki, mint ez:
  • Miután megkapta a meglévő felhasználók alapját, a támadók jelszavakat használnak ezeknek a számláknak.
  • Ha 2FA-vel szembesülnek, akkor egy zsákutcába esnek. De a felhasználói adatok elégtelen cenzúrái esetén személyes adataival kiegészíthetik adatbázisukat (ha nem az eredeti adatbázisban vannak).

7. Bizonyos körülmények között 2FA figyelmen kívül hagyása

Ha olyan műveleteket végez, amelyek az automatikus belépéshez vezetnek, akkor a 2FA nem kérte.

1) A jelszó visszaszerzésénél 2FA figyelmen kívül hagyja

Sok szolgáltatás Az automatikus bemenet a számlára, miután a jelszó-helyreállítási folyamat befejeződik. Mivel a fiókhoz való hozzáférés azonnal elérhető, a 2FA-fiókba való belépéskor megváltoztatható és teljesen figyelmen kívül hagyható.

Hasonló jelentést tesz a Hackeron-on, amelyet a közelmúltban elküldtem:
Ha a támadó hozzáférést kap az áldozat e-mailjeihez (az adathalászat, a brutális erőfeszítések, a hitelesítő betöltések és a TD) segítségével megszakíthatja a fiókot, akkor megkerülheti a 2FA-t, bár ebben az esetben a 2FA-nak meg kell védenie a fiókot. Jelenleg a 2FA a Google hitelesítő kódjának vagy a biztonsági mentési kód ellenőrzésének ellenőrzése, de nem az e-mail kódja, így ez a bypass értelme van.

2) A 2FA figyelmen kívül hagyása a szociális hálózaton keresztül

A szociális hálózatot csatolhatja a felhasználói fiókba, hogy gyorsan beírja a fiókot, és egyszerre konfigurálja a 2FA-t. A szociális hálózaton keresztül történő bejáratnál a 2FA figyelmen kívül hagyható. Ha az e-mail áldozat hacked, akkor visszaállíthatja a jelszót a Social Network fiókhoz (ha lehetővé teszi, hogy megadja a szolgáltatást a 2FA belépés nélkül.

Az egyik jelentés hatása:

  1. Egy köteg más sebezhető, mint a korábban küldött Oauth konfigurációs hiba # 577468, a teljes számla rögzítés, leküzdve 2FA.
  2. Ha a támadó megkötötte a felhasználó e-mailjét, megpróbálhatja visszaállítani a közösségi hálózati fiókhoz való hozzáférést, és további ellenőrzés nélkül beírhatja a fiókot.
  3. Ha a támadó egyszer csapkodott az áldozat számláján, akkor társíthatja a szociális hálózatot egy fiókkal, és beírhatja a számlát a jövőben, teljesen figyelmen kívül hagyva a 2FA és a bejelentkezési / jelszó bejegyzést.

3) A 2FA figyelmen kívül hagyása az alkalmazás régebbi verziójában

A fejlesztők gyakran hozzáadják a webes alkalmazást a domainek / aldomainek bizonyos funkciók teszteléséhez. Érdekes módon, ha megadja a bejelentkezési és jelszavát, a 2FA nem kérték. Lehet, hogy a fejlesztők a régebbi verzió az alkalmazás, amelyben nincs védelem 2FA, 2FA maga le van tiltva, vagy szándékosan le tesztelésére.

Ugyanakkor más biztonsági réseket is meg lehet vizsgálni egyidejűleg — egy új felhasználó regisztrálása a termelési verzióban, amely a termelési verzióban létezik, személyes adatokat adhat a termelésből; A sebességkorlát hiánya fontos funkciókban, például a helyreállítási jelszóban. Egy példa az utolsó biztonsági rés — $ 15.000 Facebook bug, ami lehetővé tette, hogy csapkod egy fiókot bruthet kódot visszaállítani a jelszót Beta.Facebook.Www.Freecodecamp.ORG / NEWS / Felelős-Disclosure-How-i-Could-Van-feltört-All-Facebook-fiókok-F47C0252AE4D.

4) A 2FA figyelmen kívül hagyása a keresztplatform esetében

A mobil vagy asztali verzióban 2FA immenzáció eltérhet az alkalmazás webes verziójától. A 2FA gyengébb lehet, mint a webes verzióban, vagy egyáltalán nem.

7. Ha letiltja a 2FA-t, az aktuális kódot nem kéri.

Ha további visszaigazolást kérnek, ha a 2FA ki van kapcsolva, például az aktuális kód a Google hitelesítő alkalmazásokkal, az e-mail / telefon kóddal, akkor vannak bizonyos kockázatok. Tiszta lekérdezéssel valószínűsíthetőség van CSRF támadás. Ha a CSRF feltérképezési vektor található (ha van), akkor 2FA le lehet tiltani. Clickjacking biztonsági rés is használható — miután egy pár kattintás semmi sem nem fogható 2FA letiltásra kerül. Az előző kód megerősítése további 2FA védelmet ad hozzá, tekintettel a potenciális CSRF / XSS / Clickjacking támadásokra, valamint az ROUS téves konfigurációra.

Például, megadom a webhely hackeront.COM — Amikor 2FA levált az egyik formában, két változó formában egyidejűleg — a jelenlegi kódot a Google Hitelesítő alkalmazások és jelszó. Ez a legjobb és ajánlott védelem.

nyolc. A korábban létrehozott munkamenetek 2FA aktiválás után érvényesek

Ha bekapcsolja a 2FA-t, akkor kívánatos, hogy a párhuzamos munkamenetek ugyanazon a számlán és a 2FA bemeneti párbeszédablakban jelenjen meg, ugyanaz a jelszóváltozással. Ha a számla veszélybe került, és az első áldozat reakciója 2FA-t tartalmaz, a támadó ülésszaka le van tiltva, és a következő bejelentkezés és jelszó 2FA-ra lesz szüksége. Általában ez a legjobb gyakorlat, amelyet követni kell. Gyakran észrevettem, hogy a cryptocurrency tőzsdei hasonló védelmet adnak hozzá. Példa a hackeronról szóló jelentés, —
https: // Hackerone.COM / jelentések / 534450.

kilenc. A sebességkorlátozás hiánya — és a személyes fiókban

A 2FA különböző felhasználói fiókokba beágyazható a nagyobb biztonság érdekében. Ez lehet az e-mail címek, jelszó, a pénzügyi tranzakciók módosításának megerősítése, stb. A Személyes számlán a sebességkorlátozás elérhetősége eltérhet a 2FA-ban a 2FA-ban a számlára való bejáratánál. Többször találkoztam ilyen esetekben, amikor szabadon választották a 2FA kódot a személyes fiókban, míg a bejáratnál a «szigorú» sebességkorlátot telepítették.

Ha a fejlesztők eredetileg hozzáadott védelmet nyújtanak az illetéktelen adatváltozás ellen, akkor ezt a védelmet támogatni kell és rögzíteni kell az összes lehetséges bypass-ot. Ha a bypass megtalálható, a «Biztonsági funkció» biztonsági sérülékenységnek tekinthető, amelyet a fejlesztők hajtottak végre.

tíz. API verziók manipulálása

Ha a webes alkalmazás kérésére megjelenik valami hasonló / v * /, ahol * egy számjegy, azaz a valószínűsége, hogy átválthat az API régebbi verziójára. Az API régi verziójában gyenge védelem lehet, vagy nem lehet. Ez egy meglehetősen ritka jelenség, és akkor fordul elő, ha a fejlesztők elfelejtették eltávolítani az API verzió régi verzióját a termelési / elrendezés környezetben.
Például / végpont / API / V4 / bejelentkezés végrehajtja a bemenetet, a bejelentkezés és a jelszó ellenőrzése. Ha a 2FA jelen van a fiókban, akkor ezt a kérést követnie kell / végpont / API / V4 / 2FA_CHECK, bármilyen módon. Ha az API verzióját 2FA előtt cseréljük ki, akkor bizonyos esetekben elkerülhetjük. / végpont / API / V3 / A bejelentkezés vezethet / végpont / v3 / login_successful?Kód = véletlen, figyelmen kívül hagyva 2FA_Check, mert az API ezen verziójában a 2FA egyszerűen nem hajtható végre.

 Egy másik példa, — a kérés / végpont / API / V4 / 2FA_CHECK esetében van egy sebességi határ, míg / végpont / API / V3 / 2FA_CHECK lehetővé teszi a kódok rendezése korlátozások nélkül.

tizenegy. Helytelen hozzáférés-szabályozás a biztonsági mentési kódok lekérdezésében

A biztonsági mentési kódokat közvetlenül a 2FA bekapcsolása után generálják, és egyetlen kérésre rendelkezésre állnak. Az egyes későbbi kérés iránti kérelem után a kódok új vagy változatlanok (statikus kódok) generálhatók. Ha vannak olyan korrok a Missonfiguration / XSS biztonsági réshez és más hibákhoz, amelyek lehetővé teszik, hogy «húzza ki a biztonsági mentési kódokat a biztonsági mentési kódok megjelenítésének megjelenítéséről, akkor a támadó ellophatja a kódokat és a 2FA-t, ha ismeri a 2FA-t, ha ismeri a felhasználónevet és jelszó.

Általában a 2. az egyik legmegbízhatóbb módja, hogy megvédje a számla, kivéve persze, a fejlesztők nem tárolja az aktuális 2FA kódok minden webes alkalmazások az admin felületen — és ez történt a praxisomban. Azt is szeretné tudni, hogy egyes vállalatok fejlesztői saját 2FA-kódjaikat (példák a Salesforce, Valve) és az elégtelen biztonság miatt létrehozzák, és az egyéb hitelesítési alkalmazások használatából származó függetlenségre összpontosítanak belépési pont a 2FA-hoz. Ennek a védelemnek a alkalmazási tartománya elég nagy, és azt kívánja, hogy megkerülje a 2FA védelmet több lehetőséget, a kreativitás területét és növeli a 2FA bypass variációk számát.

Remélem, hogy ez az információ hasznos volt az információs biztonsági kutatók, a Bug Bounty Hunters, valamint a fejlesztők számára, hogy minimalizálják a kiszolgálás során kialakuló sebezhetőség mennyiségét. Maradj biztonságban!

Комментарии закрыты, но обратные ссылки и pingbacks ещё работают.