Biztonsági kód hamis kereszttelepítési kérelmek (csrf), shvetsgroup
Biztonsági kód: Cross-site request forgery (CSRF)
Ennek a cikknek az írása az volt, hogy egy sebezhetőséget találtam egy meglehetősen jól ismert modulban. A sebezhetőségek észlelésére vonatkozó szabályok miatt. Nincs jogom kiterjeszteni a részleteket, beszélni fogok általánosságban a sebezhetőségről, valamint a leküzdésére szolgáló módszerekről.
Tehát hamis kereszttelepítési kérelmek (Angol Sross Site Request Forgery, vagy röviden, CSRF): mi ez és mit eszik.
A CSRF egyik alkalmazása a passzív XSS egy másik kiszolgálón észlelt működése. Az áldozat nevében spam is küldhet, és megváltoztathatja a fiókok egyéb fiókjainak beállításait (például a jelszavak helyrehozására vonatkozó titkos kérdés).
Egy élő példa
Például egy kis modulot kell létrehoznunk, amely törölni fogja a csomópontokat. Ezt a hivatkozás belső hivatkozása alapján lehet végrehajtani, ha rákattintunk, az Ajax-kérést elküldi a Drupalov útvonalra. Ehhez az útvonalhoz egy kezelő van csatolva, amely törli a csomópontot. Ez egy ilyen modulról szól, és mindent megtettek:
node_destroy.module
node_destroy.js
És akkor a pusztító kreativitás rohanásakor olyan csomópontot hoz létre, amely ilyen jellegű:
Mi történik ebben a pillanatban? Természetesen nincs kép, de a troll böngésző ugyanezzel az eredménnyel fogja végrehajtani az elérési útra vonatkozó kérelmet.
A kudarcra lemondva a troll elhagyja a helyszínt. Egy nap elteltével a rendszergazda észreveszi ezt a szemétcsomópontot, belép, és törli. És visszatérve az anyagok listájához, nem találja a csomópontokat az aidishnikom 123-mal. A támadás sikeres volt. A függöny.
Azok számára, akik nem értik, amikor a rendszergazda belépett a csomópontba, a böngészője is leállt a kép linkjén. De most már elég volt a hozzáférés, és a csomópontot sikeresen eltávolították, és az admin nem észlelt semmit.
Hogyan kerülhető el a CSRF sebezhetősége?
A válasz az, hogy egyedi adatokat használjon az adatok megváltoztatására irányuló műveletekhez. Hogyan lehetséges ez? A drupal-ban a linkkenkenizálás módszerét használják. Ez azt jelenti, hogy az aktív művelet linkjére egy egyedülálló paraméter kerül hozzáadásra, amelyet a művelet végrehajtása után ellenőrizünk. A drupalban létrehozhat egy ilyen paramétert a drupal_get_token () függvénnyel. Ellenőrizze a -drupal_valid_token () parancsot. A token a webhelyen található érték, a felhasználói munkamenet és a privát kulcs alapján kerül létrehozásra, ami gyakorlatilag érvényteleníti a kártevő valószínűségét, amely a helyes tokenet generálja.
Módosítjuk a modulunkat. Kezdjük a megfelelő linkkel: