用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/cdxiaodong/cain-agent --skill xss命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | xss |
| description | XSS 测试技能 —— 面向真实业务系统,区分渲染上下文(HTML/属性/JS/CSS/URL),覆盖存储型/反射型/DOM 型,对抗 CSP 与输入过滤,产出可复现 PoC |
| phase | test |
| severity_focus | high |
定位:面向真实业务系统的注入验证。核心难点不是找一个能弹
alert的点,而是判断「用户输入最终落在哪个渲染上下文、该上下文的转义是否真实生效、能否在浏览器实际执行」——多数 XSS 误报源于没区分上下文就下结论。
满足以下任一信号即应进入本技能:
endpoints.json 已标注回显点):搜索结果页回显关键词、个人资料页回显昵称/签名、错误页回显输入、列表页回显排序字段。<div>{name}</div>)、属性(<input value="{q}">)、JavaScript 字符串(var q = "{q}";)、CSS(background:url({x}))、URL(<a href="{u}">)——同一参数可能多上下文回显,每处单独评估。location.search 被 innerHTML / document.write / eval / 模板引擎(Vue v-html、React dangerouslySetInnerHTML)消费。script-src 含 unsafe-inline / unsafe-eval / 大量 CDN 域名 / 通配符 *,或存在可被滥用上传 JS 的可信域(JSONP endpoint、CDN 资源)。对齐 DESIGN §3.1。XSS 的 L1/L2/L3 划分核心是「上下文判定」与「是否真执行」,而非 payload 多寡。
目标:确认用户输入在响应中存在、并定位其渲染上下文,不急于弹窗。
cainxss7f3a),在响应源码中 grep 该标记,定位所有回显位置及其所在上下文(HTML body / 属性值 / script 块 / style / href)。<>"'=()/ \ 这些「上下文元字符」,检查响应中它们是被转义(< / " / \\)、编码(\u003c)、过滤(直接消失)、还是原样保留——每个回显点单独记录「过滤面」。onload / 普通 value / URL href / src);JS 上下文要看字符串定界符、是否在模板字符串 ` 内。目标:证明在该上下文下输入能突破当前上下文进入可执行上下文,并在浏览器真实执行。
< 未转义,用 <img src=x onerror=...> / <svg onload=...>;关键不是 payload 长度,而是确认能注入新的合法 HTML 标签并触发事件处理器。" 未转义,用 "><script>... 闭合标签;若在事件属性内(如 value="{x}" 后跟 onfocus),尝试 autofocus onfocus=...;URL 属性(href)优先用 javascript: 协议而非注入标签。" / ' / `)若未转义,用 ";alert(1)// 闭合字符串;若在模板字符串内需考虑 ${...} 插值逃逸。#hash / ?param= 携带 payload,确认它被 innerHTML 等危险 sink 消费——DOM 型的证据要包含「source → sink 的数据流」,不能只给一个能弹窗的 URL。目标:在存在 WAF / 输入过滤 / CSP 时证明 XSS 仍可达。
<script> 被过滤,换 <svg> / <img> / <body> / <iframe> 等可触发事件的标签;若 onerror= 被过滤,换 onpointerover / ontoggle / onanimationstart 等冷门事件;若 alert 被过滤,换 confirm / prompt / eval / top.name。j)、JS Unicode(\u0061)、URL 编码、混合编码——针对「哪个字符被过滤」逐个变形验证,不一锅端。Content-Security-Policy,判断是否有可滥用点——unsafe-inline 直接可执行;可信 CDN 域 + 该域存在可控制的 JS 资源(如 angular 旧版 ng-includes、JSONP 回调)构成绕过;script-src 'nonce-xxx' 若 nonce 可预测或复用则可绕。CSP 绕过需实锚点,禁止只写「理论上可绕」。data: URI、SVG 内联、mutation XSS(解析器与渲染器差异)——以该组件已知 CVE 为线索而非盲试。什么才算确认 XSS(禁止仅凭「payload 在响应里出现」下结论):
alert / console / 网络回调作为执行证据;纯响应文本匹配只是疑似。scope.yaml 授权范围且持书面授权时运行;对未授权第三方域发 payload(即使测试用)也属越界。alert 成功不足以定级,需确认它在「正常用户访问路径」下可触发(如存储型要在他人访问该页面时触发,而非仅作者本人)。
XSS_EOF
echo "=== xss written, lines: $(wc -l < worktree:skills/web/xss/SKILL.md) ==="SSRF 测试技能,覆盖盲 SSRF、内网可达性与七类主流云元数据服务的低影响验证
文件包含检测技能 —— 面向真实业务系统,定位接收文件路径参数的端点(页面渲染/模板加载/配置导入),通过注入路径遍历和 URL 参数探测应用是否未过滤用户输入的文件路径,验证 LFI(本地文件包含)和 RFI(远程文件包含)漏洞,产生可复现 PoC
开放重定向检测技能 —— 面向重定向端点,定位未验证目标 URL 参数的端点,通过构造恶意 URL(redirect=//evil.com)诱导用户跳转到钓鱼站点,产生可复现 PoC