CSRF
1. Bevezetés¶
Ez az útmutató lépésről lépésre végigvezet a CSRF kihívás megoldásán a DVWA-ban (Damn Vulnerable Web Application), alacsony, közepes és magas biztonsági szinteken. Közben megvizsgáljuk, hogyan működnek az egyes szintek védelmi mechanizmusai, és hogyan lehet azokat megkerülni.
2. Mi az a CSRF?¶
A CSRF (Cross-Site Request Forgery – Keresztoldalas kérelem-hamisítás) egy olyan támadás, amikor a támadó ráveszi az áldozatot, hogy hajtson végre valamilyen műveletet egy olyan weboldalon, ahová be van jelentkezve – például jelszóváltoztatást vagy vásárlást – anélkül, hogy az áldozat tudna róla.
3. Low Security Level (Alacsony biztonsági szint)¶
Miután rákattintunk a Change (Módosítás) gombra, láthatjuk, hogy a kérés a GET módszerrel kerül feldolgozásra – ahogy azt korábban a forráskódban is láttuk –, és a paraméterek közvetlenül az URL-ben szerepelnek.
http://127.0.0.1:4280/vulnerabilities/csrf/?password_new=&password_conf=&Change=Change#
Használhatjuk a Burp Suite „Decoder” (Dekódoló) funkcióját arra, hogy tovább kódoljuk az URL-t, így nehezebb lesz az áldozat számára felismerni annak valódi célját.
Illesszük be az URL-t a Decoder-be, válasszuk ki a jobb oldalon az Encode as (Kódolás mint) opciót, majd kattintsunk a URL lehetőségre.
Ennek így kell kinéznie:
%68%74%74%70%3a%2f%2f%31%32%37%2e%30%2e%30%2e%31%3a%34%32%30%30%31%2f%76%75%6c%6e%65%72%61%62%69%6c%69%74%69%65%73%2f%63%73%72%66%2f%3f%70%61%73%73%77%6f%72%64%5f%6e%65%77%3d%61%64%6d%69%6e%26%70%61%73%73%77%6f%72%64%5f%63%6f%6e%66%3d%61%64%6d%69%6e%26%43%68%61%6e%67%65%3d%43%68%61%6e%67%65%23
4. Medium Security Level (Közepes biztonsági szint)¶
A kód elemzése után láthatjuk, hogy ellenőrzi, szerepel-e a kiszolgáló (szerver) neve az URL-ben. Ha igen, akkor a jelszóváltoztatási folyamat folytatódik. Ez az ellenőrzés azt biztosítja, hogy a kérés ugyanarról a domainről érkezzen, így segít megelőzni a külső vagy rosszindulatú oldalak felől érkező kérelmeket.
Itt, ahogy a Burp Suite-ban is látható, megfigyelhetjük a kérésben szereplő Referer fejlécet (header).
A megközelítésünk az lesz, hogy elfogjuk az érvénytelen kérést, és beillesztjük a megfelelő Referer fejlécet. Így a kérés úgy fog tűnni, mintha egy megbízható forrásból érkezne, ezzel megkerülve azokat a biztonsági ellenőrzéseket, amelyek a Referer értékére támaszkodnak az érvényesítés során.
5. High Security Level (Magas biztonsági szint)¶
A kód lekéri az Anti-CSRF tokent, az új jelszót és a jelszó megerősítését a kérés törzséből. Az Anti-CSRF token azt ellenőrzi, hogy a kérés valódi-e, vagyis egyezik-e a munkamenet (session) tokenjével. Minden egyes alkalommal, amikor a Change (Módosítás) gombra kattintunk, új Anti-CSRF token generálódik. Ez az egyediség segít megvédeni a rendszert a brute force (nyers erő) támadásoktól, és megakadályozza, hogy megtévesztő weboldalakon keresztül rosszindulatú jelszómódosítási kísérletek történjenek.
A weboldal forráskódjának megvizsgálásával megtekinthetjük a rejtett felhasználói tokent, amely az űrlapadatok részeként kerül elküldésre.
További elemzés céljából, ha megvizsgáljuk az elfogott kérést a Burp Suite-ban, láthatjuk, hogy az anti-CSRF token a kéréssel együtt kerül továbbításra.