| category | web |
| name | pentest-js |
| description | JS信息收集入口 - 提取硬编码凭据、API路径、路由、认证逻辑、运行时存储;检测到框架特征时触发对应子技能 |
| when_to_use | 指纹识别完成后,对目标JS深度分析 |
JS 信息收集
核心原则
所有 JS 内容获取必须优先使用 Playwright MCP,禁止直接用 curl 读取JS:
playwright_navigate → playwright_get → playwright_console_logs → playwright_evaluate
curl 仅限 Playwright 不可用时降级。
文件组织
所有输出写入 tmp/<时间戳>/raw/,项目根目录禁止存放。
阶段1:JS 收集
playwright_get_visible_html 提取 <script src="...">
playwright_evaluate 监听 performance.getEntriesByType('resource') 获取动态加载JS
优先级:P0(ipconfig/config/api/setting/routes/permission.js)→ P1(app/chunk-vendors/chunk-*.js)→ P2(第三方SDK/.map)
阶段2:凭据提取
搜索关键词覆盖 6 类:认证凭据(apiKey/appSecret/token/password/Basic auth)、云服务Key(AWS/阿里云/腾讯云)、数据库连接串、加密密钥(AES/RSA/HMAC)、注释、内网地址。
发现凭据后记录:类型 | 文件 | 值(脱敏前5+后3)| 风险等级。
阶段3:API路径与路由
- 显式API:搜索
baseUrl/axios.create/fetch( 等提取
- 路由表:搜索
createRouter/VueRouter/createBrowserRouter/<Route path=
- 运行时提取:
playwright_evaluate → $router?.getRoutes() 或 $router?.options?.routes
阶段4:认证逻辑
- 登录流程逆向:接口路径、密码加密方式、验证码接口、Token存储/携带方式
- 签名算法:搜索
sign/signature/hmac → 提取字段拼接顺序和secret来源
- Token刷新:搜索
refreshToken/refresh
阶段5:环境配置
- 多环境:搜索
dev/staging/production → 各环境baseURL → 生产JS残留的测试地址
- Debug模式:搜索
debug/VConsole/eruda
- 内网地址:IP + 内部域名(.internal/.oa) + 管理后台域名 + 预发布域名
阶段6:运行时提取(Playwright 专属)
- localStorage/sessionStorage:关注 token/userInfo/auth/perms/roles/tenant
- Cookie:document.cookie,分析Token/Session
- 控制台日志:调试信息泄露
- IndexedDB:
indexedDB.databases()
- iframe/postMessage:目标origin、message处理器
- 错误监控:Sentry DSN/GA ID/GTM配置
- jQuery:
$.ajaxSetup中的baseURL/headers/CSRF Token
阶段7:凭据即时验证
发现即测,不等到最后。
子技能触发
输出产物
js_files.txt / hardcoded_creds.txt / apis_from_js.txt / routes.txt / internal_ips.txt / auth_logic.txt / runtime_storage.txt / 各子技能目录