it-swarm-eu.dev

CSRF s JSON POST

Hraju si s testovací aplikací, která přijímá požadavky JSON a odpověď je také JSON. Snažím se provést CSRF pro transakci, která přijímá pouze data JSON s požadavkem POST metoda v žádosti.) Aplikace vyvolá chybu, pokud je URL vyžádána pomocí metody get (např. V <script src=).

Aby byl útok smysluplný, tzn. Aby transakce procházela, musím data v žádosti odeslat. Pokud vytvořím svou vlastní stránku a odešlu žádosti JSON, soubory cookie nebudou cestovat, a proto server vrací neověřenou chybovou zprávu.

V původním požadavku serveru nejsou žádné náhodné tokeny.

Zajímalo by mě, jestli existuje způsob, jak v tomto scénáři provést úspěšný útok CSRF.

32
Sachin Kumar

Musíte alespoň zkontrolovat, zda Content-Type: application/json na žádost.

Není možné získat POSTed <form> k odeslání žádosti s Content-Type: application/json. Můžete však odeslat formulář s platnou strukturou JSON v těle jako enctype="text/plain".

Není možné provést křížový původ ( CORS ) XMLHttpRequest POST s Content-Type: application/json proti serveru, který si není vědom křížového původu, protože to způsobí, že žádost HTTP OPTIONS o „předlet“ bude nejprve schválena. Ale můžete poslat křížový původ XMLHttpRequest POST withCredentials , pokud je text/plain.

Takže i s application/json kontrola, můžete se dostat docela blízko k XSRF, ne-li úplně tam. A chování, na která se spoléháte, aby byla zajištěna, jsou poněkud nejasná a stále ve fázi Pracovní verze; nejedná se o pevné a rychlé záruky pro budoucnost webu.

Mohlo by dojít k poškození, například kdyby byl do budoucích verzí HTML přidán nový JSON enctype. (WHATWG přidal text/plain enctype do HTML5 a původně se pokusil také přidat text/xml, takže není vyloučeno, že by k tomu mohlo dojít.) Zvyšujete riziko kompromisu z menších, jemnějších chyb prohlížeče a pluginů při implementaci CORS.

Takže i když se vám pravděpodobně pravděpodobně podaří prozatím prozradit, rozhodně bych nedoporučoval postupovat vpřed bez řádného systému tokenů anti-XSRF.

37
bobince

To je využitelné pomocí Flash, podle https://code.google.com/p/browsersec/wiki/Part2#Same-Origin_policy_for_Flash

Schopnost vytvářet soubory cookie s více doménami HTTP GET a POST) požadavky prostřednictvím zásobníku prohlížeče, s menšími omezeními, než je obvyklé u jiných prohlížečů. To se dosahuje pomocí rozhraní API API URLRequest. zejména zahrnuje možnost specifikovat libovolné hodnoty typu obsahu a odesílat binární užitečná zatížení.

Netestoval jsem to sám, ale zní to věrohodně.

Aktualizace: Vypadá to, že nejnovější vydání Flash již ve výchozím stavu nepovolují žádné požadavky napříč doménami, což je činí nevyužitelným.

Aktualizace č. 2: při zpracování 307 přesměrování přes flash však existuje dlouhodobá zranitelnost, což znamená, že je to stále využitelné

7
albinowax