该技能名为 Break Filter JS From HTML,来源于 letta-ai/skills,整体定位是在安全测试语境下,为绕过阻止 JavaScript 执行的 HTML/JavaScript 净化过滤器提供指导。当任务涉及寻找 XSS 过滤器绕过方式时,可以使用本技能。技能明确其适用场景包括:分析 HTML 净化过滤器以寻找绕过向量、涉及 XSS 过滤绕过的 CTF 挑战、经授权的 Web 应用输入净化安全测试、理解服务端解析器与浏览器之间的解析器差异。
用途方面,该技能的核心目标是提供一套系统化方法论,用于分析和绕过试图阻止 JavaScript 执行的 HTML 净化过滤器。它强调两个重点:一是在尝试绕过之前深入理解过滤机制;二是对解决方案进行稳健验证。
主要能力与流程按阶段组织。第一阶段是环境与过滤器分析。技能要求在尝试任何绕过之前,彻底理解测试环境与过滤器机制。环境侦察部分包括:定位所有相关文件位置,如过滤器实现、测试框架和任何配置文件;理解测试验证过程,确定成功如何衡量(例如浏览器 alert、DOM 检查等);验证路径依赖,检查测试是否期望文件位于特定路径,必要时创建符号链接或副本;记录执行流,追踪输入如何从载荷经过过滤器到达浏览器。过滤器机制分析部分要求检查过滤器代码以理解:使用的解析库(不同解析器如 BeautifulSoup、DOMPurify、html-sanitizer 等行为不同);哪些元素被移除(script 标签、iframe、object、embed 等);哪些属性被剥离(事件处理器 on*、带 javascript: 的 href 等);处理顺序(过滤器运行一次还是递归运行,是否存在多轮处理);输出编码(输出 HTML 是编码后原样通过还是被编码)。此外,技能建议在运行浏览器测试之前,先创建一个能直接查看过滤器输出的快速方法,以便无需缓慢的浏览器测试即可快速迭代。
第二阶段是绕过策略选择。技能建议基于过滤器分析选择合适策略,并按特定过滤器下成功可能性排序。其中包括解析差异利用:当服务端过滤器与浏览器对 HTML 的解析不同时产生解析差异,这通常是针对基于库的过滤器最有效的途径。常见引起解析差异的元素有 noscript(启用/禁用 JavaScript 时解析不同)、template(某些库可能不将其内容按 HTML 解析)、textarea 与 title(RCDATA 解析上下文)、注释与 CDATA 段、畸形或嵌套标签。还包括编码与混淆:HTML 实体编码(十进制、十六进制、命名实体)、Unicode 规范化问题、双重编码、空字节及其他特殊字符、大小写变体(若过滤器区分大小写)。此外还有 DOM Clobbering 与间接执行:创建遮蔽内置属性的元素、利用读取 DOM 的现有 JavaScript、基于 CSS 的攻击(若 JavaScript 读取计算样式)。以及较少见向量:带内嵌脚本或事件处理器的 SVG、MathML 元素、XML 处理指令(若为 XHTML 模式)、适当上下文中的 Data URI。
第三阶段是系统化测试。测试方法要求:先测过滤器输出,在浏览器测试之前确认载荷能通过过滤器;使用最小载荷,在复杂载荷前从最简单的 XSS(如 alert(1))开始;记录每次尝试,包括尝试内容、过滤器输出与浏览器结果;理解失败原因,当技术失败时判断是被过滤还是浏览器未执行。技能还给出高效迭代模式:基于过滤器分析假设一种绕过;直接针对过滤器测试(快速);若过滤器放行载荷,再在浏览器测试;若浏览器未执行,调查原因;若过滤器拦截,分析方式并调整思路。同时提醒避免低效做法,例如为无法通过过滤器的载荷运行缓慢浏览器测试、未理解前次失败原因就换新技术、尝试浏览器不兼容技术(如已废弃 HTML 特性)。
第四阶段是验证。技能强调单次通过测试不足以证明方案可靠,需要多次运行确保一致性,测试过滤器幂等性(将过滤后输出再次经过过滤器仍可工作),检查时序问题(浏览器测试可能存在竞态条件),在隔离环境验证(在测试框架之外直接用浏览器测试过滤后的 HTML),并记录精确复现成功绕过的步骤。在宣布成功之前,需确认测试连续多次通过、没有待处理的文件修改会令方案失效、方案不依赖测试环境特殊性、所有文件最终状态正确。
技能还列出常见陷阱。环境问题包括:路径不匹配(测试框架可能期望文件位于与发现位置不同的特定位置)、陈旧状态(先前失败尝试可能使文件处于意外状态)、权限问题(过滤器若无法写入输出文件可能静默失败)。分析错误包括:假设过滤器行为(应始终阅读代码验证,而非猜测什么被过滤)、忽略处理顺序(先移除 script 再移除 iframe 的过滤器,与顺序相反的过滤器,绕过方式可能不同)、遗漏递归过滤(有些过滤器处理到无匹配为止,另一些只运行一次)。测试错误包括:浏览器特定载荷(在某些浏览器有效的技术可能在另一浏览器失败)、废弃 HTML(许多经典 XSS 向量在现代浏览器中不再有效)、过早优化(复杂载荷通过而更简单载荷也可行时毫无价值)。验证错误包括:单次测试运行(不稳定测试可能一次通过之后失败)、成功后修改文件(成功测试后的任何改动都可能使其失效)、忽略测试框架特殊性(测试衡量成功的方式可能与预期不同)。
关于具体受支持平台、版本、安装命令、代码示例、收费与价格等信息,资料中暂未提供。