@shriyanss/js-recon 1.0.0 → 1.1.0-beta.2

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.
Files changed (143) hide show
  1. package/.github/workflows/build-and-prettify.yaml +65 -0
  2. package/.github/workflows/npm-publish.yml +35 -0
  3. package/.prettierignore +2 -0
  4. package/.prettierrc +4 -0
  5. package/CHANGELOG.md +50 -0
  6. package/README.md +35 -139
  7. package/build/api_gateway/checkFeasibility.js +32 -0
  8. package/build/api_gateway/checkFeasibility.js.map +1 -0
  9. package/build/api_gateway/checkFireWallBlocking.js +24 -0
  10. package/build/api_gateway/checkFireWallBlocking.js.map +1 -0
  11. package/build/api_gateway/genReq.js +199 -0
  12. package/build/api_gateway/genReq.js.map +1 -0
  13. package/build/api_gateway/index.js +275 -0
  14. package/build/api_gateway/index.js.map +1 -0
  15. package/build/endpoints/gen_report/gen_json.js +22 -0
  16. package/build/endpoints/gen_report/gen_json.js.map +1 -0
  17. package/build/endpoints/gen_report/gen_markdown.js +66 -0
  18. package/build/endpoints/gen_report/gen_markdown.js.map +1 -0
  19. package/build/endpoints/gen_report/utility/iterate_n_store.js +46 -0
  20. package/build/endpoints/gen_report/utility/iterate_n_store.js.map +1 -0
  21. package/build/endpoints/index.js +89 -0
  22. package/build/endpoints/index.js.map +1 -0
  23. package/build/endpoints/next_js/client_jsFilesHref.js +91 -0
  24. package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -0
  25. package/build/endpoints/next_js/client_jsonParse.js +78 -0
  26. package/build/endpoints/next_js/client_jsonParse.js.map +1 -0
  27. package/build/endpoints/next_js/client_subsequentRequests.js +199 -0
  28. package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -0
  29. package/build/endpoints/next_js/getWebpacks.js +45 -0
  30. package/build/endpoints/next_js/getWebpacks.js.map +1 -0
  31. package/build/globalConfig.js +11 -0
  32. package/build/globalConfig.js.map +1 -0
  33. package/build/index.js +166 -0
  34. package/build/index.js.map +1 -0
  35. package/build/lazyLoad/downloadFilesUtil.js +128 -0
  36. package/build/lazyLoad/downloadFilesUtil.js.map +1 -0
  37. package/build/lazyLoad/downloadLoadedJsUtil.js +51 -0
  38. package/build/lazyLoad/downloadLoadedJsUtil.js.map +1 -0
  39. package/build/lazyLoad/globals.js +22 -0
  40. package/build/lazyLoad/globals.js.map +1 -0
  41. package/build/lazyLoad/index.js +170 -0
  42. package/build/lazyLoad/index.js.map +1 -0
  43. package/build/lazyLoad/next_js/next_GetJSScript.js +94 -0
  44. package/build/lazyLoad/next_js/next_GetJSScript.js.map +1 -0
  45. package/build/lazyLoad/next_js/next_GetLazyResources.js +202 -0
  46. package/build/lazyLoad/next_js/next_GetLazyResources.js.map +1 -0
  47. package/build/lazyLoad/next_js/next_SubsequentRequests.js +120 -0
  48. package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -0
  49. package/build/lazyLoad/nuxt_js/nuxt_astParse.js +188 -0
  50. package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -0
  51. package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js +75 -0
  52. package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js.map +1 -0
  53. package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js +94 -0
  54. package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js.map +1 -0
  55. package/build/lazyLoad/svelte/svelte_getFromPageSource.js +68 -0
  56. package/build/lazyLoad/svelte/svelte_getFromPageSource.js.map +1 -0
  57. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js +95 -0
  58. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js.map +1 -0
  59. package/build/map/index.js +58 -0
  60. package/build/map/index.js.map +1 -0
  61. package/build/map/next_js/getFetchInstances.js +108 -0
  62. package/build/map/next_js/getFetchInstances.js.map +1 -0
  63. package/build/map/next_js/getWebpackConnections.js +227 -0
  64. package/build/map/next_js/getWebpackConnections.js.map +1 -0
  65. package/build/map/next_js/interactive.js +32 -0
  66. package/build/map/next_js/interactive.js.map +1 -0
  67. package/build/map/next_js/interactive_helpers/commandHandler.js +190 -0
  68. package/build/map/next_js/interactive_helpers/commandHandler.js.map +1 -0
  69. package/build/map/next_js/interactive_helpers/commandHelpers.js +91 -0
  70. package/build/map/next_js/interactive_helpers/commandHelpers.js.map +1 -0
  71. package/build/map/next_js/interactive_helpers/helpMenu.js +11 -0
  72. package/build/map/next_js/interactive_helpers/helpMenu.js.map +1 -0
  73. package/build/map/next_js/interactive_helpers/keybindings.js +80 -0
  74. package/build/map/next_js/interactive_helpers/keybindings.js.map +1 -0
  75. package/build/map/next_js/interactive_helpers/printer.js +17 -0
  76. package/build/map/next_js/interactive_helpers/printer.js.map +1 -0
  77. package/build/map/next_js/interactive_helpers/ui.js +81 -0
  78. package/build/map/next_js/interactive_helpers/ui.js.map +1 -0
  79. package/build/map/next_js/resolveFetch.js +201 -0
  80. package/build/map/next_js/resolveFetch.js.map +1 -0
  81. package/build/run/index.js +62 -0
  82. package/build/run/index.js.map +1 -0
  83. package/build/strings/index.js +238 -0
  84. package/build/strings/index.js.map +1 -0
  85. package/build/strings/openapi.js +55 -0
  86. package/build/strings/openapi.js.map +1 -0
  87. package/build/strings/permutate.js +55 -0
  88. package/build/strings/permutate.js.map +1 -0
  89. package/build/strings/secrets.js +89 -0
  90. package/build/strings/secrets.js.map +1 -0
  91. package/build/techDetect/index.js +229 -0
  92. package/build/techDetect/index.js.map +1 -0
  93. package/build/utility/ai.js +69 -0
  94. package/build/utility/ai.js.map +1 -0
  95. package/build/utility/globals.js +84 -0
  96. package/build/utility/globals.js.map +1 -0
  97. package/build/utility/interfaces.js +2 -0
  98. package/build/utility/interfaces.js.map +1 -0
  99. package/build/utility/makeReq.js +265 -0
  100. package/build/utility/makeReq.js.map +1 -0
  101. package/build/utility/resolvePath.js +44 -0
  102. package/build/utility/resolvePath.js.map +1 -0
  103. package/{utility → build/utility}/runSandboxed.js +10 -13
  104. package/build/utility/runSandboxed.js.map +1 -0
  105. package/{utility → build/utility}/urlUtils.js +9 -11
  106. package/build/utility/urlUtils.js.map +1 -0
  107. package/docs/CNAME +1 -0
  108. package/docs/README.md +20 -0
  109. package/docs/api-gateway.md +68 -0
  110. package/docs/endpoints.md +49 -0
  111. package/docs/example-scenario.md +258 -0
  112. package/docs/interactive-mode.md +76 -0
  113. package/docs/lazyload.md +56 -0
  114. package/docs/map.md +53 -0
  115. package/docs/run.md +54 -0
  116. package/docs/strings.md +75 -0
  117. package/package.json +50 -38
  118. package/api_gateway/checkFeasibility.js +0 -25
  119. package/api_gateway/checkFireWallBlocking.js +0 -17
  120. package/api_gateway/genReq.js +0 -214
  121. package/api_gateway/index.js +0 -325
  122. package/endpoints/index.js +0 -7
  123. package/globalConfig.js +0 -12
  124. package/index.js +0 -69
  125. package/lazyLoad/downloadFilesUtil.js +0 -122
  126. package/lazyLoad/downloadLoadedJsUtil.js +0 -54
  127. package/lazyLoad/globals.js +0 -15
  128. package/lazyLoad/index.js +0 -167
  129. package/lazyLoad/next_js/next_GetJSScript.js +0 -99
  130. package/lazyLoad/next_js/next_GetLazyResources.js +0 -201
  131. package/lazyLoad/next_js/next_SubsequentRequests.js +0 -138
  132. package/lazyLoad/nuxt_js/nuxt_astParse.js +0 -194
  133. package/lazyLoad/nuxt_js/nuxt_getFromPageSource.js +0 -77
  134. package/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js +0 -99
  135. package/research/firewall_bypass.md +0 -38
  136. package/research/next_js.md +0 -116
  137. package/research/nuxt_js.md +0 -125
  138. package/research/vue_js.md +0 -9
  139. package/strings/index.js +0 -145
  140. package/techDetect/index.js +0 -156
  141. package/utility/globals.js +0 -6
  142. package/utility/makeReq.js +0 -179
  143. package/utility/resolvePath.js +0 -43
@@ -0,0 +1,80 @@
1
+ import chalk from "chalk";
2
+ function setupKeybindings(screen, inputBox, outputBox, state) {
3
+ // Quit on ctl-c
4
+ screen.key(["C-c", "q"], () => {
5
+ return process.exit(0);
6
+ });
7
+ // on pressing esc on input, focus on output
8
+ inputBox.key(["escape"], () => {
9
+ outputBox.focus();
10
+ outputBox.style.border.fg = "blue";
11
+ inputBox.style.border.fg = "gray";
12
+ screen.render();
13
+ });
14
+ // Clear input box on ctl-c
15
+ inputBox.key(["C-c"], () => {
16
+ outputBox.log(chalk.yellow("^C (Use Esc then C-c to exit)"));
17
+ inputBox.focus();
18
+ state.lastCommandStatus = false;
19
+ screen.render();
20
+ });
21
+ // on pressing 'o' on screen, focus on output box
22
+ screen.key(["o"], () => {
23
+ outputBox.focus();
24
+ outputBox.style.border.fg = "blue";
25
+ inputBox.style.border.fg = "gray";
26
+ screen.render();
27
+ });
28
+ // on pressing 'i' on screen, focus on input box
29
+ screen.key(["i"], () => {
30
+ inputBox.focus();
31
+ inputBox.style.border.fg = "blue";
32
+ outputBox.style.border.fg = "gray";
33
+ screen.render();
34
+ });
35
+ // on pressing arrow keys on output box, scroll the output
36
+ outputBox.key(["up", "down"], (ch, key) => {
37
+ outputBox.scroll(key.name === "up" ? -1 : 1);
38
+ screen.render();
39
+ });
40
+ // on pressing arrow keys on input box, navigate through command history
41
+ inputBox.key(["up", "down"], (ch, key) => {
42
+ if (key.name === "up") {
43
+ if (state.commandHistoryIndex > 0) {
44
+ state.commandHistoryIndex--;
45
+ inputBox.setValue(state.commandHistory[state.commandHistoryIndex]);
46
+ screen.render();
47
+ }
48
+ else {
49
+ // blink red
50
+ inputBox.style.border.fg = "red";
51
+ screen.render();
52
+ setTimeout(() => {
53
+ inputBox.style.border.fg = "blue";
54
+ screen.render();
55
+ }, 50);
56
+ }
57
+ }
58
+ else {
59
+ // down
60
+ if (state.commandHistoryIndex < state.commandHistory.length - 1) {
61
+ state.commandHistoryIndex++;
62
+ inputBox.setValue(state.commandHistory[state.commandHistoryIndex]);
63
+ screen.render();
64
+ }
65
+ else {
66
+ state.commandHistoryIndex = state.commandHistory.length;
67
+ inputBox.setValue("");
68
+ // blink red
69
+ inputBox.style.border.fg = "red";
70
+ screen.render();
71
+ setTimeout(() => {
72
+ inputBox.style.border.fg = "blue";
73
+ screen.render();
74
+ }, 50);
75
+ }
76
+ }
77
+ });
78
+ }
79
+ export { setupKeybindings };
80
+ //# sourceMappingURL=keybindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keybindings.js","sourceRoot":"","sources":["../../../../src/map/next_js/interactive_helpers/keybindings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { highlight } from "cli-highlight";
2
+ import fs from "fs";
3
+ // Function to print function code with syntax highlighting
4
+ const printFunction = (outputBox, funcCode, funcDesc, funcWriteFile) => {
5
+ const rawText = `/**\n* ${funcDesc}\n*/\n${funcCode}`;
6
+ const highlighted = highlight(rawText, {
7
+ language: "javascript",
8
+ ignoreIllegals: true,
9
+ theme: undefined, // This makes cli-highlight use ANSI colors
10
+ });
11
+ outputBox.setContent(highlighted); // << use setContent instead of setText
12
+ if (funcWriteFile) {
13
+ fs.writeFileSync(funcWriteFile, rawText); // Save raw (non-colored) version to file
14
+ }
15
+ };
16
+ export { printFunction };
17
+ //# sourceMappingURL=printer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"printer.js","sourceRoot":"","sources":["../../../../src/map/next_js/interactive_helpers/printer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,2DAA2D;AAC3D,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE;IACnE,MAAM,OAAO,GAAG,UAAU,QAAQ,SAAS,QAAQ,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,EAAE;QACnC,QAAQ,EAAE,YAAY;QACtB,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,SAAS,EAAE,2CAA2C;KAChE,CAAC,CAAC;IAEH,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,uCAAuC;IAE1E,IAAI,aAAa,EAAE,CAAC;QAChB,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,yCAAyC;IACvF,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,81 @@
1
+ import blessed from "blessed";
2
+ function createUI() {
3
+ // Create a screen object.
4
+ const screen = blessed.screen({
5
+ smartCSR: true,
6
+ title: "JS Recon Interactive Mode",
7
+ fullUnicode: true,
8
+ });
9
+ // Title Box
10
+ const titleBox = blessed.box({
11
+ parent: screen,
12
+ top: 0,
13
+ left: "center",
14
+ width: "98%",
15
+ height: 3,
16
+ content: "JS Recon Interactive Mode",
17
+ border: {
18
+ type: "line",
19
+ },
20
+ style: {
21
+ fg: "white",
22
+ border: {
23
+ fg: "gray",
24
+ },
25
+ },
26
+ });
27
+ // Output Box
28
+ const outputBox = blessed.log({
29
+ parent: screen,
30
+ top: 3,
31
+ left: "center",
32
+ width: "98%",
33
+ bottom: 3,
34
+ border: {
35
+ type: "line",
36
+ },
37
+ style: {
38
+ fg: "white",
39
+ border: {
40
+ fg: "gray",
41
+ },
42
+ },
43
+ scrollable: true,
44
+ alwaysScroll: true,
45
+ scrollbar: {
46
+ ch: " ",
47
+ inverse: true,
48
+ },
49
+ keys: true,
50
+ vi: true,
51
+ mouse: true,
52
+ scrollSpeed: 0.5,
53
+ });
54
+ // Input Box
55
+ const inputBox = blessed.textbox({
56
+ parent: screen,
57
+ bottom: 0,
58
+ left: "center",
59
+ width: "98%",
60
+ height: 3,
61
+ border: {
62
+ type: "line",
63
+ },
64
+ style: {
65
+ fg: "white",
66
+ bg: "black",
67
+ border: {
68
+ fg: "gray",
69
+ },
70
+ focus: {
71
+ border: {
72
+ fg: "blue",
73
+ },
74
+ },
75
+ },
76
+ inputOnFocus: true,
77
+ });
78
+ return { screen, titleBox, outputBox, inputBox };
79
+ }
80
+ export { createUI };
81
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../src/map/next_js/interactive_helpers/ui.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,SAAS,QAAQ;IACb,0BAA0B;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC1B,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,YAAY;IACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,2BAA2B;QACpC,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM;SACf;QACD,KAAK,EAAE;YACH,EAAE,EAAE,OAAO;YACX,MAAM,EAAE;gBACJ,EAAE,EAAE,MAAM;aACb;SACJ;KACJ,CAAC,CAAC;IAEH,aAAa;IACb,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;QAC1B,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM;SACf;QACD,KAAK,EAAE;YACH,EAAE,EAAE,OAAO;YACX,MAAM,EAAE;gBACJ,EAAE,EAAE,MAAM;aACb;SACJ;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE;YACP,EAAE,EAAE,GAAG;YACP,OAAO,EAAE,IAAI;SAChB;QACD,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,GAAG;KACnB,CAAC,CAAC;IAEH,YAAY;IACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7B,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM;SACf;QACD,KAAK,EAAE;YACH,EAAE,EAAE,OAAO;YACX,EAAE,EAAE,OAAO;YACX,MAAM,EAAE;gBACJ,EAAE,EAAE,MAAM;aACb;YACD,KAAK,EAAE;gBACH,MAAM,EAAE;oBACJ,EAAE,EAAE,MAAM;iBACb;aACJ;SACJ;QACD,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,201 @@
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 chalk from "chalk";
11
+ import parser from "@babel/parser";
12
+ import _traverse from "@babel/traverse";
13
+ import fs from "fs";
14
+ import path from "path";
15
+ const traverse = _traverse.default;
16
+ const resolveNodeValue = (node, scope) => {
17
+ if (!node)
18
+ return null;
19
+ switch (node.type) {
20
+ case "StringLiteral":
21
+ case "NumericLiteral":
22
+ case "BooleanLiteral":
23
+ return node.value;
24
+ case "NullLiteral":
25
+ return null;
26
+ case "TemplateLiteral":
27
+ let result = "";
28
+ for (let i = 0; i < node.quasis.length; i++) {
29
+ result += node.quasis[i].value.raw;
30
+ if (i < node.expressions.length) {
31
+ result += resolveNodeValue(node.expressions[i], scope);
32
+ }
33
+ }
34
+ return result;
35
+ case "Identifier": {
36
+ const binding = scope.getBinding(node.name);
37
+ if (binding && binding.path.node.init) {
38
+ return resolveNodeValue(binding.path.node.init, scope);
39
+ }
40
+ return `[unresolved: ${node.name}]`;
41
+ }
42
+ case "ObjectExpression": {
43
+ const obj = {};
44
+ for (const prop of node.properties) {
45
+ if (prop.type === "ObjectProperty") {
46
+ const key = prop.computed
47
+ ? resolveNodeValue(prop.key, scope)
48
+ : prop.key.name || prop.key.value;
49
+ const value = resolveNodeValue(prop.value, scope);
50
+ obj[key] = value;
51
+ }
52
+ else if (prop.type === "SpreadElement") {
53
+ const spreadObj = resolveNodeValue(prop.argument, scope);
54
+ if (typeof spreadObj === "object" && spreadObj !== null) {
55
+ Object.assign(obj, spreadObj);
56
+ }
57
+ }
58
+ }
59
+ return obj;
60
+ }
61
+ case "MemberExpression": {
62
+ const object = resolveNodeValue(node.object, scope);
63
+ if (typeof object === "object" && object !== null) {
64
+ const propertyName = node.computed
65
+ ? resolveNodeValue(node.property, scope)
66
+ : node.property.name;
67
+ return object[propertyName];
68
+ }
69
+ return `[unresolved member expression]`;
70
+ }
71
+ case "CallExpression": {
72
+ if (node.callee.type === "MemberExpression" &&
73
+ node.callee.property.name === "toString") {
74
+ return resolveNodeValue(node.callee.object, scope);
75
+ }
76
+ return `[unresolved call to ${node.callee.name || "function"}]`;
77
+ }
78
+ case "NewExpression": {
79
+ if (node.callee.type === "Identifier" &&
80
+ node.callee.name === "URL" &&
81
+ node.arguments.length > 0) {
82
+ return resolveNodeValue(node.arguments[0], scope);
83
+ }
84
+ return `[unresolved new expression]`;
85
+ }
86
+ case "LogicalExpression": {
87
+ const left = resolveNodeValue(node.left, scope);
88
+ if (left && !String(left).startsWith("[")) {
89
+ return left;
90
+ }
91
+ return resolveNodeValue(node.right, scope);
92
+ }
93
+ case "ConditionalExpression": {
94
+ const consequent = resolveNodeValue(node.consequent, scope);
95
+ if (consequent && !String(consequent).startsWith("[")) {
96
+ return consequent;
97
+ }
98
+ return resolveNodeValue(node.alternate, scope);
99
+ }
100
+ case "BinaryExpression": {
101
+ const left = resolveNodeValue(node.left, scope);
102
+ const right = resolveNodeValue(node.right, scope);
103
+ if (left !== null &&
104
+ right !== null &&
105
+ !String(left).startsWith("[") &&
106
+ !String(right).startsWith("[")) {
107
+ // eslint-disable-next-line default-case
108
+ switch (node.operator) {
109
+ case "+":
110
+ return left + right;
111
+ }
112
+ }
113
+ return `[unresolved binary expression: ${node.operator}]`;
114
+ }
115
+ default:
116
+ return `[unsupported node type: ${node.type}]`;
117
+ }
118
+ };
119
+ const resolveFetch = (chunks, directory, formats) => __awaiter(void 0, void 0, void 0, function* () {
120
+ console.log(chalk.cyan("[i] Resolving fetch instances"));
121
+ for (const chunk of Object.values(chunks)) {
122
+ if (!chunk.containsFetch || !chunk.file) {
123
+ continue;
124
+ }
125
+ const filePath = path.join(directory, chunk.file);
126
+ let fileContent;
127
+ try {
128
+ fileContent = fs.readFileSync(filePath, "utf-8");
129
+ }
130
+ catch (error) {
131
+ console.log(chalk.red(`[!] Could not read file: ${filePath}`));
132
+ continue;
133
+ }
134
+ let fileAst;
135
+ try {
136
+ fileAst = parser.parse(fileContent, {
137
+ sourceType: "module",
138
+ plugins: ["jsx", "typescript"],
139
+ errorRecovery: true,
140
+ });
141
+ }
142
+ catch (err) {
143
+ console.log(chalk.red(`[!] Failed to parse file: ${filePath}. Error: ${err.message}`));
144
+ continue;
145
+ }
146
+ const fetchAliases = new Set();
147
+ // Pass 1: Find fetch aliases on the full file AST
148
+ traverse(fileAst, {
149
+ VariableDeclarator(path) {
150
+ if (path.node.id.type === "Identifier" && path.node.init) {
151
+ if (path.node.init.type === "Identifier" &&
152
+ path.node.init.name === "fetch") {
153
+ const binding = path.scope.getBinding(path.node.id.name);
154
+ if (binding)
155
+ fetchAliases.add(binding);
156
+ }
157
+ }
158
+ },
159
+ });
160
+ // Pass 2: Find and resolve fetch calls on the full file AST
161
+ traverse(fileAst, {
162
+ CallExpression(path) {
163
+ let isFetchCall = false;
164
+ const calleeName = path.node.callee.name;
165
+ if (calleeName === "fetch") {
166
+ isFetchCall = true;
167
+ }
168
+ else {
169
+ const binding = path.scope.getBinding(calleeName);
170
+ if (binding && fetchAliases.has(binding)) {
171
+ isFetchCall = true;
172
+ }
173
+ }
174
+ if (isFetchCall) {
175
+ console.log(chalk.blue(`[+] Found fetch call in chunk ${chunk.id} (${chunk.file}) at L${path.node.loc.start.line}`));
176
+ const args = path.node.arguments;
177
+ if (args.length > 0) {
178
+ const url = resolveNodeValue(args[0], path.scope);
179
+ console.log(chalk.green(` URL: ${url}`));
180
+ if (args.length > 1) {
181
+ const options = resolveNodeValue(args[1], path.scope);
182
+ if (typeof options === "object" &&
183
+ options !== null) {
184
+ console.log(chalk.green(` Method: ${options.method || "GET"}`));
185
+ if (options.headers)
186
+ console.log(chalk.green(` Headers: ${JSON.stringify(options.headers)}`));
187
+ if (options.body)
188
+ console.log(chalk.green(` Body: ${JSON.stringify(options.body)}`));
189
+ }
190
+ else {
191
+ console.log(chalk.yellow(` Options: ${options}`));
192
+ }
193
+ }
194
+ }
195
+ }
196
+ },
197
+ });
198
+ }
199
+ });
200
+ export default resolveFetch;
201
+ //# sourceMappingURL=resolveFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveFetch.js","sourceRoot":"","sources":["../../../src/map/next_js/resolveFetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
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 endpoints from "../endpoints/index.js";
11
+ import strings from "../strings/index.js";
12
+ import map from "../map/index.js";
13
+ import * as globalsUtil from "../utility/globals.js";
14
+ import * as fs from "fs";
15
+ import lazyLoad from "../lazyLoad/index.js";
16
+ import chalk from "chalk";
17
+ export default (cmd) => __awaiter(void 0, void 0, void 0, function* () {
18
+ globalsUtil.setApiGatewayConfigFile(cmd.apiGatewayConfig);
19
+ globalsUtil.setUseApiGateway(cmd.apiGateway);
20
+ globalsUtil.setDisableCache(cmd.disableCache);
21
+ globalsUtil.setRespCacheFile(cmd.cacheFile);
22
+ globalsUtil.setYes(cmd.yes);
23
+ const targetHost = new URL(cmd.url).host;
24
+ console.log(chalk.bgGreenBright("[+] Starting analysis..."));
25
+ console.log(chalk.bgCyan("[1/6] Running lazyload to download JavaScript files..."));
26
+ yield lazyLoad(cmd.url, cmd.output, cmd.strictScope, cmd.scope.split(","), cmd.threads, false, "");
27
+ console.log(chalk.bgGreen("[+] Lazyload complete."));
28
+ // globals.setTech("next");
29
+ // if tech is undefined, i.e. it can't be detected, quit. Nothing to be done :(
30
+ if (globalsUtil.getTech() === "") {
31
+ console.log(chalk.bgRed("[!] Technology not detected. Quitting."));
32
+ return;
33
+ }
34
+ // run strings
35
+ console.log(chalk.bgCyan("[2/6] Running strings to extract endpoints..."));
36
+ yield strings(cmd.output, "strings.json", true, "extracted_urls", false, false, false);
37
+ console.log(chalk.bgGreen("[+] Strings complete."));
38
+ // run lazyload with subsequent requests
39
+ console.log(chalk.bgCyan("[3/6] Running lazyload with subsequent requests to download JavaScript files..."));
40
+ yield lazyLoad(cmd.url, cmd.output, cmd.strictScope, cmd.scope.split(","), cmd.threads, true, "extracted_urls.json");
41
+ console.log(chalk.bgGreen("[+] Lazyload with subsequent requests complete."));
42
+ // run strings again to extract endpoints from the files that are downloaded in the previous step
43
+ console.log(chalk.bgCyan("[4/6] Running strings again to extract endpoints..."));
44
+ yield strings(cmd.output, "strings.json", true, "extracted_urls", cmd.secrets, true, true);
45
+ console.log(chalk.bgGreen("[+] Strings complete."));
46
+ // now, run endpoints
47
+ console.log(chalk.bgCyan("[5/6] Running endpoints to extract endpoints..."));
48
+ // check if the subsequent requests directory exists
49
+ if (fs.existsSync(`output/${targetHost}/___subsequent_requests`)) {
50
+ yield endpoints(cmd.url, cmd.output, "strings", ["json"], globalsUtil.getTech(), false, `output/${targetHost}/___subsequent_requests`);
51
+ console.log(chalk.bgGreen("[+] Endpoints complete."));
52
+ }
53
+ else {
54
+ console.log(chalk.bgYellow("[!] Subsequent requests directory does not exist. Skipping endpoints."));
55
+ }
56
+ // now, run map
57
+ console.log(chalk.bgCyan("[6/6] Running map to find functions..."));
58
+ yield map(cmd.output, "mapped", ["json"], globalsUtil.getTech(), false, false);
59
+ console.log(chalk.bgGreen("[+] Map complete."));
60
+ console.log(chalk.bgGreenBright("[+] Analysis complete."));
61
+ });
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/run/index.ts"],"names":[],"mappings":"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"}