it-swarm-eu.dev

Jak unést relaci?

Přes očividný název otázky je to vlastně skutečný účel.

Můj web používá PHP kód jako je tento:

    $select="select id from tableA where user_id='".$_SESSION['sess_user_id']."'";

Opravdu se snažím myslet jako hacker a zjistit, jak mohu tuto hodnotu změnit. Četl jsem články hovořící o „únosu relace“, ale nejasný o tom, jak toho lze dosáhnout ...

25
Steve

V zásadě, když relaci někoho unesete, vezmete jejich ID relace a předstíráte své vlastní. Obvykle je identifikátor sessionID přenesen do souboru cookie, což znamená, že pokud máte přístup k souboru cookie ostatních stran, stačí jej vložit do svého vlastního souboru cookie a jejich relaci jste ukradli.

To lze provést několika způsoby, například čicháním bezdrátové sítě a prohlížením přenášených paketů HTTP nebo pomocí útok XSS , kde můžete prohlížeči obětí prozradit, aby vám prozradili své informace o souborech cookie.

Chtěl bych zmínit, že příklad, který popisujete ve své otázce, může být také citlivý na SQL-Injection. Pokud změním ID svého souboru cookie na

asdf' OR 1=1-- 

Nejpravděpodobněji bych byl ověřen jako platný uživatel. Abyste tomu zabránili, musíte se ujistit, že jste řádně dezinfikovali špinavá data přicházející od vašich klientů, než data použijete pro cokoli.

10
Chris Dale

Pokud máte zájem o předvedení, Twitter je velmi dobrým příkladem toho, jak snadno se to dělá. Budeš potřebovat:

  • Dva počítače
  • Firefox s Firebug (samozřejmě existují i ​​jiné možnosti, ale ty jsou populární a snadno dostupné)
  • Editor souborů cookie, například Advanced Cookie Manager (opět snadno nainstalovatelný doplněk přes Firefox)

V počítači A s firefoxem a firebug se přihlaste k účtu Twitter na webu bez https. Po přihlášení otevřete Firebug a podívejte se na řádek „GET Twitter.com“. Když rozbalíte, podívejte se do části Záhlaví odpovědí a najděte Set-Cookie. Tam najdete soubor cookie nazvaný _Twitter_sess. Zvýrazněte a zkopírujte hodnotu (až do středníku).

Nyní otevřete Firefox s pokročilým správcem souborů cookie v počítači B a přejděte na přihlašovací stránku Twitter. Otevřete Advanced Cookie Manager a filtrujte na Twitter.com. Jakmile najdete doménu Twitter.com a její seznam souborů cookie, zobrazí se soubor cookie s názvem _Twitter_sess. Smazat to. Nyní vytvořte nový soubor cookie s názvem "_Twitter_sess", cesta "/" a "Value" hodnotu _Twitter_sess z druhého počítače. Uložte soubor cookie.

Nyní zavřete správce souborů cookie a vraťte se na přihlašovací stránku Twitter, obnovte stránku a bam, jste v.

Nyní vymyslete nějaký chytrý způsob, jak získat relaci někoho jiného (otevřená wifi, xss), a to je jeden ze způsobů, jak se provádí únos relace.

7
Safado

Karraxův kód je útok SQL Injection (na který je váš kód zranitelný - to je nutné opravit), nikoli útok na únos relace.

$select="select id from tableA where user_id='"
    .mysql_real_escape_string($_SESSION['sess_user_id'], $db_handle)
    ."'";

Při únosu relace Bob ukradne hodnotu pro ID relace, které jste přiřadili Alice. Mohlo to být následkem útoku MITM na stream HTML, síťového šňupání, chyby CSS, která mu umožnila vložit na svůj web nějaký javacript nebo jiné metody.

Je důležité neztrácet přehled o problémech s fixací relace - i když nastavíte příznaky SSL a HTTP pouze na cookie a nastavíte use_only_cookies, které nevyřeší problém, kdy Bob útočí na Alice, než přistoupí na váš web a nastaví konkrétní hodnotu pro id relace. Bob pak může na svém počítači nastavit stejnou hodnotu a jeho požadavky jsou vázány na stejnou relaci jako Alice. Když se tedy autentizujete, měli byste vygenerovat nové ID relace - viz session_regenerate_id ()

4
symcbean

Únos relace obvykle zahrnuje krádež cookie od uživatele. Firesheep je například plug-in pro Firefox, který ukradne relace před nezabezpečeným WiFi. HTTP je protokol bez státní příslušnosti, takže to nejlepší, co můžeme udělat pro ověření lidí, je pomocí cookies.

Kód PHP, který máte ve své otázce), je příkladem kódu, který je mohl být náchylný k SQL injekci. Obvykle je nejlepší postup dezinfikovat před vložením takový dotaz.

2
WalterJ89