[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81267":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":14,"starSnapshotCount":14,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},81267,"wmpf-mcp-bridge","an7ln\u002Fwmpf-mcp-bridge","an7ln","ai渗透测试小程序",null,"TypeScript",71,11,49,0,6,13,22,18,63.94,"MIT License",false,"main",true,[],"2026-06-12 04:01:32","# wmpf-mcp-bridge\n\n本项目是一个本地 Streamable HTTP MCP Server，用于把 WMPFDebugger 暴露的裸 Chrome DevTools Protocol WebSocket 包装成 MCP 工具，辅助 Codex \u002F Cursor \u002F VS Code Agent 对已授权调试的微信小程序进行安全评估、证据采集和报告整理。\n\n## 使用边界\n\n- 仅用于已获得授权的小程序、本机调试环境和当前 WMPFDebugger 会话。\n- MCP HTTP 服务只监听 `127.0.0.1`。\n- 默认只连接 `ws:\u002F\u002F127.0.0.1:62000`，CDP URL 只允许 `127.0.0.1` 或 `localhost`。\n- `\u002Fmcp` 必须携带启动时输出的 token。\n- 主动请求修改\u002F重放能力未实现；当前工具只做被动采集、单次页面交互观察和人工验证计划生成。\n- 点击类工具会拦截支付、提交订单、删除、注销、退款、提现、确认支付等危险文本，默认不执行，必须显式 `requireConfirm=true`。\n\n## 安装与启动\n\n```powershell\nnpm install\nnpm run dev\n```\n\n也可以指定固定 token：\n\n```powershell\n$env:MCP_TOKEN=\"your-local-token\"\nnpm run dev\n```\n\n启动后访问根路径查看当前 MCP URL：\n\n```text\nhttp:\u002F\u002F127.0.0.1:43827\u002F\n```\n\n默认 MCP URL：\n\n```text\nhttp:\u002F\u002F127.0.0.1:43827\u002Fmcp?token=wmpf-local-token\n```\n\n## Codex 配置\n\n```toml\n[mcp_servers.wmpf]\nenabled = true\nurl = \"http:\u002F\u002F127.0.0.1:43827\u002Fmcp?token=wmpf-local-token\"\nstartup_timeout_sec = 20\ntool_timeout_sec = 60\n```\n\n## 建议测试提示词\n\n```text\n使用 wmpf MCP，先调用 status，然后 connect_wmpf 连接 ws:\u002F\u002F127.0.0.1:62000。\n随后调用 hook_wx_request 和 hook_fetch_and_xhr，打开当前小程序页面并操作关键业务流程。\n再调用 dump_runtime_snapshot、get_all_requests、get_api_inventory、analyze_auth_surface、find_idor_candidates、find_sensitive_data_exposure、find_upload_surfaces、find_payment_and_order_surfaces、find_sign_related_requests。\n请基于证据生成 generate_security_notes，只输出发现线索和人工验证建议，不直接下漏洞结论。\n```\n\u003Cimg width=\"1050\" height=\"1208\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F12dbbb6b-28e2-4609-b1ae-278f3a838980\" \u002F>\n\n\u003Cimg width=\"837\" height=\"1086\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F8140f4fb-5ee7-4cf7-82c3-c7c721d88e3e\" \u002F>\n\n\n## 工具列表\n\n### 基础连接与 CDP\n\n- `status`：查看 MCP 和 CDP 连接状态。\n- `connect_wmpf`：连接本机 WMPFDebugger CDP WebSocket，并启用 Runtime\u002FNetwork。\n- `select_appservice_context`：自动枚举 Target、flatten attach，并选择包含 `wx.request` \u002F `require` \u002F `getCurrentPages` 的 appservice Runtime context。\n- `cdp_call`：调用任意 CDP 方法，支持传入 flatten `sessionId`。\n- `cdp_call_target`：对指定 `targetId` 自动 `Target.attachToTarget({ flatten: true })` 后在子 session 中调用 CDP。\n- `runtime_eval`：在当前 Runtime 执行 JS。\n- `runtime_eval_appservice`：在自动选择的 appservice Runtime context 中执行 JS。\n- `network_enable`：启用 CDP Network。\n- `get_recent_requests`：读取最近 CDP Network 请求，支持 `domain`、`pathPrefix`、`keyword`、`excludeStatic`、`compact` 过滤。\n- `get_response_body`：尝试读取 CDP 响应体。\n- `get_recent_console`：读取 console 和 exception 事件。\n\n### 运行时与页面探索\n\n- `dump_runtime_snapshot`：采集页面运行时快照、storage 摘要、可见文本、可交互元素、疑似框架对象。\n- `get_basic_page_info`：兼容旧版页面信息工具。\n- `get_document_html`：读取 document HTML 前缀。\n- `query_selector_text`：读取指定元素文本和 HTML。\n- `list_interactive_elements`：列出按钮、输入框、链接及高风险关键词元素。\n- `safe_click_and_observe`：单次点击并观察 URL、文本、storage、请求和 console 变化。\n- `input_text_and_observe`：输入文本并观察变化。\n- `inspect_window_keys`：检索 window keys。\n- `search_global_string`：搜索页面、脚本、window keys 中的单个关键词。\n\n### 网络采集与接口资产\n\n- `hook_wx_request`：自动选择 appservice context 后注入非破坏性 `wx.request` hook。\n- `hook_fetch_and_xhr`：注入非破坏性 fetch\u002FXHR hook，记录响应和调用栈。\n- `get_hooked_requests`：读取 fetch\u002FXHR hook 记录。\n- `get_all_requests`：汇总 CDP、wx.request、fetch\u002FXHR 请求，并统一格式。\n- `get_request_detail`：查询单个请求详情，CDP 请求会尝试读取响应体。\n- `get_api_inventory`：按 method + path 生成接口资产清单。\n\n### 漏洞线索识别\n\n- `analyze_auth_surface`：分析认证字段、token 位置、query token、缺失认证和重放线索。\n- `find_idor_candidates`：查找越权候选接口，只给人工验证建议。\n- `find_sensitive_data_exposure`：查找敏感字段并默认脱敏。\n- `find_upload_surfaces`：识别上传、文件、图片、头像、媒体接口。\n- `find_payment_and_order_surfaces`：识别支付、订单、优惠券、钱包、积分接口。\n- `find_debug_admin_surfaces`：识别 debug\u002Ftest\u002Fadmin\u002Finternal\u002Fdev\u002Fstaging\u002Fmock 线索。\n- `find_sign_related_requests`：识别 sign\u002Fsignature\u002Ftimestamp\u002Fnonce 请求。\n\n### 主动验证辅助但默认安全\n\n- `build_replay_plan`：根据请求生成 Burp Repeater 人工重放计划，不发送请求。\n- `compare_two_requests`：对比两个请求的 URL、header、body、auth 和 response 差异。\n- `passive_param_fuzz_suggestions`：生成参数 fuzz 建议，不发送请求，并标注需要授权环境人工验证。\n\n### 源码与签名逻辑分析\n\n- `inspect_wx_config`：读取 `__wxConfig`、`__wxAppCode__`、`__wxRoute`、`__wxAppData__` 摘要和关键词命中。\n- `search_runtime_keywords`：搜索 window keys、document HTML、script 文本、storage 和已抓请求。\n- `trace_request_callstack`：从 hook 记录中提取发起请求的 JS 调用栈。\n\n### 状态篡改\u002F复原辅助\n\n- `inspect_vuex_store`：在 appservice context 中查找 Vuex-like store，保存原始 state 快照，并返回 state\u002Fmutations\u002Factions 摘要。\n- `patch_vuex_state`：按 path 修改 state 或调用 mutation。默认 `dryRun=true`，只有 `dryRun=false` 且 `requireConfirm=true` 才会修改本地 Runtime 状态。\n- `restore_vuex_state`：从 `inspect_vuex_store` 保存的快照恢复 state。默认 `dryRun=true`，只有 `dryRun=false` 且 `requireConfirm=true` 才会恢复。\n\n### 报告与证据\n\n- `export_session`：导出当前会话 JSON 到 `reports\u002Fsession-*.json`。\n- `generate_security_notes`：生成 Markdown 安全评估笔记，只写发现线索和验证建议。\n- `generate_api_table_markdown`：生成接口清单 Markdown 表格。\n\n## 推荐工作流\n\n1. 启动 WMPFDebugger 并确认 DevTools 可连接 `ws=127.0.0.1:62000`。\n2. 启动本项目并把启动输出的 MCP URL 配入 Codex。\n3. 调用 `connect_wmpf`。\n4. 调用 `select_appservice_context`，确认选中的 context 包含 `wx.request` \u002F `require`。\n5. 调用 `hook_wx_request` 和 `hook_fetch_and_xhr`。\n6. 在小程序中人工操作登录、搜索、下单前流程、个人中心、地址、优惠券、上传等页面。\n7. 使用 `get_recent_requests` 的 `excludeStatic=true`、`domain`、`pathPrefix` 过滤图片、字体、data URI 等噪声。\n8. 调用 `get_api_inventory` 和各类 `find_*` 工具生成线索。\n9. 对候选接口使用 `build_replay_plan`、`compare_two_requests`、`passive_param_fuzz_suggestions` 制定人工验证步骤。\n10. 如需验证前端状态授权绕过，先调用 `inspect_vuex_store` 保存快照，再用 `patch_vuex_state` dry-run 预览；确认后才设置 `dryRun=false` 和 `requireConfirm=true`。结束后用 `restore_vuex_state` 复原。\n11. 调用 `export_session` 和 `generate_security_notes` 保存证据与笔记。\n\n## 构建\n\n```powershell\nnpm run build\nnpm start\n```\n\n## License\n\nMIT\n","wmpf-mcp-bridge 是一个本地 Streamable HTTP MCP 服务器，用于将 WMPFDebugger 暴露的 Chrome DevTools Protocol WebSocket 封装成 MCP 工具，辅助 Codex、Cursor 和 VS Code Agent 对已授权调试的微信小程序进行安全评估、证据采集和报告整理。项目采用 TypeScript 编写，提供丰富的 CDP 方法调用及运行时探索功能，如连接管理、页面交互观察、网络请求监控等。它特别适用于开发人员在本地调试环境中对微信小程序进行安全性测试和分析，支持多种被动采集方式，并具备一定的风险操作拦截机制以保障安全。",2,"2026-06-11 04:04:07","CREATED_QUERY"]