Autor Zpráva
Hologos
Profil
Zdravím,
tohle téma je spíže založeno, abychom si popovídali o daném tématu.

Na netu (a ostatně i já sám to používám) jsou různé články o tom, jak se bránit proti tomuto typu útoku.
Většinou se využívá token, který se vygeneruje a uloží se do databáze (v lepších případech se pro každou akci vytvoří jeden).
Potom, když se klikne na daný odkaz, tak než se provede daná akce, zkontroluje se, zda-li token + například IP (+ jiné věci) + akce souhlasí s daty uloženými v databázi.

Proto útok už nemůže být veden pouze přes index.php?page=admin&action=delete&id=1, protože token nelze uhádnout (samozřejmě se můžete trefit, ale pravděpodobnost je někde 0,0000000X%).

Jenže, zrovna mě napadlo, jak by se to dalo možná obejít.

Vytvořím si stránku, kde bude iframe (skrytý samozřejmě), který bude směřovat třeba do administrace. Tu stránku si posléze po kompletním načtení proparsuji javascriptem a najdu si v URL s tokeny, posléze vytvořím dynamicky třeba <img> elementy, kterým nastavím src jako nalezené URL. Tím jsem obešel ochranu token + ip + akce.

Jak se proti tomu bránit? Napadá mně jedině skript, který zakáže stránku načítat v iframu z cizího serveru (nevim, jestli se něco takového dá nastavit třeba v .htaccess nebo například javascriptem). Pokud by to byl JS, to se dá také obejít. Snad se to tu ještě nikde neřešilo, nikde jsem ale nic podobného nenašel.

Co si o tom myslíte vy?
tiso
Profil
Hologos: pointou je ten token po použití zmazať a na každej stránke vygenerovať nový.
Hologos
Profil
V tom případě jsi to ale nepochopil. Protože jak píšu, tak stránka se načte v iframe (tzn načtou se i odkazy, které se zatím nespustí). Potom se přes js projde ta stránka a všechny URL s tokenem se uloží a posléze se linky spustí. Tzn chová se to, jako kdyby na ten odkaz klikl sám uživatel.

Takže se nemá jak smazat, protože nebyl použit. A když dá refresh, tak se ty nově vygenerované linky znova najdou a znovu spustí.
tiso
Profil
Hologos: a to načítanie v iframe docieliš ako?
Hologos
Profil
Jde o to, že na ten web samozřejmě musí přijít člověk, který je do systému zrovna přihlášen (a nebo má session furt v prohlížeči). Pak stačí zadat jako cíl třeba www.example.com/admin/.

Kdybych na tu stránku přišel já (který do administrace nemá přístup), tak se hold žádné URL s tokeny nenajdou. Prostě klasický CSRF útok..
Keeehi
Profil
Hologos:
Ovšem ta tvoje vytvořená stránka musí být na stejné doméně, jinak tě iframe dovnitř nepustí.
Chamurappi
Profil
Reaguji na Hologose:
Kdyby ti JavaScript dovolil sahat na cizí domény, nemusel bys vymýšlet CSRF. Stačilo by prostě naťukat/naklikat pokyny skriptem…
Hologos
Profil
Takže tam je zakopaný pes. O tomhle jsem se nikde nedočetl, proto mě to ani nenapadlo. V tom případě to můžete zamknout.
Díky
mckay
Profil
Hologos:
Jakožto registrovaný uživatel máš tu možnost zamknout topic sám -> Dole.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0