记一次XSS Bypass

admin 2024年1月10日16:49:05评论27 views字数 4296阅读14分19秒阅读模式

前言

在某次项目中发现一处XSS,但是存在宝塔WAF,于是便做了一次简单的XSS Bypass。

Bypass

1、使用<h1>标签时发现可以正常执行

记一次XSS Bypass

2、尝试使用常见的payload进行测试,发现被WAF拦截

记一次XSS Bypass

记一次XSS Bypass

3、但是单独使用img,script标签时又不会被拦截

记一次XSS Bypass

记一次XSS Bypass

记一次XSS Bypass

4、经过多次测试之后发现WAF的拦截规则应该是

1.<script></script> script 标签中间不能有任何字符
2.<img src=1 onerror=alert()> img标签可以使用,但是 onerror=后面不能有任何字符
3.alert()没有被禁用

5、通过上述判断,猜测应该是对onerror这类事件做了过滤,这样的话只需要找一些其他的事件进行替换即可

通过测试发现有以下两个事件可以触发XSS

<img src=1 onpointercancel=alert(123)>  当指针事件被取消时触发XSS
<img src=1 onauxclick=alert(123)>     当使用鼠标中键(侧键)点击事件时触发XSS

记一次XSS Bypass

下面是我整理的一些不常见的on事件

onafterprint:在用户完成打印操作后触发。
onanimationend:在元素的 CSS 动画完成时触发。
onanimationiteration:在元素的 CSS 动画重复播放时触发。
onanimationstart:在元素的 CSS 动画开始时触发。
onauxclick:在用户使用辅助输入设备(例如鼠标上的侧键)点击元素时触发。
onbeforeprint:在用户开始打印操作前触发。
onbeforeunload:在用户离开页面之前(例如关闭窗口或刷新页面)触发。
onblur:在元素失去焦点时触发。
oncancel:在用户取消操作时触发(例如取消文件上传或下载)。
oncanplay:在媒体资源可以开始播放时触发。
oncanplaythrough:在媒体资源可以在不停顿的情况下播放到结束时触发。
onchange:在元素的值发生改变时触发。
onclick:在元素被点击时触发。
onclose:在 WebSocket 或 Server-Sent Events 连接关闭时触发。
oncontextmenu:在用户右击元素时触发上下文菜单。
oncopy:在用户复制元素内容时触发。
oncuechange:在媒体资源的文本轨道提示变化时触发。
oncut:在用户剪切元素内容时触发。
ondblclick:在元素被双击时触发。
ondrag:在元素被拖动时触发。
ondragend:在元素的拖动操作结束时触发。
ondragenter:当拖动操作进入元素时触发。
ondragleave:当拖动操作离开元素时触发。
ondragover:当拖动操作在元素上方悬停时触发。
ondragstart:在元素的拖动操作开始时触发。
ondrop:当拖动操作释放到元素上时触发。
ondurationchange:在媒体资源的持续时间改变时触发。
onemptied:在媒体资源变为空时触发。
onended:在媒体资源播放结束时触发。
onerror:在加载文档或媒体资源时发生错误时触发。
onfocus:在元素获得焦点时触发。
ongotpointercapture:当元素获取指针捕获时触发。
onhashchange:在 URL 的哈希部分发生变化时触发。
oninput:在用户输入内容到可编辑元素中时触发。
oninvalid:在用户提交表单但输入无效时触发(例如输入不符合要求的格式或必填字段为空)。
onkeydown:在用户按下键盘上的任意键时触发。
onkeypress:在用户按下键盘上的字符键(即不是功能键)时触发。
onkeyup:在用户释放键盘上的任意键时触发。
onload:在文档或媒体资源加载完成时触发。
onloadeddata:在媒体资源的第一帧加载完成时触发。
onloadedmetadata:在媒体资源的元数据加载完成时触发(例如分辨率和持续时间)。
onloadstart:在文档或媒体资源开始加载时触发。
onlostpointercapture:当元素失去指针捕获时触发。
onmousedown:在用户按下鼠标左键时触发。
onmouseenter:当鼠标进入元素范围内时触发。
onmouseleave:当鼠标离开元素范围时触发。
onmousemove:当鼠标移动到元素内部时持续触发(通常每秒钟 60 次)。
onmouseout:当鼠标移出元素范围后,如果没有进入该元素的任何子元素,则会触发一次该事件。如果鼠标移出元素范围后进入该元素的某个子元素,则不会触发该事件。
onmouseover:当鼠标移入元素范围内后,如果没有离开该元素的任何子元素,则会触发一次该事件。如果鼠标进入该元素范围内的某个子元素,则不会触发该事件。
onmouseup:在用户释放鼠标左键时触发。
onmousewheel / DOMMouseScroll: 在鼠标滚轮滚动时触发,但是由于不同浏览器实现不同,可能需要使用两种事件来兼容所有浏览器。
onoffline:当浏览器离线状态变为在线状态时触发(例如断开网络连接后重新连接)。
ononline:当浏览器在线状态变为离线状态时触发(例如断开网络连接)。
onpagehide:在用户离开页面并且浏览器开始卸载页面之前触发(例如关闭窗口或导航到另一个页面)。
onpageshow:在用户导航到页面并且页面被完全加载后立即触发(例如从缓存中加载页面)。
onpaste:在用户粘贴内容到元素中时触发。
onpause:在媒体资源暂停播放时触发(例如点击暂停按钮或切换到另一个标签页)。
onplay:在媒体资源开始播放或恢复播放时触发(例如点击播放按钮或切换回当前标签页)。
onplaying:在媒体资源开始播放或恢复播放并且没有停顿或缓冲时触发(即可以流畅播放到结束)。
onpointercancel:当指针事件被取消(例如由于浏览器窗口失去焦点)时,会连续地发送 pointercancel 事件和 pointerup 事件,以通知应用程序指针已经离开了视图。
onpointerdown:当指针设备按下屏幕或按下鼠标左键或按下其他按键时,将分派 pointerdown 事件。
onpointerenter: 当指针设备进入视图中并与视图重叠,将分派 pointerenter 事件。
onpointerleave: 当指针设备离开视图,将分派 pointerleave 事件。
onpointermove: 当指针设备移动并与视图重
ondurationchange:在媒体资源的持续时间发生变化时触发。
onemptied:在媒体资源的可用数据变为空时触发。
onformdata:在通过 FormData 对象发送表单数据时触发。
onfullscreenchange:在进入或退出全屏模式时触发。
oninput:在用户输入内容时触发。
oninvalid:在元素验证无效时触发。
onkeypress:在用户按下键盘上的字符键时触发。
onkeyup:在用户释放键盘上的键时触发。
onloadeddata:在媒体资源的第一帧已加载完成时触发。
onloadedmetadata:在媒体资源的元数据(如尺寸、持续时间等)加载完成时触发。
onmousedown:在鼠标按下按钮时触发。
onmouseenter:当鼠标进入元素时触发。
onmouseleave:当鼠标离开元素时触发。
onmousemove:在鼠标在元素上移动时触发。
onmouseout:在鼠标移出元素时触发。
onmouseover:在鼠标悬停在元素上时触发。
onmouseup:在鼠标释放按钮时触发。
onmousewheel:在鼠标滚轮滚动时触发。
onpaste:在用户粘贴内容到元素时触发。
onpause:在媒体资源暂停播放时触发。
onplay:在媒体资源开始播放时触发。
onplaying:在媒体资源开始播放且不再暂停时触发。
onprogress:在文档或媒体资源的加载进度发生变化时触发。
onratechange:在媒体资源的播放速率发生变化时触发。
onreset:在表单重置时触发。
onresize:在窗口或框架大小发生变化时触发。
onscroll:在元素滚动时触发。
onsearch:在用户提交搜索请求时触发(仅适用于搜索输入框)。
onseeked:在媒体资源完成定位操作后触发。
onseeking:在媒体资源开始定位操作时触发。
onselect:在用户选择文本或输入内容时触发。
onstalled:在媒体资源加载中断时触发。
onsubmit:在表单提交时触发。
onsuspend:在媒体资源暂停加载时触发。
ontimeupdate:在媒体资源的当前播放位置发生变化时触发。
ontoggle:在元素的开关状态切换时触发(例如 <details> 元素)。
ontouchcancel:在触摸操作取消时触发。
ontouchend:在触摸操作结束时触发。
ontouchmove:在触摸操作期间手指位置变化时触发。
ontouchstart:在触摸操作开始时触发。
ontransitionend:在元素的 CSS 过渡完成时触发。
onunload:在文档或窗口被卸载时触发。
onselect:在用户选择元素内容时触发。
onsubmit:在提交表单时触发。
ontimeupdate:在媒体资源的播放位置发生变化时触发。
ontoggle:在元素的开关状态(例如复选框或开关按钮)改变时触发。
onvolumechange:在媒体资源的音量发生变化时触发。
onwaiting:在媒体资源暂停播放等待数据时触发。
onanimationcancel:在元素的 CSS 动画被用户取消时触发。
onanimationiteration:在元素的 CSS 动画重复播放时触发。
onanimationstart:在元素的 CSS 动画开始时触发。
onauxclick:在用户使用辅助输入设备(例如鼠标上的侧键)点击元素时触发。
onbeforeprint:在用户开始打印操作前触发。
onbeforeunload:在用户离开页面之前(例如关闭窗口或刷新页面)触发。
onblur:在元素失去焦点时触发。
oncanplaythrough:在媒体资源可以在不停顿的情况下播放到结束时触发。
onchange:在元素的值发生改变时触发。
onclose:在 WebSocket 或 Server-Sent Events 连接关闭时触发。
oncontextmenu:在用户右击元素时触发上下文菜单。

原文始发于微信公众号(安全攻防屋):记一次XSS Bypass

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月10日16:49:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次XSS Bypasshttp://cn-sec.com/archives/2226594.html

发表评论

匿名网友 填写信息