n8n-nodes-soar 0.1.21 → 0.1.23
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/dist/common/asset.js +47 -58
- package/dist/common/connectionType.js +3 -2
- package/dist/common/executor/abstract.executor.js +51 -0
- package/dist/common/executor/docker.executor.js +57 -31
- package/dist/common/executor/jsonrpc.executor.js +123 -0
- package/dist/common/executor/{k8s.executor.js → kubernetes.executor.js} +56 -33
- package/dist/common/interface.js +4 -0
- package/dist/common/memorizer/abstract.memorizer.js +49 -0
- package/dist/common/memorizer/asset.memorizer.js +16 -0
- package/dist/common/memorizer/general.memorizer.js +17 -0
- package/dist/common/memorizer/storage/redis.storage.js +71 -0
- package/dist/common/proxy/abstract.proxy.js +4 -0
- package/dist/common/proxy/executor.proxy.js +50 -0
- package/dist/common/proxy/memorizer.proxy.js +51 -0
- package/dist/common/proxy/runner.proxy.js +60 -0
- package/dist/common/runner/container.runner.js +93 -108
- package/dist/common/runner/decorator/assetRunner.js +26 -0
- package/dist/common/runner/decorator/index.js +20 -0
- package/dist/common/runner/decorator/onlySuccess.js +20 -0
- package/dist/common/runner/{priority.js → decorator/priority.js} +16 -8
- package/dist/common/runner/priority.runner.js +6 -7
- package/dist/common/runner/runner.js +10 -29
- package/dist/constants/image.js +11 -0
- package/dist/credentials/SoarRunner/SoarRunner.credentials.js +73 -0
- package/dist/credentials/SoarRunner/icon.svg +8 -0
- package/dist/credentials/VulboxApi/VulboxApi.credentials.js +157 -0
- package/dist/credentials/VulboxApi/vulbox.svg +18 -0
- package/dist/nodes/Collector/Collector.node.js +56 -47
- package/dist/nodes/EmptyCheck/EmptyCheck.node.js +69 -0
- package/dist/nodes/Executor/DockerExecutor/DockerExecutor.node.js +80 -3
- package/dist/nodes/Executor/JsonRpcExecutor/JsonRpcExecutor.node.js +69 -0
- package/dist/nodes/Executor/JsonRpcExecutor/icon.svg +8 -0
- package/dist/nodes/Executor/KubernetesExecutor/KubernetesExecutor.node.js +112 -4
- package/dist/nodes/Fofa/Fofa.node.js +23 -14
- package/dist/nodes/Memorizer/Redis/RedisMemorizer.node.js +127 -0
- package/dist/nodes/Memorizer/Redis/redis.svg +1 -0
- package/dist/nodes/Platform/Vulbox/Vulbox.node.js +166 -0
- package/dist/nodes/Platform/Vulbox/api.js +211 -0
- package/dist/nodes/Platform/Vulbox/methods.js +124 -0
- package/dist/nodes/Platform/Vulbox/properties.js +403 -0
- package/dist/nodes/Platform/Vulbox/vulbox.svg +18 -0
- package/dist/nodes/Runner/Cmd/Cmd.node.js +105 -0
- package/dist/nodes/Runner/Dns/Dns.node.js +38 -22
- package/dist/nodes/Runner/Httpx/Httpx.node.js +147 -18
- package/dist/nodes/Runner/IcpLookup/IcpLookup.node.js +166 -0
- package/dist/nodes/Runner/IcpLookup/icp.svg +3 -0
- package/dist/nodes/Runner/Katana/Katana.node.js +42 -29
- package/dist/nodes/Runner/Masscan/Masscan.node.js +51 -29
- package/dist/nodes/Runner/Naabu/Naabu.node.js +35 -17
- package/dist/nodes/Runner/Nuclei/Nuclei.node.js +32 -14
- package/dist/nodes/Runner/Priority/Priority.node.js +2 -1
- package/dist/nodes/Runner/Subfinder/Subfinder.node.js +38 -15
- package/dist/nodes/Runner/Unauthor/Unauthor.node.js +32 -14
- package/dist/utils/decorator.js +22 -0
- package/package.json +19 -5
- package/dist/common/executor/executor.js +0 -48
- package/dist/nodes/Asset/SplitAsset/SplitAsset.node.js +0 -110
- package/dist/nodes/Asset/SplitAsset/split.svg +0 -13
- package/dist/nodes/Cdncheck/Cdncheck.node.js +0 -229
- package/dist/nodes/Httpx/Httpx.node.js +0 -754
- package/dist/nodes/Katana/Katana.node.js +0 -456
- package/dist/nodes/Katana/Katana.node.json +0 -9
- package/dist/nodes/Nuclei/Nuclei.node.js +0 -1024
- package/dist/nodes/Nuclei/Nuclei.node.json +0 -9
- package/dist/nodes/Runner/Katana/a.json +0 -30
- package/dist/nodes/Runner/Nuclei/a.json +0 -48
- package/dist/nodes/Runner/PriorityAdd/PriorityAdd.node.js +0 -97
- package/dist/nodes/Runner/Router/SwitchRouter/SwitchRouter.node.js +0 -101
- package/dist/nodes/Tshark/Tshark.node.js +0 -104
- package/dist/nodes/Tshark/Tshark.node.json +0 -9
- package/dist/nodes/Tshark/tshark.svg +0 -64
- package/dist/nodes/Unauthor/Unauthor.node.js +0 -135
- package/dist/nodes/Unauthor/Unauthor.node.json +0 -9
- package/dist/nodes/Unauthor/unauthor.svg +0 -7
- package/dist/nodes/Uncover/Uncover.node.js +0 -280
- package/dist/nodes/Uncover/Uncover.node.json +0 -9
@@ -1,456 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
3
|
-
value: true
|
4
|
-
});
|
5
|
-
Object.defineProperty(exports, "Katana", {
|
6
|
-
enumerable: true,
|
7
|
-
get: function() {
|
8
|
-
return Katana;
|
9
|
-
}
|
10
|
-
});
|
11
|
-
const _executor = require("../../utils/executor");
|
12
|
-
function _define_property(obj, key, value) {
|
13
|
-
if (key in obj) {
|
14
|
-
Object.defineProperty(obj, key, {
|
15
|
-
value: value,
|
16
|
-
enumerable: true,
|
17
|
-
configurable: true,
|
18
|
-
writable: true
|
19
|
-
});
|
20
|
-
} else {
|
21
|
-
obj[key] = value;
|
22
|
-
}
|
23
|
-
return obj;
|
24
|
-
}
|
25
|
-
class Katana {
|
26
|
-
async execute() {
|
27
|
-
const result = [];
|
28
|
-
const executor = new _executor.SoarExecutor(this);
|
29
|
-
for(let idx = 0; idx < this.getInputData().length; idx++){
|
30
|
-
const response = await executor.run(idx, "katana", "-list", {
|
31
|
-
extraArgs: [
|
32
|
-
"-disable-update-check",
|
33
|
-
"-jsonl",
|
34
|
-
"-silent"
|
35
|
-
],
|
36
|
-
extraArgParameters: [
|
37
|
-
"options.configuration",
|
38
|
-
"options.headless",
|
39
|
-
"options.scope",
|
40
|
-
"options.filter",
|
41
|
-
"options.rateLimit",
|
42
|
-
"options.output"
|
43
|
-
]
|
44
|
-
});
|
45
|
-
result.push(...this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(((d)=>d.split("\n").map((n)=>n.trim()).filter(Boolean).map((d)=>JSON.parse(d)))(response.stdout)), {
|
46
|
-
itemData: {
|
47
|
-
item: idx
|
48
|
-
}
|
49
|
-
}));
|
50
|
-
}
|
51
|
-
return [
|
52
|
-
result
|
53
|
-
];
|
54
|
-
}
|
55
|
-
constructor(){
|
56
|
-
_define_property(this, "description", {
|
57
|
-
displayName: "Runner Katana",
|
58
|
-
name: "katana",
|
59
|
-
group: [
|
60
|
-
"output"
|
61
|
-
],
|
62
|
-
version: 1,
|
63
|
-
subtitle: "={{ 'katana' + ($parameter['batch'] ? ' (Batch)' : ' on ' + $parameter['target']) }}",
|
64
|
-
description: "Interact with Katana",
|
65
|
-
defaults: {
|
66
|
-
name: "Katana"
|
67
|
-
},
|
68
|
-
inputs: [
|
69
|
-
"main"
|
70
|
-
],
|
71
|
-
outputs: [
|
72
|
-
"main"
|
73
|
-
],
|
74
|
-
credentials: [
|
75
|
-
{
|
76
|
-
name: "dockerCredentialsApi"
|
77
|
-
},
|
78
|
-
{
|
79
|
-
name: "kubernetesCredentialsApi"
|
80
|
-
}
|
81
|
-
],
|
82
|
-
properties: (0, _executor.injectCommonProperties)([
|
83
|
-
{
|
84
|
-
displayName: "Options",
|
85
|
-
name: "options",
|
86
|
-
type: "fixedCollection",
|
87
|
-
default: {},
|
88
|
-
typeOptions: {
|
89
|
-
multipleValues: true
|
90
|
-
},
|
91
|
-
options: [
|
92
|
-
{
|
93
|
-
displayName: "Configuration",
|
94
|
-
name: "configuration",
|
95
|
-
values: [
|
96
|
-
{
|
97
|
-
displayName: "Options",
|
98
|
-
name: "key",
|
99
|
-
type: "options",
|
100
|
-
default: "-automatic-form-fill",
|
101
|
-
options: [
|
102
|
-
{
|
103
|
-
name: "Automatic Form Fill",
|
104
|
-
value: "-automatic-form-fill",
|
105
|
-
description: "Enable automatic form filling (experimental)"
|
106
|
-
},
|
107
|
-
{
|
108
|
-
name: "Config",
|
109
|
-
value: "-config",
|
110
|
-
description: "Path to the katana configuration file (string)"
|
111
|
-
},
|
112
|
-
{
|
113
|
-
name: "Crawl Duration",
|
114
|
-
value: "-crawl-duration",
|
115
|
-
description: "Maximum duration to crawl the target for (s, m, h, d) (default s) (value)"
|
116
|
-
},
|
117
|
-
{
|
118
|
-
name: "Depth",
|
119
|
-
value: "-depth",
|
120
|
-
description: "Maximum depth to crawl (default 3) (int)"
|
121
|
-
},
|
122
|
-
{
|
123
|
-
name: "Field Config",
|
124
|
-
value: "-field-config",
|
125
|
-
description: "Path to custom field configuration file (string)"
|
126
|
-
},
|
127
|
-
{
|
128
|
-
name: "Form Config",
|
129
|
-
value: "-form-config",
|
130
|
-
description: "Path to custom form configuration file (string)"
|
131
|
-
},
|
132
|
-
{
|
133
|
-
name: "Form Extraction",
|
134
|
-
value: "-form-extraction",
|
135
|
-
description: "Extract form, input, textarea & select elements in jsonl output"
|
136
|
-
},
|
137
|
-
{
|
138
|
-
name: "Headers",
|
139
|
-
value: "-headers",
|
140
|
-
description: "Custom header/cookie to include in all http request in header:value format (file) (string[])"
|
141
|
-
},
|
142
|
-
{
|
143
|
-
name: "Ignore Query Params",
|
144
|
-
value: "-ignore-query-params",
|
145
|
-
description: "Ignore crawling same path with different query-param values"
|
146
|
-
},
|
147
|
-
{
|
148
|
-
name: "Js Crawl",
|
149
|
-
value: "-js-crawl",
|
150
|
-
description: "Enable endpoint parsing / crawling in javascript file"
|
151
|
-
},
|
152
|
-
{
|
153
|
-
name: "Jsluice",
|
154
|
-
value: "-jsluice",
|
155
|
-
description: "Enable jsluice parsing in javascript file (memory intensive)"
|
156
|
-
},
|
157
|
-
{
|
158
|
-
name: "Known Files",
|
159
|
-
value: "-known-files",
|
160
|
-
description: "Enable crawling of known files (all,robotstxt,sitemapxml) (string)"
|
161
|
-
},
|
162
|
-
{
|
163
|
-
name: "Max Response Size",
|
164
|
-
value: "-max-response-size",
|
165
|
-
description: "Maximum response size to read (default 9223372036854775807) (int)"
|
166
|
-
},
|
167
|
-
{
|
168
|
-
name: "Proxy",
|
169
|
-
value: "-proxy",
|
170
|
-
description: "Http/socks5 proxy to use (string)"
|
171
|
-
},
|
172
|
-
{
|
173
|
-
name: "Resolvers",
|
174
|
-
value: "-resolvers",
|
175
|
-
description: "List of custom resolver (file or comma-separated) (string[])"
|
176
|
-
},
|
177
|
-
{
|
178
|
-
name: "Retry",
|
179
|
-
value: "-retry",
|
180
|
-
description: "Number of times to retry the request (default 1) (int)"
|
181
|
-
},
|
182
|
-
{
|
183
|
-
name: "Strategy",
|
184
|
-
value: "-strategy",
|
185
|
-
description: 'Visit strategy (depth-first, breadth-first) (default "depth-first") (string)'
|
186
|
-
},
|
187
|
-
{
|
188
|
-
name: "Timeout",
|
189
|
-
value: "-timeout",
|
190
|
-
description: "Time to wait for request in seconds (default 10) (int)"
|
191
|
-
},
|
192
|
-
{
|
193
|
-
name: "Tls Impersonate",
|
194
|
-
value: "-tls-impersonate",
|
195
|
-
description: "Enable experimental client hello (ja3) tls randomization"
|
196
|
-
}
|
197
|
-
]
|
198
|
-
},
|
199
|
-
{
|
200
|
-
displayName: "Value",
|
201
|
-
name: "value",
|
202
|
-
type: "string",
|
203
|
-
default: ""
|
204
|
-
}
|
205
|
-
]
|
206
|
-
},
|
207
|
-
{
|
208
|
-
displayName: "Headless",
|
209
|
-
name: "headless",
|
210
|
-
values: [
|
211
|
-
{
|
212
|
-
displayName: "Options",
|
213
|
-
name: "key",
|
214
|
-
type: "options",
|
215
|
-
default: "-chrome-data-dir",
|
216
|
-
options: [
|
217
|
-
{
|
218
|
-
name: "Chrome Data Dir",
|
219
|
-
value: "-chrome-data-dir",
|
220
|
-
description: "Path to store chrome browser data (string)"
|
221
|
-
},
|
222
|
-
{
|
223
|
-
name: "Chrome Ws URL",
|
224
|
-
value: "-chrome-ws-url",
|
225
|
-
description: "Use chrome browser instance launched elsewhere with the debugger listening at this URL (string)"
|
226
|
-
},
|
227
|
-
{
|
228
|
-
name: "Headless",
|
229
|
-
value: "-headless",
|
230
|
-
description: "Enable headless hybrid crawling (experimental)"
|
231
|
-
},
|
232
|
-
{
|
233
|
-
name: "Headless Options",
|
234
|
-
value: "-headless-options",
|
235
|
-
description: "Start headless chrome with additional options (string[])"
|
236
|
-
},
|
237
|
-
{
|
238
|
-
name: "No Incognito",
|
239
|
-
value: "-no-incognito",
|
240
|
-
description: "Start headless chrome without incognito mode"
|
241
|
-
},
|
242
|
-
{
|
243
|
-
name: "No Sandbox",
|
244
|
-
value: "-no-sandbox",
|
245
|
-
description: "Start headless chrome in --no-sandbox mode"
|
246
|
-
},
|
247
|
-
{
|
248
|
-
name: "Show Browser",
|
249
|
-
value: "-show-browser",
|
250
|
-
description: "Show the browser on the screen with headless mode"
|
251
|
-
},
|
252
|
-
{
|
253
|
-
name: "System Chrome",
|
254
|
-
value: "-system-chrome",
|
255
|
-
description: "Use local installed chrome browser instead of katana installed"
|
256
|
-
},
|
257
|
-
{
|
258
|
-
name: "System Chrome Path",
|
259
|
-
value: "-system-chrome-path",
|
260
|
-
description: "Use specified chrome browser for headless crawling (string)"
|
261
|
-
},
|
262
|
-
{
|
263
|
-
name: "Xhr Extraction",
|
264
|
-
value: "-xhr-extraction",
|
265
|
-
description: "Extract xhr request URL,method in jsonl output"
|
266
|
-
}
|
267
|
-
]
|
268
|
-
},
|
269
|
-
{
|
270
|
-
displayName: "Value",
|
271
|
-
name: "value",
|
272
|
-
type: "string",
|
273
|
-
default: ""
|
274
|
-
}
|
275
|
-
]
|
276
|
-
},
|
277
|
-
{
|
278
|
-
displayName: "Scope",
|
279
|
-
name: "scope",
|
280
|
-
values: [
|
281
|
-
{
|
282
|
-
displayName: "Options",
|
283
|
-
name: "key",
|
284
|
-
type: "options",
|
285
|
-
default: "-crawl-out-scope",
|
286
|
-
options: [
|
287
|
-
{
|
288
|
-
name: "Crawl Out Scope",
|
289
|
-
value: "-crawl-out-scope",
|
290
|
-
description: "Out of scope URL regex to be excluded by crawler (string[])"
|
291
|
-
},
|
292
|
-
{
|
293
|
-
name: "Crawl Scope",
|
294
|
-
value: "-crawl-scope",
|
295
|
-
description: "In scope URL regex to be followed by crawler (string[])"
|
296
|
-
},
|
297
|
-
{
|
298
|
-
name: "Display Out Scope",
|
299
|
-
value: "-display-out-scope",
|
300
|
-
description: "Display external endpoint from scoped crawling"
|
301
|
-
},
|
302
|
-
{
|
303
|
-
name: "Field Scope",
|
304
|
-
value: "-field-scope",
|
305
|
-
description: 'Pre-defined scope field (dn,rdn,fqdn) (default "rdn") (string)'
|
306
|
-
},
|
307
|
-
{
|
308
|
-
name: "No Scope",
|
309
|
-
value: "-no-scope",
|
310
|
-
description: "Disables host based default scope"
|
311
|
-
}
|
312
|
-
]
|
313
|
-
},
|
314
|
-
{
|
315
|
-
displayName: "Value",
|
316
|
-
name: "value",
|
317
|
-
type: "string",
|
318
|
-
default: ""
|
319
|
-
}
|
320
|
-
]
|
321
|
-
},
|
322
|
-
{
|
323
|
-
displayName: "Filter",
|
324
|
-
name: "filter",
|
325
|
-
values: [
|
326
|
-
{
|
327
|
-
displayName: "Options",
|
328
|
-
name: "key",
|
329
|
-
type: "options",
|
330
|
-
default: "-extension-filter",
|
331
|
-
options: [
|
332
|
-
{
|
333
|
-
name: "Extension Filter",
|
334
|
-
value: "-extension-filter",
|
335
|
-
description: "Filter output for given extension (eg, -ef png,css) (string[])"
|
336
|
-
},
|
337
|
-
{
|
338
|
-
name: "Extension Match",
|
339
|
-
value: "-extension-match",
|
340
|
-
description: "Match output for given extension (eg, -em php,html,js) (string[])"
|
341
|
-
},
|
342
|
-
{
|
343
|
-
name: "Field",
|
344
|
-
value: "-field",
|
345
|
-
description: "Field to display in output (URL,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir) (string)"
|
346
|
-
},
|
347
|
-
{
|
348
|
-
name: "Filter Condition",
|
349
|
-
value: "-filter-condition",
|
350
|
-
description: "Filter response with dsl based condition (string)"
|
351
|
-
},
|
352
|
-
{
|
353
|
-
name: "Filter Regex",
|
354
|
-
value: "-filter-regex",
|
355
|
-
description: "Regex or list of regex to filter on output URL (cli, file) (string[])"
|
356
|
-
},
|
357
|
-
{
|
358
|
-
name: "Match Condition",
|
359
|
-
value: "-match-condition",
|
360
|
-
description: "Match response with dsl based condition (string)"
|
361
|
-
},
|
362
|
-
{
|
363
|
-
name: "Match Regex",
|
364
|
-
value: "-match-regex",
|
365
|
-
description: "Regex or list of regex to match on output URL (cli, file) (string[])"
|
366
|
-
},
|
367
|
-
{
|
368
|
-
name: "Store Field",
|
369
|
-
value: "-store-field",
|
370
|
-
description: "Field to store in per-host output (URL,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir) (string)"
|
371
|
-
}
|
372
|
-
]
|
373
|
-
},
|
374
|
-
{
|
375
|
-
displayName: "Value",
|
376
|
-
name: "value",
|
377
|
-
type: "string",
|
378
|
-
default: ""
|
379
|
-
}
|
380
|
-
]
|
381
|
-
},
|
382
|
-
{
|
383
|
-
displayName: "Rate Limit",
|
384
|
-
name: "rateLimit",
|
385
|
-
values: [
|
386
|
-
{
|
387
|
-
displayName: "Options",
|
388
|
-
name: "key",
|
389
|
-
type: "options",
|
390
|
-
default: "-concurrency",
|
391
|
-
options: [
|
392
|
-
{
|
393
|
-
name: "Concurrency",
|
394
|
-
value: "-concurrency",
|
395
|
-
description: "Number of concurrent fetchers to use (default 10) (int)"
|
396
|
-
},
|
397
|
-
{
|
398
|
-
name: "Delay",
|
399
|
-
value: "-delay",
|
400
|
-
description: "Request delay between each request in seconds (int)"
|
401
|
-
},
|
402
|
-
{
|
403
|
-
name: "Parallelism",
|
404
|
-
value: "-parallelism",
|
405
|
-
description: "Number of concurrent inputs to process (default 10) (int)"
|
406
|
-
},
|
407
|
-
{
|
408
|
-
name: "Rate Limit",
|
409
|
-
value: "-rate-limit",
|
410
|
-
description: "Maximum requests to send per second (default 150) (int)"
|
411
|
-
},
|
412
|
-
{
|
413
|
-
name: "Rate Limit Minute",
|
414
|
-
value: "-rate-limit-minute",
|
415
|
-
description: "Maximum number of requests to send per minute (int)"
|
416
|
-
}
|
417
|
-
]
|
418
|
-
},
|
419
|
-
{
|
420
|
-
displayName: "Value",
|
421
|
-
name: "value",
|
422
|
-
type: "string",
|
423
|
-
default: ""
|
424
|
-
}
|
425
|
-
]
|
426
|
-
},
|
427
|
-
{
|
428
|
-
displayName: "Output",
|
429
|
-
name: "output",
|
430
|
-
values: [
|
431
|
-
{
|
432
|
-
displayName: "Options",
|
433
|
-
name: "key",
|
434
|
-
type: "options",
|
435
|
-
default: "-omit-raw",
|
436
|
-
options: [
|
437
|
-
{
|
438
|
-
name: "Omit Raw",
|
439
|
-
value: "-omit-raw",
|
440
|
-
description: "Omit raw requests/responses from jsonl output"
|
441
|
-
},
|
442
|
-
{
|
443
|
-
name: "Omit Body",
|
444
|
-
value: "-omit-body",
|
445
|
-
description: "Omit response body from jsonl output"
|
446
|
-
}
|
447
|
-
]
|
448
|
-
}
|
449
|
-
]
|
450
|
-
}
|
451
|
-
]
|
452
|
-
}
|
453
|
-
])
|
454
|
-
});
|
455
|
-
}
|
456
|
-
}
|