@js-recon/js-recon 1.4.3 → 2.0.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-sync/sync.sh +1 -1
- package/.github/workflows/build-and-prettify.yaml +55 -25
- package/.github/workflows/codeql.yml +33 -0
- package/.github/workflows/exploit-smoke-test.yaml +160 -0
- package/.github/workflows/framework-detection-smoke-test.yaml +135 -0
- package/.github/workflows/plumber.yml +20 -0
- package/.github/workflows/promote-js-recon.yml +5 -3
- package/.github/workflows/publish-js-recon.yml +6 -1
- package/.github/workflows/rules-smoke-test.yaml +15 -7
- package/.nvmrc +1 -0
- package/.plumber.yaml +151 -0
- package/CHANGELOG.md +54 -0
- package/CONTRIBUTING.md +32 -0
- package/Dockerfile +1 -0
- package/README.md +55 -2
- package/SECURITY.md +1 -1
- package/build/analyze/engine/astEngine.js +10 -9
- package/build/analyze/engine/astEngine.js.map +1 -1
- package/build/analyze/engine/csMastSEngine.js +6 -6
- package/build/analyze/engine/csMastSEngine.js.map +1 -1
- package/build/analyze/engine/index.js +1 -1
- package/build/analyze/engine/index.js.map +1 -1
- package/build/analyze/engine/requestEngine.js +6 -6
- package/build/analyze/engine/requestEngine.js.map +1 -1
- package/build/analyze/helpers/determineCompatibleVersion.js +70 -0
- package/build/analyze/helpers/determineCompatibleVersion.js.map +1 -0
- package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js +9 -3
- package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js.map +1 -1
- package/build/analyze/helpers/initRules.js +42 -24
- package/build/analyze/helpers/initRules.js.map +1 -1
- package/build/analyze/helpers/outputHelper.js +3 -3
- package/build/analyze/helpers/outputHelper.js.map +1 -1
- package/build/analyze/helpers/schemas.js +1 -0
- package/build/analyze/helpers/schemas.js.map +1 -1
- package/build/analyze/helpers/validate.js +9 -5
- package/build/analyze/helpers/validate.js.map +1 -1
- package/build/analyze/index.js +26 -16
- package/build/analyze/index.js.map +1 -1
- package/build/cliProgram.js +710 -0
- package/build/cliProgram.js.map +1 -0
- package/build/completion/index.js +245 -339
- package/build/completion/index.js.map +1 -1
- package/build/completion/introspect.js +17 -0
- package/build/completion/introspect.js.map +1 -0
- package/build/config/applicationConfig.js +494 -0
- package/build/config/applicationConfig.js.map +1 -0
- package/build/cs_mast/index.js +18 -17
- package/build/cs_mast/index.js.map +1 -1
- package/build/endpoints/gen_report/gen_json.js +2 -2
- package/build/endpoints/gen_report/gen_json.js.map +1 -1
- package/build/endpoints/gen_report/utility/iterate_n_store.js +1 -1
- package/build/endpoints/gen_report/utility/iterate_n_store.js.map +1 -1
- package/build/endpoints/index.js +12 -12
- package/build/endpoints/index.js.map +1 -1
- package/build/endpoints/next_js/client_jsFilesHref.js +3 -3
- package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -1
- package/build/endpoints/next_js/client_jsonParse.js +4 -4
- package/build/endpoints/next_js/client_jsonParse.js.map +1 -1
- package/build/endpoints/next_js/client_mappedJsonFile.js +6 -6
- package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -1
- package/build/endpoints/next_js/client_subsequentRequests.js +5 -5
- package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -1
- package/build/exploit/angular/cve-2026-68945.js +61 -0
- package/build/exploit/angular/cve-2026-68945.js.map +1 -0
- package/build/exploit/index.js +60 -0
- package/build/exploit/index.js.map +1 -0
- package/build/exploit/next/cve-2025-29927.js +65 -0
- package/build/exploit/next/cve-2025-29927.js.map +1 -0
- package/build/exploit/next/cve-2026-64645.js +51 -0
- package/build/exploit/next/cve-2026-64645.js.map +1 -0
- package/build/exploit/nuxt/cve-2026-71315.js +47 -0
- package/build/exploit/nuxt/cve-2026-71315.js.map +1 -0
- package/build/exploit/nuxt/cve-2026-71320.js +114 -0
- package/build/exploit/nuxt/cve-2026-71320.js.map +1 -0
- package/build/exploit/react/cve-2025-55182.js +116 -0
- package/build/exploit/react/cve-2025-55182.js.map +1 -0
- package/build/exploit/registry/cveRegistry.js +115 -0
- package/build/exploit/registry/cveRegistry.js.map +1 -0
- package/build/exploit/types.js +2 -0
- package/build/exploit/types.js.map +1 -0
- package/build/exploit/utility/compareResponses.js +29 -0
- package/build/exploit/utility/compareResponses.js.map +1 -0
- package/build/exploit/utility/outputHelper.js +22 -0
- package/build/exploit/utility/outputHelper.js.map +1 -0
- package/build/exploit/utility/rawRequest.js +54 -0
- package/build/exploit/utility/rawRequest.js.map +1 -0
- package/build/exploit/utility/sandboxRce.js +49 -0
- package/build/exploit/utility/sandboxRce.js.map +1 -0
- package/build/exploit/utility/toEngineOutput.js +28 -0
- package/build/exploit/utility/toEngineOutput.js.map +1 -0
- package/build/exploit/utility/wsClient.js +78 -0
- package/build/exploit/utility/wsClient.js.map +1 -0
- package/build/exploit/vite/cve-2025-30208.js +44 -0
- package/build/exploit/vite/cve-2025-30208.js.map +1 -0
- package/build/exploit/vite/cve-2026-39363.js +60 -0
- package/build/exploit/vite/cve-2026-39363.js.map +1 -0
- package/build/fingerprint/index.js +11 -21
- package/build/fingerprint/index.js.map +1 -1
- package/build/globalConfig.js +2 -2
- package/build/globalConfig.js.map +1 -1
- package/build/index.js +16 -555
- package/build/index.js.map +1 -1
- package/build/lazyLoad/angular/angular_getFromPageSource.js +3 -3
- package/build/lazyLoad/angular/angular_getFromPageSource.js.map +1 -1
- package/build/lazyLoad/downloadFilesUtil.js +51 -40
- package/build/lazyLoad/downloadFilesUtil.js.map +1 -1
- package/build/lazyLoad/downloadQueue.js +154 -50
- package/build/lazyLoad/downloadQueue.js.map +1 -1
- package/build/lazyLoad/downloadResponse.js +113 -0
- package/build/lazyLoad/downloadResponse.js.map +1 -0
- package/build/lazyLoad/generic/generic_crawlPages.js +186 -0
- package/build/lazyLoad/generic/generic_crawlPages.js.map +1 -0
- package/build/lazyLoad/generic/generic_downloadFiles.js +81 -0
- package/build/lazyLoad/generic/generic_downloadFiles.js.map +1 -0
- package/build/lazyLoad/generic/generic_extractLinks.js +79 -0
- package/build/lazyLoad/generic/generic_extractLinks.js.map +1 -0
- package/build/lazyLoad/generic/generic_getScriptTags.js +152 -0
- package/build/lazyLoad/generic/generic_getScriptTags.js.map +1 -0
- package/build/lazyLoad/generic/generic_importMapDiscovery.js +87 -0
- package/build/lazyLoad/generic/generic_importMapDiscovery.js.map +1 -0
- package/build/lazyLoad/generic/generic_resolveScope.js +61 -0
- package/build/lazyLoad/generic/generic_resolveScope.js.map +1 -0
- package/build/lazyLoad/generic/generic_scanAttributesForJs.js +122 -0
- package/build/lazyLoad/generic/generic_scanAttributesForJs.js.map +1 -0
- package/build/lazyLoad/generic/generic_stringsDiscovery.js +103 -0
- package/build/lazyLoad/generic/generic_stringsDiscovery.js.map +1 -0
- package/build/lazyLoad/generic/generic_webpackChunkPaths.js +56 -0
- package/build/lazyLoad/generic/generic_webpackChunkPaths.js.map +1 -0
- package/build/lazyLoad/globals.js +35 -0
- package/build/lazyLoad/globals.js.map +1 -1
- package/build/lazyLoad/index.js +311 -175
- package/build/lazyLoad/index.js.map +1 -1
- package/build/lazyLoad/methodFilter.js +2 -0
- package/build/lazyLoad/methodFilter.js.map +1 -1
- package/build/lazyLoad/next_js/NextJsCrawler.js +39 -14
- package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetJSScript.js +3 -3
- package/build/lazyLoad/next_js/next_GetJSScript.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js +4 -4
- package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +21 -20
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_SubsequentRequests.js +100 -99
- package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -1
- package/build/lazyLoad/next_js/next_bruteForceJsFiles.js +1 -1
- package/build/lazyLoad/next_js/next_bruteForceJsFiles.js.map +1 -1
- package/build/lazyLoad/next_js/next_buildId.js +2 -2
- package/build/lazyLoad/next_js/next_buildId.js.map +1 -1
- package/build/lazyLoad/next_js/next_getClientSidePaths.js +2 -2
- package/build/lazyLoad/next_js/next_getClientSidePaths.js.map +1 -1
- package/build/lazyLoad/next_js/next_parseLayoutJs.js +6 -6
- package/build/lazyLoad/next_js/next_parseLayoutJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_promiseResolve.js +1 -1
- package/build/lazyLoad/next_js/next_promiseResolve.js.map +1 -1
- package/build/lazyLoad/next_js/next_routerStateForge.js +341 -0
- package/build/lazyLoad/next_js/next_routerStateForge.js.map +1 -0
- package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js +1 -1
- package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js.map +1 -1
- package/build/lazyLoad/next_js/next_serverActionIdScan.js +77 -0
- package/build/lazyLoad/next_js/next_serverActionIdScan.js.map +1 -0
- package/build/lazyLoad/nuxt_js/nuxt_astParse.js +15 -13
- package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -1
- package/build/lazyLoad/nuxt_js/nuxt_getBuildsManifest.js +2 -2
- package/build/lazyLoad/nuxt_js/nuxt_getBuildsManifest.js.map +1 -1
- package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js +3 -3
- package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js.map +1 -1
- package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js +2 -2
- package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js.map +1 -1
- package/build/lazyLoad/outputPath.js +92 -0
- package/build/lazyLoad/outputPath.js.map +1 -0
- package/build/lazyLoad/react/react_followImports.js +15 -5
- package/build/lazyLoad/react/react_followImports.js.map +1 -1
- package/build/lazyLoad/react/react_getScriptTags.js +11 -6
- package/build/lazyLoad/react/react_getScriptTags.js.map +1 -1
- package/build/lazyLoad/react/react_sourcemapUrls.js +3 -2
- package/build/lazyLoad/react/react_sourcemapUrls.js.map +1 -1
- package/build/lazyLoad/react/react_webpackChunkPaths.js +12 -203
- package/build/lazyLoad/react/react_webpackChunkPaths.js.map +1 -1
- package/build/lazyLoad/researchUtils.js +15 -0
- package/build/lazyLoad/researchUtils.js.map +1 -0
- package/build/lazyLoad/shared/webpackChunkParsers.js +218 -0
- package/build/lazyLoad/shared/webpackChunkParsers.js.map +1 -0
- package/build/lazyLoad/stagnation/stagnationMonitor.js +63 -0
- package/build/lazyLoad/stagnation/stagnationMonitor.js.map +1 -0
- package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js +1 -0
- package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js.map +1 -1
- package/build/lazyLoad/svelte/svelte_getFromPageSource.js +5 -5
- package/build/lazyLoad/svelte/svelte_getFromPageSource.js.map +1 -1
- package/build/lazyLoad/svelte/svelte_getVersionJson.js +2 -2
- package/build/lazyLoad/svelte/svelte_getVersionJson.js.map +1 -1
- package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js +6 -6
- package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js.map +1 -1
- package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js +2 -2
- package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js.map +1 -1
- package/build/lazyLoad/techDetect/checkAngularJS.js +1 -1
- package/build/lazyLoad/techDetect/checkAngularJS.js.map +1 -1
- package/build/lazyLoad/techDetect/checkNuxtJS.js +3 -3
- package/build/lazyLoad/techDetect/checkNuxtJS.js.map +1 -1
- package/build/lazyLoad/techDetect/checkSvelte.js +0 -1
- package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -1
- package/build/lazyLoad/techDetect/checkVueJS.js +6 -6
- package/build/lazyLoad/techDetect/checkVueJS.js.map +1 -1
- package/build/lazyLoad/techDetect/index.js +106 -60
- package/build/lazyLoad/techDetect/index.js.map +1 -1
- package/build/lazyLoad/vue/vue_RuntimeJs.js +20 -15
- package/build/lazyLoad/vue/vue_RuntimeJs.js.map +1 -1
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js +10 -5
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js.map +1 -1
- package/build/lazyLoad/vue/vue_discoverJsFiles.js +20 -17
- package/build/lazyLoad/vue/vue_discoverJsFiles.js.map +1 -1
- package/build/lazyLoad/vue/vue_getClientSidePaths.js +70 -46
- package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -1
- package/build/lazyLoad/vue/vue_jsImports.js +3 -2
- package/build/lazyLoad/vue/vue_jsImports.js.map +1 -1
- package/build/lazyLoad/vue/vue_pageSrc.js +3 -2
- package/build/lazyLoad/vue/vue_pageSrc.js.map +1 -1
- package/build/lazyLoad/vue/vue_reconstructSourceMaps.js +6 -5
- package/build/lazyLoad/vue/vue_reconstructSourceMaps.js.map +1 -1
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +10 -21
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -1
- package/build/lazyLoad/vue/vue_severalJsFilesHome.js +5 -4
- package/build/lazyLoad/vue/vue_severalJsFilesHome.js.map +1 -1
- package/build/lazyLoad/vue/vue_stringJsFiles.js +28 -25
- package/build/lazyLoad/vue/vue_stringJsFiles.js.map +1 -1
- package/build/lazyLoad/vue/vue_viteMapDeps.js +8 -2
- package/build/lazyLoad/vue/vue_viteMapDeps.js.map +1 -1
- package/build/load/index.js +8 -7
- package/build/load/index.js.map +1 -1
- package/build/map/angular_js/getAngularConnections.js +6 -6
- package/build/map/angular_js/getAngularConnections.js.map +1 -1
- package/build/map/graphql/resolveGraphql.js +6 -6
- package/build/map/graphql/resolveGraphql.js.map +1 -1
- package/build/map/index.js +17 -17
- package/build/map/index.js.map +1 -1
- package/build/map/interactive-mode/commandHandler.js +278 -0
- package/build/map/interactive-mode/commandHandler.js.map +1 -0
- package/build/map/interactive-mode/commandHelpers.js +189 -0
- package/build/map/interactive-mode/commandHelpers.js.map +1 -0
- package/build/map/interactive-mode/esqueryGen.js.map +1 -0
- package/build/map/interactive-mode/helpMenu.js +11 -0
- package/build/map/interactive-mode/helpMenu.js.map +1 -0
- package/build/map/interactive-mode/inputPatch.js.map +1 -0
- package/build/map/interactive-mode/interactive.js +71 -0
- package/build/map/interactive-mode/interactive.js.map +1 -0
- package/build/map/interactive-mode/keybindings.js.map +1 -0
- package/build/map/interactive-mode/printer.js.map +1 -0
- package/build/map/interactive-mode/ui.js.map +1 -0
- package/build/map/next_js/getAxiosInstances.js +5 -5
- package/build/map/next_js/getAxiosInstances.js.map +1 -1
- package/build/map/next_js/getExports.js +4 -4
- package/build/map/next_js/getExports.js.map +1 -1
- package/build/map/next_js/getFetchInstances.js +10 -10
- package/build/map/next_js/getFetchInstances.js.map +1 -1
- package/build/map/next_js/getTurbopackConnections.js +8 -8
- package/build/map/next_js/getTurbopackConnections.js.map +1 -1
- package/build/map/next_js/getWebpackConnections.js +27 -16
- package/build/map/next_js/getWebpackConnections.js.map +1 -1
- package/build/map/next_js/interactive.js +3 -65
- package/build/map/next_js/interactive.js.map +1 -1
- package/build/map/next_js/interactive_helpers/commandHandler.js +38 -290
- package/build/map/next_js/interactive_helpers/commandHandler.js.map +1 -1
- package/build/map/next_js/interactive_helpers/commandHelpers.js +0 -184
- package/build/map/next_js/interactive_helpers/commandHelpers.js.map +1 -1
- package/build/map/next_js/interactive_helpers/helpMenu.js +2 -10
- package/build/map/next_js/interactive_helpers/helpMenu.js.map +1 -1
- package/build/map/next_js/resolveAxios.js +6 -6
- package/build/map/next_js/resolveAxios.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/findAxiosClients.js +4 -4
- package/build/map/next_js/resolveAxiosHelpers/findAxiosClients.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js +2 -2
- package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js +5 -5
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js +10 -10
- package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js +13 -9
- package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/processAxiosCall.js +12 -8
- package/build/map/next_js/resolveAxiosHelpers/processAxiosCall.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/processDirectAxiosCall.js +12 -8
- package/build/map/next_js/resolveAxiosHelpers/processDirectAxiosCall.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js +11 -11
- package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js +16 -16
- package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js.map +1 -1
- package/build/map/next_js/resolveFetch.js +23 -23
- package/build/map/next_js/resolveFetch.js.map +1 -1
- package/build/map/next_js/resolveNewRequest.js +10 -10
- package/build/map/next_js/resolveNewRequest.js.map +1 -1
- package/build/map/next_js/resolveServerActions.js +4 -4
- package/build/map/next_js/resolveServerActions.js.map +1 -1
- package/build/map/next_js/utils.js +8 -2
- package/build/map/next_js/utils.js.map +1 -1
- package/build/map/react_js/getReactConnections.js +21 -14
- package/build/map/react_js/getReactConnections.js.map +1 -1
- package/build/map/svelte_js/interactive.js +3 -54
- package/build/map/svelte_js/interactive.js.map +1 -1
- package/build/map/vue_js/getViteConnections.js +23 -16
- package/build/map/vue_js/getViteConnections.js.map +1 -1
- package/build/map/vue_js/interactive.js +3 -63
- package/build/map/vue_js/interactive.js.map +1 -1
- package/build/map/vue_js/interactive_helpers/commandHandler.js +34 -283
- package/build/map/vue_js/interactive_helpers/commandHandler.js.map +1 -1
- package/build/map/vue_js/interactive_helpers/helpMenu.js +2 -10
- package/build/map/vue_js/interactive_helpers/helpMenu.js.map +1 -1
- package/build/map/vue_js/taint_utils.js +1 -1
- package/build/map/vue_js/taint_utils.js.map +1 -1
- package/build/map/vue_js/vue_resolveFetch.js +12 -12
- package/build/map/vue_js/vue_resolveFetch.js.map +1 -1
- package/build/map/vue_js/vue_resolveHttpClient.js +18 -18
- package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -1
- package/build/map/vue_js/vue_resolveXhr.js +11 -11
- package/build/map/vue_js/vue_resolveXhr.js.map +1 -1
- package/build/mcp/chatOneShot.js +7 -7
- package/build/mcp/chatOneShot.js.map +1 -1
- package/build/mcp/claudeCodeCreds.js +5 -5
- package/build/mcp/claudeCodeCreds.js.map +1 -1
- package/build/mcp/cli.js +36 -35
- package/build/mcp/cli.js.map +1 -1
- package/build/mcp/config.js +4 -4
- package/build/mcp/config.js.map +1 -1
- package/build/mcp/index.js +7 -7
- package/build/mcp/index.js.map +1 -1
- package/build/mcp/mcpServer.js +3 -2
- package/build/mcp/mcpServer.js.map +1 -1
- package/build/mcp/skills.js +1 -0
- package/build/mcp/skills.js.map +1 -1
- package/build/mcp/tools.js +5 -4
- package/build/mcp/tools.js.map +1 -1
- package/build/proxy/checkFeasibility.js +8 -4
- package/build/proxy/checkFeasibility.js.map +1 -1
- package/build/proxy/checkFireWallBlocking.js +23 -13
- package/build/proxy/checkFireWallBlocking.js.map +1 -1
- package/build/proxy/detectBlockedResponse.js +205 -0
- package/build/proxy/detectBlockedResponse.js.map +1 -0
- package/build/proxy/genReq.js +434 -127
- package/build/proxy/genReq.js.map +1 -1
- package/build/proxy/index.js +3 -3
- package/build/proxy/index.js.map +1 -1
- package/build/proxy/oxylabsFallback.js +110 -0
- package/build/proxy/oxylabsFallback.js.map +1 -0
- package/build/proxy/proxyFeasibilityRequest.js +11 -9
- package/build/proxy/proxyFeasibilityRequest.js.map +1 -1
- package/build/refactor/index.js +83 -79
- package/build/refactor/index.js.map +1 -1
- package/build/refactor/next/index.js +69 -26
- package/build/refactor/next/index.js.map +1 -1
- package/build/refactor/next/transform.js +11 -4
- package/build/refactor/next/transform.js.map +1 -1
- package/build/refactor/next/validator.js +7 -7
- package/build/refactor/next/validator.js.map +1 -1
- package/build/refactor/react/index.js +13 -13
- package/build/refactor/react/index.js.map +1 -1
- package/build/refactor/react/validator.js +7 -7
- package/build/refactor/react/validator.js.map +1 -1
- package/build/refactor/react-vite/index.js +3 -3
- package/build/refactor/react-vite/index.js.map +1 -1
- package/build/refactor/remote/hf-client.js +1 -0
- package/build/refactor/remote/hf-client.js.map +1 -1
- package/build/refactor/remote/version-detect.js +12 -12
- package/build/refactor/remote/version-detect.js.map +1 -1
- package/build/refactor/vue/index.js +6 -6
- package/build/refactor/vue/index.js.map +1 -1
- package/build/refactor/vue/vite.js +6 -6
- package/build/refactor/vue/vite.js.map +1 -1
- package/build/report/index.js +30 -8
- package/build/report/index.js.map +1 -1
- package/build/report/swaggerJacker.js +63 -0
- package/build/report/swaggerJacker.js.map +1 -0
- package/build/report/utility/genHtml.js +7 -7
- package/build/report/utility/genHtml.js.map +1 -1
- package/build/report/utility/populateDb/populateAnalysisFindings.js +2 -2
- package/build/report/utility/populateDb/populateAnalysisFindings.js.map +1 -1
- package/build/report/utility/populateDb/populateEndpoints.js +3 -3
- package/build/report/utility/populateDb/populateEndpoints.js.map +1 -1
- package/build/report/utility/populateDb/populateMappedJson.js +2 -2
- package/build/report/utility/populateDb/populateMappedJson.js.map +1 -1
- package/build/report/utility/populateDb/populateMappedOpenapi.js +3 -3
- package/build/report/utility/populateDb/populateMappedOpenapi.js.map +1 -1
- package/build/run/bundler-detect.js +45 -9
- package/build/run/bundler-detect.js.map +1 -1
- package/build/run/cancellableStep.js +27 -0
- package/build/run/cancellableStep.js.map +1 -0
- package/build/run/dashboard/dashboardHtml.js +150 -0
- package/build/run/dashboard/dashboardHtml.js.map +1 -0
- package/build/run/dashboard/fsBrowser.js +43 -0
- package/build/run/dashboard/fsBrowser.js.map +1 -0
- package/build/run/dashboard/server.js +123 -0
- package/build/run/dashboard/server.js.map +1 -0
- package/build/run/dashboard/state.js +97 -0
- package/build/run/dashboard/state.js.map +1 -0
- package/build/run/index.js +239 -204
- package/build/run/index.js.map +1 -1
- package/build/run/interruptHandler.js +18 -0
- package/build/run/interruptHandler.js.map +1 -1
- package/build/run/outputDirectory.js +377 -0
- package/build/run/outputDirectory.js.map +1 -0
- package/build/sourcemaps/index.js +116 -29
- package/build/sourcemaps/index.js.map +1 -1
- package/build/strings/index.js +38 -28
- package/build/strings/index.js.map +1 -1
- package/build/strings/openapi.js +4 -4
- package/build/strings/openapi.js.map +1 -1
- package/build/strings/permutate.js +4 -4
- package/build/strings/permutate.js.map +1 -1
- package/build/strings/secrets.js +1 -0
- package/build/strings/secrets.js.map +1 -1
- package/build/strings/trufflehog.js +66 -19
- package/build/strings/trufflehog.js.map +1 -1
- package/build/strings/trufflehogConfig.js +36 -0
- package/build/strings/trufflehogConfig.js.map +1 -0
- package/build/strings/trufflehogDownload.js +115 -0
- package/build/strings/trufflehogDownload.js.map +1 -0
- package/build/utility/ai.js +33 -4
- package/build/utility/ai.js.map +1 -1
- package/build/utility/banner.js +4 -3
- package/build/utility/banner.js.map +1 -1
- package/build/utility/configureSandbox.js +2 -2
- package/build/utility/configureSandbox.js.map +1 -1
- package/build/utility/downloadProgress.js +99 -0
- package/build/utility/downloadProgress.js.map +1 -0
- package/build/utility/globals.js +19 -11
- package/build/utility/globals.js.map +1 -1
- package/build/utility/heap.js +2 -1
- package/build/utility/heap.js.map +1 -1
- package/build/utility/makeReq.js +490 -257
- package/build/utility/makeReq.js.map +1 -1
- package/build/utility/openapiGenerator.js +2 -2
- package/build/utility/openapiGenerator.js.map +1 -1
- package/build/utility/printMsg.js +53 -0
- package/build/utility/printMsg.js.map +1 -0
- package/build/utility/progressLog.js +68 -7
- package/build/utility/progressLog.js.map +1 -1
- package/build/utility/resolvePath.js +2 -1
- package/build/utility/resolvePath.js.map +1 -1
- package/build/utility/ruleVersionMap.js +73 -0
- package/build/utility/ruleVersionMap.js.map +1 -0
- package/build/utility/targetInputs.js +177 -0
- package/build/utility/targetInputs.js.map +1 -0
- package/build/utility/urlUtils.js +37 -1
- package/build/utility/urlUtils.js.map +1 -1
- package/config.dist.yaml +251 -0
- package/contributing/testing.md +106 -0
- package/eslint.config.js +24 -0
- package/package.json +22 -5
- package/scripts/exploit-smoke-test.js +82 -0
- package/scripts/framework-detect-smoke-test.js +64 -0
- package/scripts/postinstall-completion.mjs +40 -0
- package/scripts/smoke-test.js +12 -0
- package/build/lazyLoad/downloadLoadedJsUtil.js +0 -98
- package/build/lazyLoad/downloadLoadedJsUtil.js.map +0 -1
- package/build/map/next_js/interactive_helpers/esqueryGen.js.map +0 -1
- package/build/map/next_js/interactive_helpers/inputPatch.js.map +0 -1
- package/build/map/next_js/interactive_helpers/keybindings.js.map +0 -1
- package/build/map/next_js/interactive_helpers/printer.js.map +0 -1
- package/build/map/next_js/interactive_helpers/ui.js.map +0 -1
- /package/build/map/{next_js/interactive_helpers → interactive-mode}/esqueryGen.js +0 -0
- /package/build/map/{next_js/interactive_helpers → interactive-mode}/inputPatch.js +0 -0
- /package/build/map/{next_js/interactive_helpers → interactive-mode}/keybindings.js +0 -0
- /package/build/map/{next_js/interactive_helpers → interactive-mode}/printer.js +0 -0
- /package/build/map/{next_js/interactive_helpers → interactive-mode}/ui.js +0 -0
package/build/cs_mast/index.js
CHANGED
|
@@ -9,8 +9,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { cs_mast_init, ParseError, buildSignatureFromConfig } from "@shriyanss/cs-mast";
|
|
11
11
|
import * as fs from "fs";
|
|
12
|
+
import * as os from "os";
|
|
12
13
|
import * as path from "path";
|
|
13
|
-
import
|
|
14
|
+
import { printMsg, MSG } from "../utility/printMsg.js";
|
|
14
15
|
const CS_MAST_CONFIG = {
|
|
15
16
|
hash: "sha256",
|
|
16
17
|
lang: "js",
|
|
@@ -93,7 +94,7 @@ function runOnePermutation(jsFiles, scat, sinc, minCollisions, permOutput, colli
|
|
|
93
94
|
}
|
|
94
95
|
export default (outputDir_1, collisionTable_1, minCollisions_1, collisionOutput_1, collisionFormat_1, ...args_1) => __awaiter(void 0, [outputDir_1, collisionTable_1, minCollisions_1, collisionOutput_1, collisionFormat_1, ...args_1], void 0, function* (outputDir, collisionTable, minCollisions, collisionOutput, collisionFormat, scatOverride = "", sincOverride = "", allPermutations = false, permOutput = undefined, permConcurrency = 0) {
|
|
95
96
|
if (collisionOutput && !["json", "csv"].includes(collisionFormat)) {
|
|
96
|
-
|
|
97
|
+
printMsg(MSG.Err, `[!] Invalid format: "${collisionFormat}". Use "json" or "csv".`);
|
|
97
98
|
process.exit(1);
|
|
98
99
|
}
|
|
99
100
|
// Resolve output path: if it's an existing directory or has no extension,
|
|
@@ -105,7 +106,7 @@ export default (outputDir_1, collisionTable_1, minCollisions_1, collisionOutput_
|
|
|
105
106
|
}
|
|
106
107
|
}
|
|
107
108
|
if (!fs.existsSync(outputDir)) {
|
|
108
|
-
|
|
109
|
+
printMsg(MSG.Err, `[!] Output directory not found: ${outputDir}`);
|
|
109
110
|
process.exit(1);
|
|
110
111
|
}
|
|
111
112
|
// apply scat/sinc overrides
|
|
@@ -122,20 +123,20 @@ export default (outputDir_1, collisionTable_1, minCollisions_1, collisionOutput_
|
|
|
122
123
|
.filter(Boolean)
|
|
123
124
|
: [];
|
|
124
125
|
const activeConfig = Object.assign(Object.assign({}, CS_MAST_CONFIG), { scat: activeScat, sinc: activeSinc });
|
|
125
|
-
|
|
126
|
+
printMsg(MSG.Header, `[*] Scanning JS files in: ${outputDir}`);
|
|
126
127
|
const jsFiles = findJsFiles(outputDir);
|
|
127
|
-
|
|
128
|
+
printMsg(MSG.Header, `[*] Found ${jsFiles.length} JS file(s)`);
|
|
128
129
|
// --all-scat-permutations mode
|
|
129
130
|
if (allPermutations) {
|
|
130
131
|
if (!permOutput) {
|
|
131
|
-
|
|
132
|
+
printMsg(MSG.Err, "[!] --perm-output <dir> is required with --all-scat-permutations");
|
|
132
133
|
process.exit(1);
|
|
133
134
|
}
|
|
134
135
|
if (!fs.existsSync(permOutput))
|
|
135
136
|
fs.mkdirSync(permOutput, { recursive: true });
|
|
136
137
|
const subsets = allScatSubsets();
|
|
137
|
-
const concurrency = permConcurrency > 0 ? permConcurrency : Math.max(1, Math.floor(
|
|
138
|
-
|
|
138
|
+
const concurrency = permConcurrency > 0 ? permConcurrency : Math.max(1, Math.floor(os.cpus().length / 2));
|
|
139
|
+
printMsg(MSG.Header, `[*] Running ${subsets.length} scat permutations (concurrency: ${concurrency})`);
|
|
139
140
|
let done = 0;
|
|
140
141
|
for (let i = 0; i < subsets.length; i += concurrency) {
|
|
141
142
|
const batch = subsets.slice(i, i + concurrency);
|
|
@@ -143,7 +144,7 @@ export default (outputDir_1, collisionTable_1, minCollisions_1, collisionOutput_
|
|
|
143
144
|
done += batch.length;
|
|
144
145
|
process.stdout.write(`\r[*] ${done}/${subsets.length} permutations done`);
|
|
145
146
|
}
|
|
146
|
-
|
|
147
|
+
printMsg(MSG.Run, `\n[+] All permutations written to: ${permOutput}`);
|
|
147
148
|
return;
|
|
148
149
|
}
|
|
149
150
|
const sigMap = new Map();
|
|
@@ -163,12 +164,12 @@ export default (outputDir_1, collisionTable_1, minCollisions_1, collisionOutput_
|
|
|
163
164
|
}
|
|
164
165
|
catch (e) {
|
|
165
166
|
if (e instanceof ParseError) {
|
|
166
|
-
|
|
167
|
+
printMsg(MSG.Warn, `[!] Skipping (parse error): ${file}`);
|
|
167
168
|
}
|
|
168
169
|
skipped++;
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
|
-
|
|
172
|
+
printMsg(MSG.Run, `[+] Processed ${parsed} file(s), skipped ${skipped}, unique hashes: ${sigMap.size}`);
|
|
172
173
|
if (!collisionTable && !collisionOutput)
|
|
173
174
|
return;
|
|
174
175
|
const collisions = [...sigMap.entries()]
|
|
@@ -176,24 +177,24 @@ export default (outputDir_1, collisionTable_1, minCollisions_1, collisionOutput_
|
|
|
176
177
|
.sort(([, a], [, b]) => b.length - a.length)
|
|
177
178
|
.map(([signature, files]) => ({ signature, count: files.length, files }));
|
|
178
179
|
if (collisions.length === 0) {
|
|
179
|
-
|
|
180
|
+
printMsg(MSG.Warn, `[!] No collisions found with --min-collisions ${minCollisions}`);
|
|
180
181
|
return;
|
|
181
182
|
}
|
|
182
183
|
if (collisionTable) {
|
|
183
|
-
|
|
184
|
+
printMsg(MSG.Run, `\n[+] ${collisions.length} collision group(s) found (min-collisions: ${minCollisions}):\n`);
|
|
184
185
|
const sigColWidth = 60;
|
|
185
186
|
const countColWidth = 7;
|
|
186
187
|
const header = "Signature".padEnd(sigColWidth) + "Count".padEnd(countColWidth) + "Files";
|
|
187
188
|
const separator = "─".repeat(sigColWidth) + "─".repeat(countColWidth) + "─".repeat(40);
|
|
188
|
-
|
|
189
|
-
|
|
189
|
+
printMsg(MSG.Plain, header);
|
|
190
|
+
printMsg(MSG.Plain, separator);
|
|
190
191
|
for (const entry of collisions) {
|
|
191
192
|
// Truncate at the hash boundary: show params + first 12 hex chars
|
|
192
193
|
const truncated = entry.signature.length > sigColWidth - 1
|
|
193
194
|
? entry.signature.slice(0, sigColWidth - 4) + "..."
|
|
194
195
|
: entry.signature;
|
|
195
196
|
const fileList = entry.files.join(", ");
|
|
196
|
-
|
|
197
|
+
printMsg(MSG.Plain, truncated.padEnd(sigColWidth) + String(entry.count).padEnd(countColWidth) + fileList);
|
|
197
198
|
}
|
|
198
199
|
}
|
|
199
200
|
if (!collisionOutput)
|
|
@@ -208,6 +209,6 @@ export default (outputDir_1, collisionTable_1, minCollisions_1, collisionOutput_
|
|
|
208
209
|
}
|
|
209
210
|
fs.writeFileSync(collisionOutput, rows.join("\n"));
|
|
210
211
|
}
|
|
211
|
-
|
|
212
|
+
printMsg(MSG.Run, `[+] Collision data written to: ${collisionOutput}`);
|
|
212
213
|
});
|
|
213
214
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cs_mast/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAExF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cs_mast/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import fs from "fs";
|
|
11
|
-
import chalk from "chalk";
|
|
12
11
|
import iterate_n_store from "./utility/iterate_n_store.js";
|
|
12
|
+
import { printMsg, MSG } from "../../utility/printMsg.js";
|
|
13
13
|
/**
|
|
14
14
|
* Generates a JSON report from a list of URLs.
|
|
15
15
|
*
|
|
@@ -23,7 +23,7 @@ const gen_json = (url, hrefs, output) => __awaiter(void 0, void 0, void 0, funct
|
|
|
23
23
|
const result = yield iterate_n_store(url, hrefs);
|
|
24
24
|
const finalJSON = JSON.stringify(result, null, 2);
|
|
25
25
|
fs.writeFileSync(`${output}.json`, finalJSON);
|
|
26
|
-
|
|
26
|
+
printMsg(MSG.Run, `[✓] Generated JSON report at ${output}.json`);
|
|
27
27
|
return finalJSON;
|
|
28
28
|
});
|
|
29
29
|
export default gen_json;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gen_json.js","sourceRoot":"","sources":["../../../src/endpoints/gen_report/gen_json.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,
|
|
1
|
+
{"version":3,"file":"gen_json.js","sourceRoot":"","sources":["../../../src/endpoints/gen_report/gen_json.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,QAAQ,GAAG,CAAO,GAAW,EAAE,KAAe,EAAE,MAAc,EAAE,EAAE;IACpE,qBAAqB;IACrB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEjD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,EAAE,CAAC,aAAa,CAAC,GAAG,MAAM,OAAO,EAAE,SAAS,CAAC,CAAC;IAE9C,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,gCAAgC,MAAM,OAAO,CAAC,CAAC;IACjE,OAAO,SAAS,CAAC;AACrB,CAAC,CAAA,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -27,7 +27,7 @@ import resolvePath from "../../../utility/resolvePath.js";
|
|
|
27
27
|
* @returns {Promise<object>} - A promise that resolves to the nested object structure
|
|
28
28
|
*/
|
|
29
29
|
const iterate_n_store = (baseUrl, urls) => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
|
-
|
|
30
|
+
const result = {};
|
|
31
31
|
for (let url of urls) {
|
|
32
32
|
if (url.startsWith("mailto:") || url.startsWith("tel:")) {
|
|
33
33
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterate_n_store.js","sourceRoot":"","sources":["../../../../src/endpoints/gen_report/utility/iterate_n_store.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,iCAAiC,CAAC;AAE1D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,eAAe,GAAG,CAAO,OAAe,EAAE,IAAc,EAAE,EAAE;IAC9D,
|
|
1
|
+
{"version":3,"file":"iterate_n_store.js","sourceRoot":"","sources":["../../../../src/endpoints/gen_report/utility/iterate_n_store.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,iCAAiC,CAAC;AAE1D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,eAAe,GAAG,CAAO,OAAe,EAAE,IAAc,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACnB,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,SAAS;QACb,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,kDAAkD;QAClD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1C,oDAAoD;QACpD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC7B,CAAC;QAED,kFAAkF;QAClF,MAAM,QAAQ,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAErF,IAAI,cAAc,GAAG,EAAE,CAAC,CAAC,8CAA8C;QACvE,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,cAAc,IAAI,IAAI,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/B,WAAW,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC;YACD,0DAA0D;YAC1D,WAAW,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAA,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
package/build/endpoints/index.js
CHANGED
|
@@ -7,8 +7,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import chalk from "chalk";
|
|
11
10
|
import fs from "fs";
|
|
11
|
+
import { printMsg, MSG } from "../utility/printMsg.js";
|
|
12
12
|
// Next.JS
|
|
13
13
|
import client_subsequentRequests from "./next_js/client_subsequentRequests.js";
|
|
14
14
|
import client_jsFilesHref from "./next_js/client_jsFilesHref.js";
|
|
@@ -37,46 +37,46 @@ const outputFormats = ["json"];
|
|
|
37
37
|
* @returns Promise that resolves when endpoint extraction is complete
|
|
38
38
|
*/
|
|
39
39
|
const endpoints = (url, directory, output, outputFormat, tech, list, mappedJsonFile) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
-
|
|
40
|
+
printMsg(MSG.Header, "[i] Loading endpoints module");
|
|
41
41
|
// list available technologies
|
|
42
42
|
if (list) {
|
|
43
|
-
|
|
43
|
+
printMsg(MSG.Header, "[i] Listing available technologies");
|
|
44
44
|
for (const tech of techs) {
|
|
45
|
-
|
|
45
|
+
printMsg(MSG.Run, `- ${tech}`);
|
|
46
46
|
}
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
// iterate over the output format, and match it with the available output formats
|
|
50
50
|
for (const format of outputFormat) {
|
|
51
51
|
if (!outputFormats.includes(format)) {
|
|
52
|
-
|
|
52
|
+
printMsg(MSG.Err, "[!] Invalid output format");
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
// check if the technology is present
|
|
57
57
|
if (!tech) {
|
|
58
|
-
|
|
58
|
+
printMsg(MSG.Err, "[!] Please provide a technology");
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
// check if the output file is present
|
|
62
62
|
if (!output) {
|
|
63
|
-
|
|
63
|
+
printMsg(MSG.Err, "[!] Please provide an output file");
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
66
66
|
// check if the url is present
|
|
67
67
|
if (!url) {
|
|
68
|
-
|
|
68
|
+
printMsg(MSG.Err, "[!] Please provide a URL");
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
|
-
|
|
71
|
+
printMsg(MSG.Header, "[i] Extracting endpoints");
|
|
72
72
|
if (tech === "next") {
|
|
73
|
-
|
|
73
|
+
printMsg(MSG.Header, "[i] Checking for client-side paths for Next.JS");
|
|
74
74
|
// var to store all the paths found
|
|
75
|
-
|
|
75
|
+
const final_client_side = [];
|
|
76
76
|
if (directory) {
|
|
77
77
|
const subsequentRequestsDir = directory + "/___subsequent_requests";
|
|
78
78
|
if (!fs.existsSync(subsequentRequestsDir)) {
|
|
79
|
-
|
|
79
|
+
printMsg(MSG.Warn, "[!] Directory containing subsequent requests does not exist — skipping subsequent requests extraction");
|
|
80
80
|
}
|
|
81
81
|
else {
|
|
82
82
|
const client_subsequentRequestsResult = yield client_subsequentRequests(subsequentRequestsDir, url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/endpoints/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/endpoints/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import fs from "fs";
|
|
|
12
12
|
import path from "path";
|
|
13
13
|
import parser from "@babel/parser";
|
|
14
14
|
import _traverse from "@babel/traverse";
|
|
15
|
-
import
|
|
15
|
+
import { printMsg, MSG } from "../../utility/printMsg.js";
|
|
16
16
|
const traverse = ((_a = _traverse.default) !== null && _a !== void 0 ? _a : _traverse);
|
|
17
17
|
/**
|
|
18
18
|
* Searches for href attributes in JavaScript files to discover client-side paths.
|
|
@@ -25,8 +25,8 @@ const traverse = ((_a = _traverse.default) !== null && _a !== void 0 ? _a : _tra
|
|
|
25
25
|
* @returns Promise that resolves to an array of discovered paths/URLs
|
|
26
26
|
*/
|
|
27
27
|
const client_jsFilesHref = (directory) => __awaiter(void 0, void 0, void 0, function* () {
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
printMsg(MSG.Header, "[i] Searching for `href` in the JS chunks");
|
|
29
|
+
const discoveredPaths = [];
|
|
30
30
|
// index all the files in the directory
|
|
31
31
|
let files;
|
|
32
32
|
files = fs.readdirSync(directory, { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client_jsFilesHref.js","sourceRoot":"","sources":["../../../src/endpoints/next_js/client_jsFilesHref.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,
|
|
1
|
+
{"version":3,"file":"client_jsFilesHref.js","sourceRoot":"","sources":["../../../src/endpoints/next_js/client_jsFilesHref.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
var _a;
|
|
11
|
-
import chalk from "chalk";
|
|
12
11
|
import parser from "@babel/parser";
|
|
13
12
|
import _traverse from "@babel/traverse";
|
|
14
13
|
const traverse = ((_a = _traverse.default) !== null && _a !== void 0 ? _a : _traverse);
|
|
15
14
|
import fs from "fs";
|
|
16
15
|
import path from "path";
|
|
16
|
+
import { printMsg, MSG } from "../../utility/printMsg.js";
|
|
17
17
|
/**
|
|
18
18
|
* Extracts client-side paths from JSON.parse() calls in JavaScript files.
|
|
19
19
|
*
|
|
@@ -25,8 +25,8 @@ import path from "path";
|
|
|
25
25
|
* @returns Promise that resolves to an array of discovered paths from JSON.parse() calls
|
|
26
26
|
*/
|
|
27
27
|
const client_jsonParse = (directory) => __awaiter(void 0, void 0, void 0, function* () {
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
const foundUrls = [];
|
|
29
|
+
printMsg(MSG.Header, "[i] Searching for client-side paths in JSON.parse()");
|
|
30
30
|
// filter out the directories
|
|
31
31
|
let files = fs.readdirSync(directory, {
|
|
32
32
|
recursive: true,
|
|
@@ -81,7 +81,7 @@ const client_jsonParse = (directory) => __awaiter(void 0, void 0, void 0, functi
|
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
83
|
catch (err) {
|
|
84
|
-
|
|
84
|
+
printMsg(MSG.Err, `[!] Error when parsing JSON: ${err}`);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
return foundUrls;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client_jsonParse.js","sourceRoot":"","sources":["../../../src/endpoints/next_js/client_jsonParse.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"client_jsonParse.js","sourceRoot":"","sources":["../../../src/endpoints/next_js/client_jsonParse.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
var _a;
|
|
11
|
-
import chalk from "chalk";
|
|
12
11
|
import fs from "fs";
|
|
13
12
|
import parser from "@babel/parser";
|
|
14
13
|
import _traverse from "@babel/traverse";
|
|
15
14
|
const traverse = ((_a = _traverse.default) !== null && _a !== void 0 ? _a : _traverse);
|
|
15
|
+
import { printMsg, MSG } from "../../utility/printMsg.js";
|
|
16
16
|
/**
|
|
17
17
|
* Checks for client-side paths in a mapped JSON file.
|
|
18
18
|
*
|
|
@@ -20,11 +20,11 @@ const traverse = ((_a = _traverse.default) !== null && _a !== void 0 ? _a : _tra
|
|
|
20
20
|
* @returns {Promise<string[]>} - A promise that resolves to an array of client-side paths
|
|
21
21
|
*/
|
|
22
22
|
const client_mappedJsonFile = (filePath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
-
|
|
23
|
+
printMsg(MSG.Header, "[i] Checking for client-side paths from mapped JSON file");
|
|
24
24
|
// open the file and load the chunks
|
|
25
25
|
const chunks = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
const chunksCopy = chunks;
|
|
27
|
+
const foundPaths = [];
|
|
28
28
|
// iterate over the chunks
|
|
29
29
|
for (const [key, value] of Object.entries(chunks)) {
|
|
30
30
|
// see if the chunk code string contains window.__NEXT_P string
|
|
@@ -38,7 +38,7 @@ const client_mappedJsonFile = (filePath) => __awaiter(void 0, void 0, void 0, fu
|
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
catch (err) {
|
|
41
|
-
|
|
41
|
+
printMsg(MSG.Err, `[!] Failed to parse chunk ${key}: ${err}`);
|
|
42
42
|
continue;
|
|
43
43
|
}
|
|
44
44
|
traverse(ast, {
|
|
@@ -77,7 +77,7 @@ const client_mappedJsonFile = (filePath) => __awaiter(void 0, void 0, void 0, fu
|
|
|
77
77
|
if (firstArg.elements.length > 0) {
|
|
78
78
|
const element = firstArg.elements[0];
|
|
79
79
|
if (element.type === "StringLiteral") {
|
|
80
|
-
|
|
80
|
+
printMsg(MSG.Run, `[+] Found client-side path: ${element.value}`);
|
|
81
81
|
if (chunksCopy[key].description === "none") {
|
|
82
82
|
chunksCopy[key].description =
|
|
83
83
|
"Client-side path definition: " + element.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client_mappedJsonFile.js","sourceRoot":"","sources":["../../../src/endpoints/next_js/client_mappedJsonFile.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"client_mappedJsonFile.js","sourceRoot":"","sources":["../../../src/endpoints/next_js/client_mappedJsonFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,14 +8,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
var _a;
|
|
11
|
-
import chalk from "chalk";
|
|
12
11
|
import fs from "fs";
|
|
13
12
|
import path from "path";
|
|
14
13
|
import parser from "@babel/parser";
|
|
15
14
|
import _traverse from "@babel/traverse";
|
|
16
15
|
import makeRequest from "../../utility/makeReq.js";
|
|
16
|
+
import { printMsg, MSG } from "../../utility/printMsg.js";
|
|
17
17
|
const traverse = ((_a = _traverse.default) !== null && _a !== void 0 ? _a : _traverse);
|
|
18
|
-
|
|
18
|
+
const toReturn = [];
|
|
19
19
|
/**
|
|
20
20
|
* Checks for client-side paths in a file and appends discovered paths to the module-scoped `toReturn` array.
|
|
21
21
|
*
|
|
@@ -58,7 +58,7 @@ const checkHref = (files, url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
58
58
|
continue;
|
|
59
59
|
}
|
|
60
60
|
// traverse the ast, and find the objects with href, and external
|
|
61
|
-
|
|
61
|
+
const finds = [];
|
|
62
62
|
traverse(ast, {
|
|
63
63
|
ObjectExpression(path) {
|
|
64
64
|
const properties = path.node.properties;
|
|
@@ -189,11 +189,11 @@ const checkSlug = (files, url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
189
189
|
});
|
|
190
190
|
const client_subsequentRequests = (subsequentRequestsDir, url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
191
191
|
// let report = `## Subsequent Requests\n`;
|
|
192
|
-
|
|
192
|
+
printMsg(MSG.Header, "[i] Using subsequent requests file method");
|
|
193
193
|
// get all the files in the directory
|
|
194
194
|
const walkSync = (dir, files = []) => {
|
|
195
195
|
fs.readdirSync(dir).forEach((file) => {
|
|
196
|
-
|
|
196
|
+
const dirFile = path.join(dir, file);
|
|
197
197
|
if (fs.statSync(dirFile).isDirectory()) {
|
|
198
198
|
walkSync(dirFile, files);
|
|
199
199
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client_subsequentRequests.js","sourceRoot":"","sources":["../../../src/endpoints/next_js/client_subsequentRequests.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"client_subsequentRequests.js","sourceRoot":"","sources":["../../../src/endpoints/next_js/client_subsequentRequests.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import rawRequest from "../utility/rawRequest.js";
|
|
11
|
+
/** Looks like a per-request timestamp/nonce field an app might echo (e.g. "receivedAt": 172...). */
|
|
12
|
+
const TIMESTAMP_FIELD = /"(?:receivedAt|timestamp|generatedAt|servedAt)"\s*:\s*("[^"]+"|[\d.]+)/i;
|
|
13
|
+
/**
|
|
14
|
+
* HttpTransferCache is a *within-one-SSR-render* cache — it de-duplicates identical HttpClient
|
|
15
|
+
* calls made during server-side rendering by embedding the first call's response in the page's
|
|
16
|
+
* TransferState payload for the client to reuse during hydration, rather than a cross-request
|
|
17
|
+
* reverse-proxy-style cache. The collision therefore isn't observable across two independent
|
|
18
|
+
* requests to a plain API route — it only fires within a single page render that itself issues
|
|
19
|
+
* two colliding-but-differently-encoded HttpClient calls (as this app's component does: a
|
|
20
|
+
* `?tag=a&tag=b` call followed by a chained `?tag=a,b` call). So the exploit is a single request
|
|
21
|
+
* for the SSR-rendered page, extracting both calls' results from the rendered markup.
|
|
22
|
+
*/
|
|
23
|
+
export const extractLabeledResult = (html, label) => {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
const startIndex = html.indexOf(label);
|
|
26
|
+
if (startIndex === -1)
|
|
27
|
+
return null;
|
|
28
|
+
const closingTagIndex = html.indexOf("</p>", startIndex);
|
|
29
|
+
const segment = closingTagIndex === -1 ? html.slice(startIndex) : html.slice(startIndex, closingTagIndex);
|
|
30
|
+
return (_b = (_a = TIMESTAMP_FIELD.exec(segment)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : null;
|
|
31
|
+
};
|
|
32
|
+
const cve202668945 = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
+
const response = yield rawRequest(ctx.baseUrl, { timeout: ctx.timeout, signal: ctx.signal });
|
|
34
|
+
if (!response) {
|
|
35
|
+
return { vulnerable: false, evidence: "Request failed (network error).", discoveredUrls: [] };
|
|
36
|
+
}
|
|
37
|
+
const resultA = extractLabeledResult(response.body, "CALL_A_RESULT:");
|
|
38
|
+
const resultB = extractLabeledResult(response.body, "CALL_B_RESULT:");
|
|
39
|
+
if (!resultA || !resultB) {
|
|
40
|
+
return {
|
|
41
|
+
vulnerable: false,
|
|
42
|
+
evidence: "No timestamp-shaped marker present in the rendered page's call results — cannot confirm HttpTransferCache collision without guessing.",
|
|
43
|
+
discoveredUrls: [],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (resultA === resultB) {
|
|
47
|
+
return {
|
|
48
|
+
vulnerable: true,
|
|
49
|
+
evidence: `HttpTransferCache key collision confirmed: the ?tag=a&tag=b call and the chained ?tag=a,b call both resolved to the same cached response (${resultA}).`,
|
|
50
|
+
discoveredUrls: [],
|
|
51
|
+
rawFindingExtras: { sharedTimestamp: resultA },
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
vulnerable: false,
|
|
56
|
+
evidence: "The two calls resolved to different responses — no collision.",
|
|
57
|
+
discoveredUrls: [],
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
export default cve202668945;
|
|
61
|
+
//# sourceMappingURL=cve-2026-68945.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cve-2026-68945.js","sourceRoot":"","sources":["../../../src/exploit/angular/cve-2026-68945.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAGlD,oGAAoG;AACpG,MAAM,eAAe,GAAG,yEAAyE,CAAC;AAElG;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,KAAa,EAAiB,EAAE;;IAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC1G,OAAO,MAAA,MAAA,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,0CAAG,CAAC,CAAC,mCAAI,IAAI,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,YAAY,GAAmB,CAAO,GAAmB,EAA2B,EAAE;IACxF,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,iCAAiC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IAClG,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAEtE,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO;YACH,UAAU,EAAE,KAAK;YACjB,QAAQ,EACJ,uIAAuI;YAC3I,cAAc,EAAE,EAAE;SACrB,CAAC;IACN,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO;YACH,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,6IAA6I,OAAO,IAAI;YAClK,cAAc,EAAE,EAAE;YAClB,gBAAgB,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;SACjD,CAAC;IACN,CAAC;IAED,OAAO;QACH,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,+DAA+D;QACzE,cAAc,EAAE,EAAE;KACrB,CAAC;AACN,CAAC,CAAA,CAAC;AAEF,eAAe,YAAY,CAAC"}
|