众测实战|某APP存储型XSS完整挖掘&WAF绕过思路复盘

admin 2026-08-28 05:14:24 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文复盘了某APP存储型XSS漏洞的完整挖掘与WAF绕过过程。核心思路包括:通过抓包绕过前端输入限制;利用冷门HTML5事件如ontoggle规避WAF对高危事件的拦截;采用JS逗号表达式将alert函数赋值给变量再调用,以消除alert(特征串;并针对服务端32位字符硬截断问题精简payload。最终成功触发弹窗并获得赏金。关键建议是关注小众事件与语法变形以绕过特征检测。 综合评分: 89 文章分类: 实战经验,WEB安全,渗透测试,安全工具,漏洞分析


众测实战|某APP存储型XSS完整挖掘&WAF绕过思路复盘

Level718 Level718

略懂安全的三秋

2026年8月25日 09:00 广西

在小说阅读器读本章

去阅读

原文:https://xz.aliyun.com/news/92642

大家好,今天给大家复盘一次近期众测挖到的某APP存储型XSS漏洞,从前端限制突破、WAF规则绕过、事件FUZZ、字符截断踩坑到最终成功拿洞拿赏金,完整还原每一步测试逻辑,新手也能看懂核心绕过思路。

本文章敏感信息全部脱敏打码处理,请勿使用文章技术进行违法犯罪活动。

一、突破前端限制

本次测试目标为某APP个人账户昵称修改功能,属于典型的用户可控输入点,是存储型XSS的高危测试位置。

首次测试发现,前端页面对昵称输入做了字符输入限制,无法直接发送payload。

突破思路:抓包修改绕过前端校验

所有前端校验都是客户端校验,完全可控可绕过。前端的限制仅作用于页面输入,抓包拦截修改接口请求数据包,即可绕过所有前端JS校验,直接向服务端提交恶意载荷。

初步测试 payload:Test

提交后页面正常解析标签、字体生效,证明服务端未过滤HTML标签、前端渲染无转义,存在XSS漏洞基础条件。

二、时间戳校验

重放数据包发现响应修改已经超时,这里猜测服务端可能做了一些时间范围限制。

三、WAF拦截高危事件

在确认标签可解析后,使用常规hover触发payload测试:

提交后直接拒绝连接,初步判定:服务端WAF未拦截HTML标签,但是严格拦截常见高危JS事件

为验证猜想,单独提交纯标签 ,数据包正常回显、无拦截,这里修改超时提示不影响后续WAF响应状态的判断。

四、事件大小写绕过

针对事件做大小写变形测试,例如 OnMouseOver、ONMOUSEOVER 等,结果全部被WAF拦截。该站点WAF对常见高危事件开启了大小写忽略匹配规则,普通大小写混淆的绕过方式完全失效,必须FUZZWAF黑名单缺失的冷门事件

五、黑名单FUZZ

针对DOM交互事件进行批量FUZZ测试,最终筛选出WAF完全放行、可正常触发JS冷门事件,也是本次漏洞利用的核心关键

OnMouseEnter、onmouseenter、OnMouseLeave、onmouseleave、OnChange、onchange、OnToggle、ontoggle

这类事件属于HTML5小众交互事件,WAF规则库未收录,无拦截策略,是本次绕过的核心突破口。

六、进阶绕过

确定可用事件后,选择兼容性最强、触发最稳定的 ontoggle 事件(details标签专属折叠展开事件)搭配大小写混淆标签:

初步测试 payload:

 

被WAF拦截

利用逗号表达式写法:从根源抹除攻击特征

绕过 payload:

该写法利用 JS逗号运算符特性,将「函数定义」和「函数调用」拆分执行,彻底规避WAF特征检测,语法逻辑如下:

第一步:a=alert // 将原生alert函数地址赋值给自定义变量a,无任何高危特征

第二步:a(document.cookie) // 调用自定义变量a执行弹窗拿Cookie操作

关键核心:整个请求报文里,不存在alert(这个高危特征串,WAF只能看到普通变量a的调用,无法通过文本匹配识别恶意行为,直接放行。

七、服务端32位字符硬截断

来到昵称这,发现确实解析出了折叠标签,但是没弹窗

站点存在固定32字符硬截断机制:超出32位的内容会被直接截断丢弃,不会报错、无提示。

测试 payload:

被服务端强制截断为:<dETAILS OnToggle=a=alert,a(docu

JS语法残缺、表达式不完整,完全无法执行,这也是上一步无弹窗的核心原因。

索性放弃弹cookie,直接弹窗1即可

核心优势&绕过原理

1. 规避WAF alert() 特征拦截:常规 payload 会出现明文 alert(,极易被WAF匹配拦截;本载荷采用 逗号表达式赋值执行,原文无 alert( 特征,先赋值 a=alert,再调用 a(1),完美绕过函数特征检测。

2. 小众事件免拦截:ontoggle 非高危自动事件,无WAF默认拦截规则。

最终提交 payload,页面正常渲染折叠标签,点击展开后成功弹窗,存储型XSS漏洞验证成功,成功拿下300元众测赏金。

九、漏洞总结&挖洞思路复盘

  1. 前端限制全部可被抓包绕过,不要被前端输入拦截迷惑;

  2. WAF大多拦截显性高危特征,小众HTML5事件、变量赋值调用语法,是高效绕过手段;

  3. 遇到无报错不执行的情况,优先排查服务端字符硬截断,而非单纯纠结WAF拦截;

  4. 逗号表达式伪协议,是规避alert、eval等高危函数特征的通用高阶XSS绕过技巧。

本次漏洞难度不高,但非常适合新手学习「从踩坑、判断环境、FUZZ筛选、适配限制到最终利用」的完整众测思路,所有绕过手法均为实战通用、可复用的技巧。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:略懂安全的三秋 Level718 Level718《众测实战|某APP存储型XSS完整挖掘&WAF绕过思路复盘》

评论:0   参与:  0