Ebben a cikkben megkapja a szükséges információkat az alkalmazástól, hogy megtudja, mit kell tennie a támadó webhelynek, hogy érvényes kéréseket küldjön a sérülékeny kiszolgálónak. Ezután létrehoz egy olyan oldalt, amely szimulálja a jogos kéréseket, és arra készteti a felhasználót, hogy hitelesítés közben látogassa meg az oldalt. Néhány ismétlést is készít a koncepció alapvető bizonyítékáról, hogy ez inkább egy valós támadásnak tűnjön, ahol az áldozat nem veszi észre. Ne feledje, hogy a cikk kódfájlja megtalálható a szerző github oldalán.
Készülődni
Ehhez a cikkhez érvényes felhasználói fiókra lesz szüksége a BodgeIt-ben. Ez a cikk használja [e-mail védett]
mint áldozat:
Hogyan kell csinálni…
Először elemeznie kell azt a kérést, amelyre rá akarja kényszeríteni az áldozatot. Ehhez a Burp Suite-ra vagy a böngészőben konfigurált másik proxy-ra van szükség:
- Jelentkezzen be a BodgeIt szolgáltatásba, mint bármely felhasználó, és kattintson a felhasználónévre a profilhoz lépéshez.
- Hajtsa végre a jelszó módosítását. Nézze meg, hogyan néz ki a kérés a proxyban:
Tehát, ez egy
POST
kéréshttp: // 192.168.56.11 / bodgeit / jelszó.jsp,
és csak a jelszó és annak megerősítése van a testben. - Próbáljon meg létrehozni egy nagyon egyszerű HTML oldalt, amely megismétli ezt a kérést. Hozzon létre egy fájlt (nevezze el
csrf-change-password.html
) a következő tartalommal:
- Most töltse be ezt a fájlt ugyanabba a böngészőbe, mint a bejelentkezett munkamenet:
- Kattintson a küldés gombra, és átirányít a felhasználó profiloldalára. Azt fogja mondani, hogy a jelszó sikeresen frissült.
- Bár ez bizonyítja a lényeget, egy külső webhely (vagy egy helyi HTML oldal, mint ebben az esetben) végrehajthat jelszó-módosítási kérelmet az alkalmazásban. Még mindig nem valószínű, hogy a felhasználó rákattint a Beküldés Automatizálhatja és elrejtheti a beviteli mezőket, hogy a rosszindulatú tartalom el legyen rejtve. Most készítsen egy új oldalt az előző alapján; hívd
csrf-change-password-scripted.html
:Teljesen ártalmatlan oldal
Bízhat ebben az oldalon.
Semmi rossz nem fog történni sem veled, sem a BodgeIt-fiókoddal.
Ezúttal az űrlapnak van egy ID paramétere, és van egy szkript az oldalon, amely beküldi annak tartalmát, amikor az oldal teljesen betöltődik.
- Ha ezt az oldalt ugyanabba a böngészőbe tölti be, ahol egy BodgeIt munkamenetet kezdeményezett, az automatikusan elküldi a kérést, és ezt követően megjelenik a felhasználó profil oldala. A következő képernyőképen a böngésző Hibakeresőállítson be töréspontot közvetlenül a kérés benyújtása előtt:
- Ez az utolsó kísérlet jobban néz ki a támadó szempontjából. Csak az oldal betöltésére van szüksége az áldozatnak, és a kérés automatikusan el lesz küldve, de ekkor az áldozat meglátja A jelszavad módosítva lettüzenetet, és ez biztosan riasztást fog kelteni.
- Tovább javíthatja a támadó oldalt azáltal, hogy az egy oldalon belül egy láthatatlan keretbe tölti be a választ. Ennek számos módja van; Gyors és piszkos a 0 méret beállítása a kerethez. A fájl a következőképpen néz ki:
Teljesen ártalmatlan oldal
Bízhat ebben az oldalon.
Semmi rossz nem fog történni sem veled, sem a BodgeIt-fiókoddal.
Figyelje meg, hogy az űrlap céltulajdonsága a közvetlenül alatta definiált iframe, és hogy egy ilyen keret magassága és szélessége 0%.
- Töltse be az új oldalt abba a böngészőbe, ahol a munkamenetet elindították. Ez a képernyőkép megmutatja, hogyan néz ki az oldal, amikor a böngészővel ellenőrzik Fejlesztői eszközök: Figyelje meg, hogy az iframe objektum csak egy fekete vonal az oldalon, és az Inspector alkalmazásban láthatja, hogy tartalmazza a BodgeIt felhasználói profil oldalt.
- Ha elemzi a CSRF-oldala által végzett hálózati kommunikációt, láthatja, hogy az valóban kéréseket tesz a BodgeIt jelszó megváltoztatására:
Hogyan működik…
Amikor kérést küld egy böngészőből, és már tárol egy cookie-t, amely a céltartományhoz tartozik, a böngésző az elküldés előtt csatolja a cookie-t a kéréshez. Ez teszi a cookie-kat olyan kényelmessé, mint munkamenet-azonosítókat, de a HTTP működésének ez a jellemzője az, ami kiszolgáltatottá teszi őket egy olyan támadással szemben is, amelyet ebben a cikkben látott.
Ha egy oldalt ugyanabba a böngészőbe tölt be, ahol egy alkalmazásban aktív munkamenet van, akkor a böngésző automatikusan csatolja a munkamenet sütit ehhez a kéréshez. Ez akkor is megtörténik, ha ez egy másik fül vagy ablak, és ez az oldal kérést küld annak a tartománynak, ahol a munkamenetet elindítják.
Ha a kiszolgáló nem ellenőrzi, hogy a kapott kérések valóban az alkalmazáson belülről származnak-e, akkor lehetővé teszi egy rosszindulatú webhely számára, hogy hívásokat indítson olyan törvényes, aktív felhasználók nevében, akik ezt a rosszindulatú webhelyet látogatják, miközben hitelesítik a céltartományt.
Egy webalkalmazás behatolási tesztben az első általad használt kód, a két szövegmezővel és a Beküldés gomb, elegendő lehet a biztonsági hiba jelenlétének bizonyításához. Az alkalmazás behatolásának tesztelése azonban része lehet egy másik elkötelezettségnek, például a szociális mérnöki tevékenységnek vagy a vörös csapat gyakorlásának. Ebben az esetben további erőfeszítésekre lesz szükség annak megakadályozására, hogy az áldozat felhasználó gyanítsa, hogy valami történik.
Ebben a cikkben a JavaScript használatával automatizálta a kérés elküldését az oldalon található onload esemény beállításával és az űrlap beküldési módszerének végrehajtásával az eseménykezelő függvényben. Rejtett iframe-et is használt a jelszóváltás válaszának betöltéséhez, így az áldozat soha nem látja azt az üzenetet, hogy megváltozott a jelszava.
Ha érdekesnek találta ezt a cikket, felfedezheti Kali Linux Web penetrációs tesztelési szakácskönyv - második kiadás hogy felfedezze a leggyakoribb internetes sebezhetőségeket, és megakadályozza, hogy fenyegetéssé váljanak webhelye biztonságára. Kali Linux Web penetrációs tesztelési szakácskönyv - második kiadás megadja neked azokat a készségeket, amelyekre szükséged van egy penetrációs teszt minden szakaszának lefedéséhez - a rendszerről és az alkalmazásról szóló információk gyűjtésétől a sebezhető pontok azonosításáig kézi teszteléssel.