secator 0.16.1__py3-none-any.whl → 0.16.3__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
@@ -100,6 +100,8 @@ def update_state(celery_task, task, force=False):
100
100
  """Update task state to add metadata information."""
101
101
  if not IN_CELERY_WORKER_PROCESS:
102
102
  return
103
+ if task.no_live_updates:
104
+ return
103
105
  if not force and not should_update(CONFIG.runners.backend_update_frequency, task.last_updated_celery):
104
106
  return
105
107
  task.last_updated_celery = time()
@@ -223,8 +225,16 @@ def forward_results(results):
223
225
  results[ix] = item['results']
224
226
  elif 'results' in results:
225
227
  results = results['results']
228
+
229
+ if IN_CELERY_WORKER_PROCESS:
230
+ console.print(Info(message=f'Forwarding {len(results)} results'))
231
+
226
232
  results = flatten(results)
227
233
  results = deduplicate(results, attr='_uuid')
234
+
235
+ if IN_CELERY_WORKER_PROCESS:
236
+ console.print(Info(message=f'Forwarded {len(results)} flattened and deduplicated results'))
237
+
228
238
  return results
229
239
 
230
240
 
@@ -240,6 +250,8 @@ def mark_runner_started(results, runner, enable_hooks=True):
240
250
  Returns:
241
251
  list: Runner results
242
252
  """
253
+ if IN_CELERY_WORKER_PROCESS:
254
+ console.print(Info(message=f'Runner {runner.unique_name} has started, running mark_started'))
243
255
  debug(f'Runner {runner.unique_name} has started, running mark_started', sub='celery')
244
256
  if results:
245
257
  runner.results = forward_results(results)
@@ -260,6 +272,8 @@ def mark_runner_completed(results, runner, enable_hooks=True):
260
272
  Returns:
261
273
  list: Final results
262
274
  """
275
+ if IN_CELERY_WORKER_PROCESS:
276
+ console.print(Info(message=f'Runner {runner.unique_name} has finished, running mark_completed'))
263
277
  debug(f'Runner {runner.unique_name} has finished, running mark_completed', sub='celery')
264
278
  results = forward_results(results)
265
279
  runner.enable_hooks = enable_hooks
@@ -9,7 +9,7 @@ input_types:
9
9
  options:
10
10
  crawlers:
11
11
  type: list
12
- help: Crawlers to use (katana, gospider)
12
+ help: Crawlers to use
13
13
  default: ['gau', 'katana']
14
14
  internal: True
15
15
 
@@ -36,17 +36,14 @@ tasks:
36
36
  description: Crawl URLs
37
37
  if: "'gospider' in opts.crawlers"
38
38
 
39
- cariddi:
40
- description: Hunt URLs patterns
41
- info: True
42
- secrets: True
43
- errors: True
44
- juicy_extensions: 1
45
- juicy_endpoints: True
46
- targets_:
47
- - target.name
48
- - url.url
49
- if: opts.hunt_patterns
39
+ cariddi:
40
+ description: Hunt URLs patterns
41
+ info: True
42
+ secrets: True
43
+ errors: True
44
+ juicy_extensions: 1
45
+ juicy_endpoints: True
46
+ if: opts.hunt_patterns
50
47
 
51
48
  httpx:
52
49
  description: Run HTTP probes on crawled URLs
secator/hooks/mongodb.py CHANGED
@@ -6,7 +6,7 @@ from bson.objectid import ObjectId
6
6
  from celery import shared_task
7
7
 
8
8
  from secator.config import CONFIG
9
- from secator.output_types import FINDING_TYPES
9
+ from secator.output_types import OUTPUT_TYPES
10
10
  from secator.runners import Scan, Task, Workflow
11
11
  from secator.utils import debug, escape_mongodb_url
12
12
 
@@ -78,7 +78,7 @@ def update_runner(self):
78
78
 
79
79
 
80
80
  def update_finding(self, item):
81
- if type(item) not in FINDING_TYPES:
81
+ if type(item) not in OUTPUT_TYPES:
82
82
  return item
83
83
  start_time = time.time()
84
84
  client = get_mongodb_client()
@@ -120,7 +120,7 @@ def find_duplicates(self):
120
120
  def load_finding(obj):
121
121
  finding_type = obj['_type']
122
122
  klass = None
123
- for otype in FINDING_TYPES:
123
+ for otype in OUTPUT_TYPES:
124
124
  if finding_type == otype.get_name():
125
125
  klass = otype
126
126
  item = klass.load(obj)
secator/loader.py CHANGED
@@ -37,7 +37,18 @@ def find_templates():
37
37
  def get_configs_by_type(type):
38
38
  if type == 'task':
39
39
  tasks = discover_tasks()
40
- task_config = [TemplateLoader({'name': cls.__name__, 'type': 'task', 'input_types': cls.input_types, 'output_types': [t.get_name() for t in cls.output_types]}) for cls in tasks] # noqa: E501
40
+ task_config = [TemplateLoader({
41
+ 'name': cls.__name__,
42
+ 'type': 'task',
43
+ 'description': cls.__doc__,
44
+ 'input_types': cls.input_types,
45
+ 'output_types': [t.get_name() for t in cls.output_types],
46
+ 'proxychains': getattr(cls, 'proxychains', True),
47
+ 'proxy_socks5': getattr(cls, 'proxy_socks5', True),
48
+ 'proxy_http': getattr(cls, 'proxy_http', True),
49
+ 'default_cmd': cls.cmd,
50
+ 'install_cmd': cls.install_cmd,
51
+ }) for cls in tasks] # noqa: E501
41
52
  return sorted(task_config, key=lambda x: x['name'])
42
53
  return sorted([t for t in find_templates() if t.type == type], key=lambda x: x.name)
43
54
 
secator/runners/_base.py CHANGED
@@ -117,6 +117,7 @@ class Runner:
117
117
 
118
118
  # Runner process options
119
119
  self.no_poll = self.run_opts.get('no_poll', False)
120
+ self.no_live_updates = self.run_opts.get('no_live_updates', False)
120
121
  self.no_process = not self.run_opts.get('process', True)
121
122
  self.piped_input = self.run_opts.get('piped_input', False)
122
123
  self.piped_output = self.run_opts.get('piped_output', False)
@@ -132,7 +133,7 @@ class Runner:
132
133
  self.enable_duplicate_check = self.run_opts.get('enable_duplicate_check', True)
133
134
  self.enable_profiles = self.run_opts.get('enable_profiles', True)
134
135
  self.enable_reports = self.run_opts.get('enable_reports', not self.sync) and not self.dry_run and not self.no_process and not self.no_poll # noqa: E501
135
- self.enable_hooks = self.run_opts.get('enable_hooks', True) and not self.dry_run and not self.no_process and not self.no_poll # noqa: E501
136
+ self.enable_hooks = self.run_opts.get('enable_hooks', True) and not self.dry_run and not self.no_process # noqa: E501
136
137
 
137
138
  # Runner print opts
138
139
  self.print_item = self.run_opts.get('print_item', False) and not self.dry_run
secator/tasks/bup.py CHANGED
@@ -20,6 +20,7 @@ class bup(Http):
20
20
  output_types = [Url, Progress]
21
21
  tags = ['url', 'bypass']
22
22
  input_flag = '-u'
23
+ file_flag = '-R'
23
24
  json_flag = '--jsonl'
24
25
  opt_prefix = '--'
25
26
  opts = {
secator/tasks/dalfox.py CHANGED
@@ -27,7 +27,7 @@ class dalfox(VulnHttp):
27
27
  input_flag = 'url'
28
28
  file_flag = 'file'
29
29
  # input_chunk_size = 1
30
- json_flag = '--format json'
30
+ json_flag = '--format jsonl'
31
31
  version_flag = 'version'
32
32
  opt_prefix = '--'
33
33
  opt_key_map = {
@@ -65,11 +65,6 @@ class dalfox(VulnHttp):
65
65
  proxy_http = True
66
66
  profile = 'cpu'
67
67
 
68
- @staticmethod
69
- def on_line(self, line):
70
- line = line.rstrip(',')
71
- return line
72
-
73
68
  @staticmethod
74
69
  def on_json_loaded(self, item):
75
70
  if item.get('type', '') == 'V':
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: secator
3
- Version: 0.16.1
3
+ Version: 0.16.3
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=9sdgWHg1AgIu_RrqWffjBLSVFL0cbS71n4pjhmnFYiM,10037
3
+ secator/celery.py,sha256=Uu9bslbxyi6bQnlRfXOQkyZ62BlwZ_xKWiyYwtRhzII,10553
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
@@ -11,7 +11,7 @@ secator/cve.py,sha256=j47VOGyZjOvCY_xwVYS9fiXQPKHL5bPRtCnVAmbQthE,21356
11
11
  secator/decorators.py,sha256=uygU8MguxEO0BKXRvF4Nn2QEDnjqdIer8ReBj_j9ALg,88
12
12
  secator/definitions.py,sha256=sJaR9e_4aEgAo7cVzYQcD2lotXQPN_3lze_qWhKvo1M,3275
13
13
  secator/installer.py,sha256=oWHzUXrEp8D6oPiFHjWcOvDjqMLRhftB7kG-OcCg7PY,21120
14
- secator/loader.py,sha256=gXtjbn5f-890M7fI5ZWjBlli7eBrNpQt8o8I0C4LuS8,3870
14
+ secator/loader.py,sha256=fR0oAdBgZlII8guOmSs_htQq917mUZZIiAzf0fvUq0Y,4139
15
15
  secator/report.py,sha256=4lEjW_GzDgsPBe1eQHX4ntcHWs0nsAMIbrNMw0UfWHc,4025
16
16
  secator/rich.py,sha256=jITAXV_Wgj32Q7FfkssDN-DMD8TxK1wwlrIlkaCNc70,3960
17
17
  secator/template.py,sha256=vLp-4cmg05YDKyvqmPtKoclH-b_NamRKvr_qprIPSGA,9905
@@ -41,7 +41,7 @@ secator/configs/workflows/code_scan.yaml,sha256=7mJi7Z42tr6vGG2j2Xy-nl5arITk9Nyr
41
41
  secator/configs/workflows/host_recon.yaml,sha256=HKDAkBZXT3m5SzKovs8dJdJEn5uFHCVZq-0fFovZRKg,1571
42
42
  secator/configs/workflows/subdomain_recon.yaml,sha256=VOYcjYjHRRebe1TAYphh-zpSq8W5_q-6DDeMja2dlek,1896
43
43
  secator/configs/workflows/url_bypass.yaml,sha256=_uBzDhevJ2DOD9UkE25n7ZrmnjjfdU3lV3mnUudgdU0,180
44
- secator/configs/workflows/url_crawl.yaml,sha256=JqpTNw11NLsLCcHFHllTYSqQ9ingO1uwDoZ7c3YqxJI,1121
44
+ secator/configs/workflows/url_crawl.yaml,sha256=AFvYBXYZzZhFte40pjNG04hl9MDW9KXCMx9vPSkWUKs,1072
45
45
  secator/configs/workflows/url_dirsearch.yaml,sha256=_4TdMSVLt2lIbx8ucn0R04tkMUqhG2i-m3JxCofx4mo,670
46
46
  secator/configs/workflows/url_fuzz.yaml,sha256=a-ZvZrcPBaeVhRrxox8fq25SKMJflyAkKWLqJeC3xD4,911
47
47
  secator/configs/workflows/url_params_fuzz.yaml,sha256=ufGbW4GUtEZee0M1WPVo0w6ZCEH6xmuDO6VCjPaw8AQ,796
@@ -58,7 +58,7 @@ secator/exporters/table.py,sha256=zYNmwNGEyB6dTJ1ATVkrv-AOuPjrW6tvk1_4naLQo8Q,11
58
58
  secator/exporters/txt.py,sha256=t_FykaJOxs4UUlqiH4k6HCccEqYqc8e3iNZndL_CKPg,739
59
59
  secator/hooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
60
  secator/hooks/gcs.py,sha256=MIhntyWYz9BZdTXhWl5JznaczSq1_7fl3TVqPufuTSo,1490
61
- secator/hooks/mongodb.py,sha256=5Rbmjd6JuLNH_1GgkumMX1TeuMuU88gzYxoDMkHh1OY,7638
61
+ secator/hooks/mongodb.py,sha256=QbW412E1oK_WHwClWtaZI4quH4ak6S-aT3D4JWSmeKw,7635
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=dy07vXC4STyLepktW4WFpH4tBiyiJfe_MLxgGu555v0,40466
82
+ secator/runners/_base.py,sha256=Utxw3iLBsugIy7Nt3rUAy0dueezM-uil_lfSAqDgvGE,40514
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
@@ -95,9 +95,9 @@ secator/tasks/__init__.py,sha256=Op0O0Aa8c124AfDG-cEB9VLRsXZ1wXTpVrT3g-wxMNg,184
95
95
  secator/tasks/_categories.py,sha256=yns_5PBKStp6TJEeaYB6yFUjkFMmLh7LEuxcNcADNro,14962
96
96
  secator/tasks/arjun.py,sha256=WdRZtTCd2Ejbv5HlLS_FoWVKgGpMsR6RCDekV2kR788,3061
97
97
  secator/tasks/bbot.py,sha256=moIkwd52jCKaeg1v6Nv4Gfmd4GPObo9c9nwOzQvf-2M,9236
98
- secator/tasks/bup.py,sha256=bl5NzoPr_YLy9Ei7JU9CM0-bW9iZsuFe3Ft8KJjN9ws,3849
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=v-TI5B-PCZRe6dU9caQfGJPyAPSbRRCohdIlIFvNAq8,2551
100
+ secator/tasks/dalfox.py,sha256=Z_1xu_3piw08L7z33gT00omW7JD3Ojnc0fHkFqoutyA,2470
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.1.dist-info/METADATA,sha256=1v_HqlH32Px9Zws4-EErHYpEMNV2k4mXYUNSXj26264,17253
129
- secator-0.16.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
130
- secator-0.16.1.dist-info/entry_points.txt,sha256=lPgsqqUXWgiuGSfKy-se5gHdQlAXIwS_A46NYq7Acic,44
131
- secator-0.16.1.dist-info/licenses/LICENSE,sha256=19W5Jsy4WTctNkqmZIqLRV1gTDOp01S3LDj9iSgWaJ0,2867
132
- secator-0.16.1.dist-info/RECORD,,
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,,