5.4 Server-Side Request Forgery (SSRF)

SSRF
SSRF (Server-Side Request Forgery) je zranitelnost, u níž útočník dokáže přimět webovou aplikaci (server), aby jejím jménem odeslala požadavek na libovolné (často interní) umístění. Z pohledu tohoto cílového místa se zdá, že požadavek je legitimní, jelikož přichází ze samotného důvěryhodného webového serveru.

Typicky má webový server přístup i do částí sítě chráněných firewallem (do kterých útočník přímo z internetu nemůže nahlédnout). SSRF v podstatě dělá z webového serveru proxy stroj pro útočníka. Zvláštní variantou je tzv. Blind SSRF, při kterém útočník v odpovědi nevidí obsah cílového serveru (což trochu ztěžuje útok, ale často se dá zneužít pro asynchronní interakce).

Co lze pomocí SSRF provádět
  • Skenování vnitřní sítě (Internal network): Zmapování lokální sítě, odhalování portů a dalších skrytých služeb běžících vedle nebo za samotným serverem.
  • Přístup k alternativním protokolům: V závislosti na schopnostech aplikace může útočník místo "http://" využít jiná schémata, například file:// pro čtení lokálních souborů serveru, nebo ftp:// či ldap://.
  • Získávání citlivých dat z cloud prostředí: Pokud aplikace běží např. v cloudu AWS EC2, může útočník přimět server odeslat požadavek na http://169.254.169.254/latest/meta-data/iam/security-credentials/ a ukrást tak vysoce privilegované přístupové tokeny pro ovládání celého cloudového prostředí.
Kde SSRF nejčastěji hledat
Zranitelnosti se velmi často objevují v místech, kde aplikace přijímá a zpracovává URL od uživatele pro další integraci – například stahování profilových obrázků podle URL, nahrávání a zpracování externích souborů, ve funkcích webových webhooků, v document parserech nebo při generování PDF z webové stránky.

Ochrana proti SSRF