Reverse Tab Nabbing

Ondersteun HackTricks

Beskrywing

In 'n situasie waar 'n aanvaller die href argument van 'n <a etiket met die attribuut target="_blank" rel="opener" kan beheer wat deur 'n slagoffer geklik gaan word, kan die aanvaller hierdie skakel na 'n web wat onder sy beheer is (n kwaadwillige webwerf). Dan, sodra die slagoffer op die skakel klik en toegang tot die aanvaller se webwerf verkry, sal hierdie kwaadwillige webwerf in staat wees om die oorspronklike bladsy via die javascript objek window.opener te beheer. As die bladsy nie **rel="opener" het nie, maar target="_blank" bevat, en ook nie rel="noopener" het nie, kan dit ook kwesbaar wees.

'n Gereelde manier om hierdie gedrag te misbruik, sou wees om die ligging van die oorspronklike web te verander via window.opener.location = https://attacker.com/victim.html na 'n web wat deur die aanvaller beheer word wat soos die oorspronklike een lyk, sodat dit die inlog vorm van die oorspronklike webwerf kan imiteer en om gebruikers se kredensiale kan vra.

Let egter daarop dat aangesien die aanvaller nou die venster objek van die oorspronklike webwerf kan beheer, kan hy dit op ander maniere misbruik om stealthier aanvalle uit te voer (miskien javascript gebeurtenisse te modifiseer om inligting na 'n bediener wat deur hom beheer word, te ex-filtreer?)

Oorsig

Met terugskakel

Skakel tussen ouer en kind bladsye wanneer voorkoming attribuut nie gebruik word nie:

https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png

Sonder terugskakel

Skakel tussen ouer en kind bladsye wanneer voorkoming attribuut gebruik word:

https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png

Voorbeelde

Skep die volgende bladsye in 'n gids en draai 'n webbediener met python3 -m http.server Dan, toegang http://127.0.0.1:8000/vulnerable.html, klik op die skakel en let op hoe die oorspronklike webwerf URL verander.

vulnerable.html
<!DOCTYPE html>
<html>
<body>
<h1>Victim Site</h1>
<a href="http://127.0.0.1:8000/malicious.html" target="_blank" rel="opener">Controlled by the attacker</a>
</body>
</html>
malicious.html
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
malicious_redir.html
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>

Toeganklike eienskappe

In die scenario waar 'n cross-origin toegang plaasvind (toegang oor verskillende domeine), is die eienskappe van die window JavaScript klasinstansie, waarna verwys word deur die opener JavaScript objekverwysing, wat deur 'n kwaadwillige webwerf verkry kan word, beperk tot die volgende:

  • opener.closed: Hierdie eienskap word gebruik om te bepaal of 'n venster gesluit is, wat 'n booleaanse waarde teruggee.

  • opener.frames: Hierdie eienskap bied toegang tot alle iframe-elemente binne die huidige venster.

  • opener.length: Die aantal iframe-elemente wat in die huidige venster teenwoordig is, word deur hierdie eienskap teruggegee.

  • opener.opener: 'n Verwysing na die venster wat die huidige venster geopen het, kan deur hierdie eienskap verkry word.

  • opener.parent: Hierdie eienskap gee die ouerventers van die huidige venster terug.

  • opener.self: Toegang tot die huidige venster self word deur hierdie eienskap verskaf.

  • opener.top: Hierdie eienskap gee die boonste blaaivenster terug.

E however, in gevalle waar die domeine identies is, verkry die kwaadwillige webwerf toegang tot alle eienskappe wat deur die window JavaScript objekverwysing blootgestel word.

Voorkoming

Voorkomingsinligting is gedokumenteer in die HTML5 Cheat Sheet.

Verwysings

Support HackTricks

Last updated