secator 0.16.3__py3-none-any.whl → 0.16.4__py3-none-any.whl

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.

Potentially problematic release.


This version of secator might be problematic. Click here for more details.

secator/celery.py CHANGED
@@ -214,11 +214,21 @@ def run_command(self, results, name, targets, opts={}):
214
214
  update_state(self, task)
215
215
  update_state(self, task, force=True)
216
216
 
217
+ if CONFIG.addons.mongodb.enabled:
218
+ return [r._uuid for r in task.results]
217
219
  return task.results
218
220
 
219
221
 
220
222
  @app.task
221
223
  def forward_results(results):
224
+ """Forward results to the next task (bridge task).
225
+
226
+ Args:
227
+ results (list): Results to forward.
228
+
229
+ Returns:
230
+ list: List of uuids.
231
+ """
222
232
  if isinstance(results, list):
223
233
  for ix, item in enumerate(results):
224
234
  if isinstance(item, dict) and 'results' in item:
@@ -227,10 +237,15 @@ def forward_results(results):
227
237
  results = results['results']
228
238
 
229
239
  if IN_CELERY_WORKER_PROCESS:
230
- console.print(Info(message=f'Forwarding {len(results)} results'))
240
+ console.print(Info(message=f'Deduplicating {len(results)} results'))
231
241
 
232
242
  results = flatten(results)
233
- results = deduplicate(results, attr='_uuid')
243
+ if CONFIG.addons.mongodb.enabled:
244
+ uuids = [r._uuid for r in results if hasattr(r, '_uuid')]
245
+ uuids.extend([r for r in results if isinstance(r, str)])
246
+ results = list(set(uuids))
247
+ else:
248
+ results = deduplicate(results, attr='_uuid')
234
249
 
235
250
  if IN_CELERY_WORKER_PROCESS:
236
251
  console.print(Info(message=f'Forwarded {len(results)} flattened and deduplicated results'))
@@ -254,8 +269,13 @@ def mark_runner_started(results, runner, enable_hooks=True):
254
269
  console.print(Info(message=f'Runner {runner.unique_name} has started, running mark_started'))
255
270
  debug(f'Runner {runner.unique_name} has started, running mark_started', sub='celery')
256
271
  if results:
257
- runner.results = forward_results(results)
272
+ results = forward_results(results)
258
273
  runner.enable_hooks = enable_hooks
274
+ if CONFIG.addons.mongodb.enabled:
275
+ from secator.hooks.mongodb import get_results
276
+ results = get_results(results)
277
+ for item in results:
278
+ runner.add_result(item, print=False)
259
279
  runner.mark_started()
260
280
  return runner.results
261
281
 
@@ -277,6 +297,9 @@ def mark_runner_completed(results, runner, enable_hooks=True):
277
297
  debug(f'Runner {runner.unique_name} has finished, running mark_completed', sub='celery')
278
298
  results = forward_results(results)
279
299
  runner.enable_hooks = enable_hooks
300
+ if CONFIG.addons.mongodb.enabled:
301
+ from secator.hooks.mongodb import get_results
302
+ results = get_results(results)
280
303
  for item in results:
281
304
  runner.add_result(item, print=False)
282
305
  runner.mark_completed()
secator/hooks/gcs.py CHANGED
@@ -11,7 +11,7 @@ from secator.utils import debug
11
11
 
12
12
  GCS_BUCKET_NAME = CONFIG.addons.gcs.bucket_name
13
13
  ITEMS_TO_SEND = {
14
- 'url': ['screenshot_path']
14
+ 'url': ['screenshot_path', 'stored_response_path']
15
15
  }
16
16
 
17
17
 
secator/hooks/mongodb.py CHANGED
@@ -46,6 +46,28 @@ def get_runner_dbg(runner):
46
46
  }
47
47
 
48
48
 
49
+ def get_results(uuids):
50
+ """Get results from MongoDB based on a list of uuids.
51
+
52
+ Args:
53
+ uuids (list[str | Output]): List of uuids, but can also be a mix of uuids and output types.
54
+
55
+ Returns:
56
+ Generator of findings.
57
+ """
58
+ client = get_mongodb_client()
59
+ db = client.main
60
+ del_uuids = []
61
+ for r in uuids:
62
+ if isinstance(r, tuple(OUTPUT_TYPES)):
63
+ yield r
64
+ del_uuids.append(r)
65
+ uuids = [ObjectId(u) for u in uuids if u not in del_uuids and ObjectId.is_valid(u)]
66
+ for r in db.findings.find({'_id': {'$in': uuids}}):
67
+ finding = load_finding(r)
68
+ yield finding
69
+
70
+
49
71
  def update_runner(self):
50
72
  client = get_mongodb_client()
51
73
  db = client.main
secator/runners/_base.py CHANGED
@@ -178,6 +178,10 @@ class Runner:
178
178
 
179
179
  # Add prior results to runner results
180
180
  self.debug(f'adding {len(results)} prior results to runner', sub='init')
181
+ if CONFIG.addons.mongodb.enabled:
182
+ self.debug('adding prior results from MongoDB', sub='init')
183
+ from secator.hooks.mongodb import get_results
184
+ results = get_results(results)
181
185
  for result in results:
182
186
  self.add_result(result, print=False, output=False, hooks=False, queue=not self.has_parent)
183
187
 
@@ -189,8 +193,8 @@ class Runner:
189
193
  for target in targets:
190
194
  self.add_result(target, print=False, output=False)
191
195
 
192
- # Run extractors on results and targets
193
- self._run_extractors(results + targets)
196
+ # Run extractors on results
197
+ self._run_extractors()
194
198
  self.debug(f'inputs ({len(self.inputs)})', obj=self.inputs, sub='init')
195
199
  self.debug(f'run opts ({len(self.resolved_opts)})', obj=self.resolved_opts, sub='init')
196
200
  self.debug(f'print opts ({len(self.resolved_print_opts)})', obj=self.resolved_print_opts, sub='init')
@@ -430,12 +434,12 @@ class Runner:
430
434
  if error:
431
435
  self.add_result(error)
432
436
 
433
- def _run_extractors(self, results):
437
+ def _run_extractors(self):
434
438
  """Run extractors on results and targets."""
435
439
  self.debug('running extractors', sub='init')
436
440
  ctx = {'opts': DotMap(self.run_opts), 'targets': self.inputs, 'ancestor_id': self.ancestor_id}
437
441
  inputs, run_opts, errors = run_extractors(
438
- results,
442
+ self.results,
439
443
  self.run_opts,
440
444
  self.inputs,
441
445
  ctx=ctx,
secator/tasks/dalfox.py CHANGED
@@ -25,6 +25,7 @@ class dalfox(VulnHttp):
25
25
  output_types = [Vulnerability, Url]
26
26
  tags = ['url', 'fuzz']
27
27
  input_flag = 'url'
28
+ input_chunk_size = 20
28
29
  file_flag = 'file'
29
30
  # input_chunk_size = 1
30
31
  json_flag = '--format jsonl'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: secator
3
- Version: 0.16.3
3
+ Version: 0.16.4
4
4
  Summary: The pentester's swiss knife.
5
5
  Project-URL: Homepage, https://github.com/freelabz/secator
6
6
  Project-URL: Issues, https://github.com/freelabz/secator/issues
@@ -1,6 +1,6 @@
1
1
  secator/.gitignore,sha256=da8MUc3hdb6Mo0WjZu2upn5uZMbXcBGvhdhTQ1L89HI,3093
2
2
  secator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- secator/celery.py,sha256=Uu9bslbxyi6bQnlRfXOQkyZ62BlwZ_xKWiyYwtRhzII,10553
3
+ secator/celery.py,sha256=st9wpAwilYk5BCO18wscGt0vqQdCIP4Pynw_9RcvWec,11246
4
4
  secator/celery_signals.py,sha256=R4ZNBPKSxUvesGCvZ7MXoRkWNOTMS5hraZzjLh5sQ0o,4191
5
5
  secator/celery_utils.py,sha256=vhL5ZxXDn3ODvyVxMijKyUTJ1dOisMDjF_PhFUyOVSA,9451
6
6
  secator/cli.py,sha256=lzgttr8-Hib1X6bGi8PCOfX90incum7ZFR5x46cDZ34,60887
@@ -57,8 +57,8 @@ secator/exporters/json.py,sha256=1ZtDf8RksPO_V0zIvnwDUxMUb630DCElAMM8_RQvyAo,474
57
57
  secator/exporters/table.py,sha256=zYNmwNGEyB6dTJ1ATVkrv-AOuPjrW6tvk1_4naLQo8Q,1114
58
58
  secator/exporters/txt.py,sha256=t_FykaJOxs4UUlqiH4k6HCccEqYqc8e3iNZndL_CKPg,739
59
59
  secator/hooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- secator/hooks/gcs.py,sha256=MIhntyWYz9BZdTXhWl5JznaczSq1_7fl3TVqPufuTSo,1490
61
- secator/hooks/mongodb.py,sha256=QbW412E1oK_WHwClWtaZI4quH4ak6S-aT3D4JWSmeKw,7635
60
+ secator/hooks/gcs.py,sha256=CNQmDWbwnIA1mDhzwO75P8907lAFd5-vA2sJVMbhAiY,1514
61
+ secator/hooks/mongodb.py,sha256=fCm_E1hxgSl9C6l4eGW8J-Jjstvbfy9daITWYcmNTe8,8198
62
62
  secator/output_types/__init__.py,sha256=CJcYy2_Ek-opKiBz4wFlDHQBTm3t0JVwZ4w_2Jxoeuw,1291
63
63
  secator/output_types/_base.py,sha256=9iBqPdtlfJBldBiuC729KamHHGbKhwo69P-2UNwz-3Q,2874
64
64
  secator/output_types/certificate.py,sha256=IXW3GN0JRmuDgoedr8NV8ccuRQOuoInNZWnAKL8zeqY,3040
@@ -79,7 +79,7 @@ secator/output_types/user_account.py,sha256=EvF3Ebg9eXS_-iDguU1dSHZ9wAsJimEJznDv
79
79
  secator/output_types/vulnerability.py,sha256=eWJDFCYf3sP5-hPKQT-4Kd5id9bJzTW2u-O_d_4P6EA,2849
80
80
  secator/output_types/warning.py,sha256=iy949Aj5OXJLWif7HFB5EvjcYrgKHAzIP9ffyLTV7LA,830
81
81
  secator/runners/__init__.py,sha256=EBbOk37vkBy9p8Hhrbi-2VtM_rTwQ3b-0ggTyiD22cE,290
82
- secator/runners/_base.py,sha256=Utxw3iLBsugIy7Nt3rUAy0dueezM-uil_lfSAqDgvGE,40514
82
+ secator/runners/_base.py,sha256=IkAQfPzz_kou5Pa82y-2Wmtp_lIudKMc9ix8_NP4370,40663
83
83
  secator/runners/_helpers.py,sha256=TeebZnpo4cp-9tpgPlDoFm_gmr00_CERAC1aOYhTzA4,6281
84
84
  secator/runners/celery.py,sha256=bqvDTTdoHiGRCt0FRvlgFHQ_nsjKMP5P0PzGbwfCj_0,425
85
85
  secator/runners/command.py,sha256=5fmwmqkUkomceLUSp2rtJvn_ydE2gI95rqS4WKWciYI,30200
@@ -97,7 +97,7 @@ secator/tasks/arjun.py,sha256=WdRZtTCd2Ejbv5HlLS_FoWVKgGpMsR6RCDekV2kR788,3061
97
97
  secator/tasks/bbot.py,sha256=moIkwd52jCKaeg1v6Nv4Gfmd4GPObo9c9nwOzQvf-2M,9236
98
98
  secator/tasks/bup.py,sha256=9IXsCqMdhOeZcCsQB2L4IJ3Kzm2oQKDE7mflGljm0lM,3867
99
99
  secator/tasks/cariddi.py,sha256=iT-2Aryw2PPrzPedc-N_E--DxKFz_gSrcJj4z5PGQf8,4142
100
- secator/tasks/dalfox.py,sha256=Z_1xu_3piw08L7z33gT00omW7JD3Ojnc0fHkFqoutyA,2470
100
+ secator/tasks/dalfox.py,sha256=DWz0VWBH5SU_AyHU36YC88vAEyJ1hXkKKKNXgQvwlrU,2493
101
101
  secator/tasks/dirsearch.py,sha256=_6xPZYpNsbwR4d9NFQw3NXxQKn5zyfO1lyrWzl5p7NY,2469
102
102
  secator/tasks/dnsx.py,sha256=2qNC-wSjS33geuHMOwuBapLwKEvWTlDgnmvM67ZSJVA,4220
103
103
  secator/tasks/feroxbuster.py,sha256=dz_DGw_CbVGw9AeFjtrAEQwoxDgKzYC-KT9VLwE5UlE,3022
@@ -125,8 +125,8 @@ secator/tasks/wafw00f.py,sha256=9CnV9F7ZrykO27F3PAb5HtwULDMYEKGSTbz-jh0kc2g,3189
125
125
  secator/tasks/wpprobe.py,sha256=1QPJ-7JvhL7LFvjUTAmqpH2Krp-Qmi079lonso16YPQ,3229
126
126
  secator/tasks/wpscan.py,sha256=dBkbG9EODHDUBAA8uNVULX4SdVgTCAi_F1T1oCfRbsI,5852
127
127
  secator/workflows/__init__.py,sha256=XOviyjSylZ4cuVmmQ76yuqZRdmvOEghqAnuw_4cLmfk,702
128
- secator-0.16.3.dist-info/METADATA,sha256=q9d__g8tXAFEQ47__NmReJX3nfvXdG9TkPA1QlKo2sg,17253
129
- secator-0.16.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
130
- secator-0.16.3.dist-info/entry_points.txt,sha256=lPgsqqUXWgiuGSfKy-se5gHdQlAXIwS_A46NYq7Acic,44
131
- secator-0.16.3.dist-info/licenses/LICENSE,sha256=19W5Jsy4WTctNkqmZIqLRV1gTDOp01S3LDj9iSgWaJ0,2867
132
- secator-0.16.3.dist-info/RECORD,,
128
+ secator-0.16.4.dist-info/METADATA,sha256=E_R6VdalGxZysqe043SuT0M_897S8cT5kXhmwOSWLpY,17253
129
+ secator-0.16.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
130
+ secator-0.16.4.dist-info/entry_points.txt,sha256=lPgsqqUXWgiuGSfKy-se5gHdQlAXIwS_A46NYq7Acic,44
131
+ secator-0.16.4.dist-info/licenses/LICENSE,sha256=19W5Jsy4WTctNkqmZIqLRV1gTDOp01S3LDj9iSgWaJ0,2867
132
+ secator-0.16.4.dist-info/RECORD,,