secator 0.22.0__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.
Files changed (150) hide show
  1. secator/.gitignore +162 -0
  2. secator/__init__.py +0 -0
  3. secator/celery.py +453 -0
  4. secator/celery_signals.py +138 -0
  5. secator/celery_utils.py +320 -0
  6. secator/cli.py +2035 -0
  7. secator/cli_helper.py +395 -0
  8. secator/click.py +87 -0
  9. secator/config.py +670 -0
  10. secator/configs/__init__.py +0 -0
  11. secator/configs/profiles/__init__.py +0 -0
  12. secator/configs/profiles/aggressive.yaml +8 -0
  13. secator/configs/profiles/all_ports.yaml +7 -0
  14. secator/configs/profiles/full.yaml +31 -0
  15. secator/configs/profiles/http_headless.yaml +7 -0
  16. secator/configs/profiles/http_record.yaml +8 -0
  17. secator/configs/profiles/insane.yaml +8 -0
  18. secator/configs/profiles/paranoid.yaml +8 -0
  19. secator/configs/profiles/passive.yaml +11 -0
  20. secator/configs/profiles/polite.yaml +8 -0
  21. secator/configs/profiles/sneaky.yaml +8 -0
  22. secator/configs/profiles/tor.yaml +5 -0
  23. secator/configs/scans/__init__.py +0 -0
  24. secator/configs/scans/domain.yaml +31 -0
  25. secator/configs/scans/host.yaml +23 -0
  26. secator/configs/scans/network.yaml +30 -0
  27. secator/configs/scans/subdomain.yaml +27 -0
  28. secator/configs/scans/url.yaml +19 -0
  29. secator/configs/workflows/__init__.py +0 -0
  30. secator/configs/workflows/cidr_recon.yaml +48 -0
  31. secator/configs/workflows/code_scan.yaml +29 -0
  32. secator/configs/workflows/domain_recon.yaml +46 -0
  33. secator/configs/workflows/host_recon.yaml +95 -0
  34. secator/configs/workflows/subdomain_recon.yaml +120 -0
  35. secator/configs/workflows/url_bypass.yaml +15 -0
  36. secator/configs/workflows/url_crawl.yaml +98 -0
  37. secator/configs/workflows/url_dirsearch.yaml +62 -0
  38. secator/configs/workflows/url_fuzz.yaml +68 -0
  39. secator/configs/workflows/url_params_fuzz.yaml +66 -0
  40. secator/configs/workflows/url_secrets_hunt.yaml +23 -0
  41. secator/configs/workflows/url_vuln.yaml +91 -0
  42. secator/configs/workflows/user_hunt.yaml +29 -0
  43. secator/configs/workflows/wordpress.yaml +38 -0
  44. secator/cve.py +718 -0
  45. secator/decorators.py +7 -0
  46. secator/definitions.py +168 -0
  47. secator/exporters/__init__.py +14 -0
  48. secator/exporters/_base.py +3 -0
  49. secator/exporters/console.py +10 -0
  50. secator/exporters/csv.py +37 -0
  51. secator/exporters/gdrive.py +123 -0
  52. secator/exporters/json.py +16 -0
  53. secator/exporters/table.py +36 -0
  54. secator/exporters/txt.py +28 -0
  55. secator/hooks/__init__.py +0 -0
  56. secator/hooks/gcs.py +80 -0
  57. secator/hooks/mongodb.py +281 -0
  58. secator/installer.py +694 -0
  59. secator/loader.py +128 -0
  60. secator/output_types/__init__.py +49 -0
  61. secator/output_types/_base.py +108 -0
  62. secator/output_types/certificate.py +78 -0
  63. secator/output_types/domain.py +50 -0
  64. secator/output_types/error.py +42 -0
  65. secator/output_types/exploit.py +58 -0
  66. secator/output_types/info.py +24 -0
  67. secator/output_types/ip.py +47 -0
  68. secator/output_types/port.py +55 -0
  69. secator/output_types/progress.py +36 -0
  70. secator/output_types/record.py +36 -0
  71. secator/output_types/stat.py +41 -0
  72. secator/output_types/state.py +29 -0
  73. secator/output_types/subdomain.py +45 -0
  74. secator/output_types/tag.py +69 -0
  75. secator/output_types/target.py +38 -0
  76. secator/output_types/url.py +112 -0
  77. secator/output_types/user_account.py +41 -0
  78. secator/output_types/vulnerability.py +101 -0
  79. secator/output_types/warning.py +30 -0
  80. secator/report.py +140 -0
  81. secator/rich.py +130 -0
  82. secator/runners/__init__.py +14 -0
  83. secator/runners/_base.py +1240 -0
  84. secator/runners/_helpers.py +218 -0
  85. secator/runners/celery.py +18 -0
  86. secator/runners/command.py +1178 -0
  87. secator/runners/python.py +126 -0
  88. secator/runners/scan.py +87 -0
  89. secator/runners/task.py +81 -0
  90. secator/runners/workflow.py +168 -0
  91. secator/scans/__init__.py +29 -0
  92. secator/serializers/__init__.py +8 -0
  93. secator/serializers/dataclass.py +39 -0
  94. secator/serializers/json.py +45 -0
  95. secator/serializers/regex.py +25 -0
  96. secator/tasks/__init__.py +8 -0
  97. secator/tasks/_categories.py +487 -0
  98. secator/tasks/arjun.py +113 -0
  99. secator/tasks/arp.py +53 -0
  100. secator/tasks/arpscan.py +70 -0
  101. secator/tasks/bbot.py +372 -0
  102. secator/tasks/bup.py +118 -0
  103. secator/tasks/cariddi.py +193 -0
  104. secator/tasks/dalfox.py +87 -0
  105. secator/tasks/dirsearch.py +84 -0
  106. secator/tasks/dnsx.py +186 -0
  107. secator/tasks/feroxbuster.py +93 -0
  108. secator/tasks/ffuf.py +135 -0
  109. secator/tasks/fping.py +85 -0
  110. secator/tasks/gau.py +102 -0
  111. secator/tasks/getasn.py +60 -0
  112. secator/tasks/gf.py +36 -0
  113. secator/tasks/gitleaks.py +96 -0
  114. secator/tasks/gospider.py +84 -0
  115. secator/tasks/grype.py +109 -0
  116. secator/tasks/h8mail.py +75 -0
  117. secator/tasks/httpx.py +167 -0
  118. secator/tasks/jswhois.py +36 -0
  119. secator/tasks/katana.py +203 -0
  120. secator/tasks/maigret.py +87 -0
  121. secator/tasks/mapcidr.py +42 -0
  122. secator/tasks/msfconsole.py +179 -0
  123. secator/tasks/naabu.py +85 -0
  124. secator/tasks/nmap.py +487 -0
  125. secator/tasks/nuclei.py +151 -0
  126. secator/tasks/search_vulns.py +225 -0
  127. secator/tasks/searchsploit.py +109 -0
  128. secator/tasks/sshaudit.py +299 -0
  129. secator/tasks/subfinder.py +48 -0
  130. secator/tasks/testssl.py +283 -0
  131. secator/tasks/trivy.py +130 -0
  132. secator/tasks/trufflehog.py +240 -0
  133. secator/tasks/urlfinder.py +100 -0
  134. secator/tasks/wafw00f.py +106 -0
  135. secator/tasks/whois.py +34 -0
  136. secator/tasks/wpprobe.py +116 -0
  137. secator/tasks/wpscan.py +202 -0
  138. secator/tasks/x8.py +94 -0
  139. secator/tasks/xurlfind3r.py +83 -0
  140. secator/template.py +294 -0
  141. secator/thread.py +24 -0
  142. secator/tree.py +196 -0
  143. secator/utils.py +922 -0
  144. secator/utils_test.py +297 -0
  145. secator/workflows/__init__.py +29 -0
  146. secator-0.22.0.dist-info/METADATA +447 -0
  147. secator-0.22.0.dist-info/RECORD +150 -0
  148. secator-0.22.0.dist-info/WHEEL +4 -0
  149. secator-0.22.0.dist-info/entry_points.txt +2 -0
  150. secator-0.22.0.dist-info/licenses/LICENSE +60 -0
@@ -0,0 +1,98 @@
1
+ type: workflow
2
+ name: url_crawl
3
+ alias: urlcrawl
4
+ description: URL crawl (fast)
5
+ long_description: |
6
+ Rapidly crawls and discovers URLs from a target website using multiple crawling engines.
7
+ Supports both passive sources (collecting from external databases) and active crawlers
8
+ (spidering the website directly). Identifies interesting patterns, endpoints, and parameters.
9
+ Can optionally hunt for secrets in HTTP responses and probe URLs for additional information.
10
+ tags: [http, crawl]
11
+ input_types:
12
+ - url
13
+
14
+ options:
15
+ passive:
16
+ is_flag: True
17
+ help: Passive only (no requests to targets)
18
+ default: False
19
+ short: passive
20
+
21
+ active:
22
+ is_flag: True
23
+ help: Active only (no passive sources)
24
+ default: False
25
+ short: active
26
+
27
+ crawlers:
28
+ type: list
29
+ help: "Crawlers to use (comma-separated) (passive: xurlfind3r, urlfinder, gau; active: katana, gospider, cariddi)"
30
+ default: ['xurlfind3r', 'katana']
31
+ internal: True
32
+
33
+ hunt_secrets:
34
+ is_flag: True
35
+ help: Hunt secrets in HTTP responses (trufflehog)
36
+ default: False
37
+ short: hs
38
+
39
+ default_options:
40
+ match_codes: 200,204,301,302,307,401,403,405,500
41
+
42
+ tasks:
43
+ _group/crawl:
44
+ xurlfind3r:
45
+ description: Crawl URLs from passive sources
46
+ if: "'xurlfind3r' in opts.crawlers and not opts.active"
47
+
48
+ urlfinder:
49
+ description: Crawl URLs from passive sources
50
+ if: "'urlfinder' in opts.crawlers and not opts.active"
51
+
52
+ gau:
53
+ description: Crawl URLs from passive sources
54
+ if: "'gau' in opts.crawlers and not opts.active"
55
+
56
+ katana:
57
+ description: Crawl URLs
58
+ if: "'katana' in opts.crawlers and not opts.passive"
59
+
60
+ gospider:
61
+ description: Crawl URLs
62
+ if: "'gospider' in opts.crawlers and not opts.passive"
63
+
64
+ cariddi:
65
+ description: Hunt URLs patterns
66
+ info: True
67
+ secrets: True
68
+ errors: True
69
+ juicy_extensions: 1
70
+ juicy_endpoints: True
71
+ if: "'cariddi' in opts.crawlers and not opts.passive"
72
+
73
+ httpx:
74
+ description: Run HTTP probes on passive URLs
75
+ tech_detect: True
76
+ filter_codes: 404
77
+ targets_:
78
+ - target.name
79
+ - type: url
80
+ field: url
81
+ condition: item.status_code == 0
82
+ if: not opts.passive
83
+
84
+ _group/data_hunt:
85
+ trufflehog:
86
+ description: Find secrets in HTTP responses
87
+ targets_:
88
+ - type: url
89
+ field: stored_response_path
90
+ condition: item.stored_response_path != ''
91
+ if: opts.hunt_secrets and not opts.passive
92
+ maigret:
93
+ description: Hunt email addresses found
94
+ targets_:
95
+ - type: tag
96
+ field: value
97
+ condition: item.name == 'email_address'
98
+ if: opts.hunt_secrets and not opts.passive
@@ -0,0 +1,62 @@
1
+ type: workflow
2
+ name: url_dirsearch
3
+ alias: dirfind
4
+ description: URL directory search
5
+ long_description: |
6
+ Searches for hidden directories and files on web servers using content discovery techniques.
7
+ Probes URLs for directory listings, optionally bruteforces directories and crawls discovered
8
+ directory contents. Can hunt for sensitive files and secrets in HTTP responses.
9
+ Helpful for finding hidden admin panels, backup files, and exposed directories.
10
+ tags: [http, dir]
11
+ input_types:
12
+ - url
13
+
14
+ options:
15
+ hunt_secrets:
16
+ is_flag: True
17
+ help: Hunt secrets in HTTP responses (trufflehog)
18
+ default: False
19
+ short: hs
20
+
21
+ hunt_files:
22
+ is_flag: True
23
+ help: Hunt files in HTTP directories
24
+ default: False
25
+ short: cf
26
+
27
+ hunt_dirs:
28
+ is_flag: True
29
+ help: Hunt HTTP directories (ffuf)
30
+ default: False
31
+ short: fd
32
+
33
+ tasks:
34
+ httpx:
35
+ description: Run HTTP probes on URLs
36
+ tech_detect: True
37
+
38
+ ffuf:
39
+ description: Search for HTTP directories
40
+ auto_calibration: True
41
+ wordlist: directory_list_small
42
+ match_regex: '<title>Index of'
43
+ targets_:
44
+ - type: target
45
+ field: '{name}/FUZZ'
46
+ if: opts.hunt_dirs
47
+
48
+ katana:
49
+ description: Crawl files from HTTP directories
50
+ targets_:
51
+ - type: url
52
+ field: url
53
+ condition: item.is_directory
54
+ if: opts.hunt_files
55
+
56
+ trufflehog:
57
+ description: Find secrets in HTTP responses
58
+ targets_:
59
+ - type: url
60
+ field: stored_response_path
61
+ condition: item.stored_response_path != ''
62
+ if: opts.hunt_files
@@ -0,0 +1,68 @@
1
+ type: workflow
2
+ name: url_fuzz
3
+ alias: urlfuzz
4
+ description: URL fuzz (slow)
5
+ long_description: |
6
+ Performs comprehensive fuzzing of URLs to discover hidden content and directories.
7
+ Uses multiple fuzzing engines (dirsearch, feroxbuster, ffuf) with intelligent calibration
8
+ to filter false positives. Probes discovered URLs, captures screenshots when configured,
9
+ and optionally hunts for secrets in HTTP responses. Thorough but time-intensive.
10
+ tags: [http, fuzz]
11
+ input_types:
12
+ - url
13
+
14
+ default_options:
15
+ auto_calibration: true
16
+ follow_redirect: true
17
+
18
+ options:
19
+ fuzzers:
20
+ type: list
21
+ required: True
22
+ help: "Fuzzers to use (comma-separated) (dirsearch, feroxbuster, ffuf)"
23
+ default: ['ffuf']
24
+
25
+ hunt_secrets:
26
+ is_flag: True
27
+ help: Hunt secrets in HTTP responses (trufflehog)
28
+ default: False
29
+ short: hs
30
+
31
+ tasks:
32
+ httpx/1:
33
+ description: Run HTTP probes on URLs
34
+ tech_detect: True
35
+
36
+ _group/fuzz:
37
+ dirsearch:
38
+ description: Fuzz URLs
39
+ if: "'dirsearch' in opts.fuzzers"
40
+
41
+ feroxbuster:
42
+ description: Fuzz URLs
43
+ if: "'feroxbuster' in opts.fuzzers"
44
+
45
+ ffuf:
46
+ description: Fuzz URLs
47
+ if: "'ffuf' in opts.fuzzers"
48
+ targets_:
49
+ - type: target
50
+ field: '{name}/FUZZ'
51
+
52
+ httpx/2:
53
+ description: Run HTTP probes on crawled URLs
54
+ tech_detect: True
55
+ screenshot: True
56
+ targets_:
57
+ type: url
58
+ field: url
59
+ condition: opts.screenshot or opts.headless
60
+ # enrich: true # TODO: add enrich capabilities
61
+
62
+ trufflehog:
63
+ description: Find secrets in HTTP responses
64
+ targets_:
65
+ - type: url
66
+ field: stored_response_path
67
+ condition: item.stored_response_path != ''
68
+ if: opts.hunt_secrets
@@ -0,0 +1,66 @@
1
+ type: workflow
2
+ name: url_params_fuzz
3
+ alias: url_params_fuzz
4
+ description: Extract parameters from an URL and fuzz them
5
+ long_description: |
6
+ Identifies and tests URL parameters for vulnerabilities through intelligent fuzzing.
7
+ Extracts parameters from URLs using multiple techniques, then fuzzes them with various payloads
8
+ to discover potential security issues. Probes fuzzed URLs to verify results and optionally
9
+ hunts for secrets in responses. Effective for finding hidden parameters and testing input validation.
10
+ tags: [http, fuzz]
11
+ input_types:
12
+ - url
13
+
14
+ options:
15
+ hunt_secrets:
16
+ is_flag: True
17
+ help: Hunt secrets in HTTP responses (trufflehog)
18
+ default: False
19
+ short: hs
20
+
21
+ tasks:
22
+ httpx/1:
23
+ description: Probe URLs
24
+ follow_redirect: True
25
+
26
+ _group/extract_params:
27
+ arjun:
28
+ description: Extract parameters from URLs
29
+ wordlist: http_params
30
+ targets_:
31
+ - type: url
32
+ field: '{url}/'
33
+ condition: "'?' not in url.url"
34
+
35
+ x8:
36
+ description: Bruteforce URL params
37
+ wordlist: http_params
38
+ targets_:
39
+ - type: url
40
+ field: '{url}/'
41
+ condition: "'?' not in url.url"
42
+
43
+ ffuf:
44
+ description: Fuzz URL params
45
+ wordlist: https://raw.githubusercontent.com/trickest/wordlists/refs/heads/main/cloud/levels/level1.txt
46
+ auto_calibration: true
47
+ follow_redirect: true
48
+ targets_:
49
+ - type: tag
50
+ field: '{match}?{value}=FUZZ'
51
+ condition: item._source.startswith('arjun') or item._source.startswith('x8')
52
+
53
+ httpx:
54
+ description: Probe fuzzed URLs
55
+ targets_:
56
+ - type: url
57
+ field: url
58
+ condition: item._source.startswith('ffuf')
59
+
60
+ trufflehog:
61
+ description: Find secrets in HTTP responses
62
+ targets_:
63
+ - type: url
64
+ field: stored_response_path
65
+ condition: item.stored_response_path != ''
66
+ if: opts.hunt_secrets
@@ -0,0 +1,23 @@
1
+ type: workflow
2
+ name: url_secrets_hunt
3
+ alias: ush
4
+ description: Hunt secrets in URLs
5
+ long_description: |
6
+ Searches for exposed secrets, credentials, and sensitive information in web content.
7
+ Probes URLs and analyzes HTTP responses for API keys, passwords, tokens, private keys,
8
+ and other confidential data. Uses TruffleHog to detect various secret patterns.
9
+ Critical for identifying accidental credential exposure and sensitive data leaks.
10
+ input_types:
11
+ - url
12
+
13
+ tasks:
14
+ httpx:
15
+ description: Run HTTP probes on URLs
16
+ tech_detect: True
17
+
18
+ trufflehog:
19
+ description: Find secrets in HTTP responses
20
+ targets_:
21
+ - type: url
22
+ field: stored_response_path
23
+ condition: item.stored_response_path != ''
@@ -0,0 +1,91 @@
1
+ type: workflow
2
+ name: url_vuln
3
+ alias: url_vuln
4
+ description: URL vulnerability scan (gf, dalfox)
5
+ long_description: |
6
+ Scans URLs for common web vulnerabilities using pattern matching and automated testing tools.
7
+ Identifies potential XSS, LFI, SSRF, RCE, IDOR, and other vulnerability indicators in URL parameters.
8
+ Tests discovered vulnerable patterns with specialized tools like Dalfox for XSS exploitation.
9
+ Optionally runs comprehensive nuclei scans for additional HTTP vulnerability detection.
10
+ tags: [http, vulnerability]
11
+ input_types:
12
+ - url
13
+
14
+ options:
15
+ passive:
16
+ is_flag: True
17
+ help: Passive only (no requests to targets)
18
+ default: False
19
+ short: ps
20
+
21
+ nuclei:
22
+ is_flag: True
23
+ default: False
24
+ help: Run nuclei on tagged URLs (slow)
25
+
26
+ tasks:
27
+ _group/pattern_analysis:
28
+ gf/xss:
29
+ description: Hunt XSS params
30
+ pattern: xss
31
+
32
+ gf/lfi:
33
+ description: Hunt LFI params
34
+ pattern: lfi
35
+
36
+ gf/ssrf:
37
+ description: Hunt SSRF params
38
+ pattern: ssrf
39
+
40
+ gf/rce:
41
+ description: Hunt RCE params
42
+ pattern: rce
43
+
44
+ gf/interestingparams:
45
+ description: Hunt interest params
46
+ pattern: interestingparams
47
+
48
+ gf/idor:
49
+ description: Hunt Idor params
50
+ pattern: idor
51
+
52
+ gf/debug_logic:
53
+ description: Hunt debug params
54
+ pattern: debug_logic
55
+
56
+ _group/vuln_scan:
57
+ dalfox:
58
+ description: Attack XSS vulnerabilities
59
+ targets_:
60
+ - type: tag
61
+ field: match
62
+ condition: item._source.startswith("gf")
63
+ if: not opts.passive
64
+
65
+ nuclei:
66
+ description: Search for HTTP vulns
67
+ exclude_tags: [network, ssl, file, dns, osint, token-spray, headers]
68
+ targets_:
69
+ - type: target
70
+ field: name
71
+ - type: tag
72
+ field: match
73
+ condition: item._source.startswith("gf")
74
+ if: opts.nuclei and not opts.passive
75
+ # TODO: Add support for SQLMap
76
+ # sqlmap:
77
+ # description: Attack SQLI vulnerabilities
78
+ # targets_:
79
+ # - type: tag
80
+ # field: match
81
+ # condition: item.name in ['sqli']
82
+
83
+ # TODO: Make this work, need transform functions to replace a parameter fetched dynamically by the keyword 'FUZZ'
84
+ # ffuf:
85
+ # description: Attack LFI vulnerabilities
86
+ # targets_:
87
+ # - type: tag
88
+ # field: match
89
+ # transform:
90
+ # qsreplace: FUZZ
91
+ # condition: item.name in ['lfi']
@@ -0,0 +1,29 @@
1
+ type: workflow
2
+ name: user_hunt
3
+ alias: userhunt
4
+ description: User account search
5
+ long_description: |
6
+ Searches for user accounts and associated information across various online platforms and services.
7
+ Takes usernames, email addresses, or other identifiers and queries multiple sources to find
8
+ associated accounts, password leaks, and online profiles. Useful for OSINT investigations,
9
+ credential stuffing prevention checks, and understanding a user's digital footprint.
10
+ tags: [user_account]
11
+ input_types:
12
+ - slug
13
+ - string
14
+ - email
15
+
16
+ tasks:
17
+ _group/hunt_users:
18
+ maigret:
19
+ description: Hunt user accounts
20
+ targets_:
21
+ - type: target
22
+ field: name
23
+ condition: target.type != 'email'
24
+ h8mail:
25
+ description: Find password leaks
26
+ targets_:
27
+ - type: target
28
+ field: name
29
+ condition: target.type == 'email'
@@ -0,0 +1,38 @@
1
+ type: workflow
2
+ name: wordpress
3
+ alias: wordpress
4
+ description: Wordpress vulnerability scan
5
+ long_description: |
6
+ Specialized security assessment for WordPress websites and installations.
7
+ Identifies WordPress version, installed themes and plugins, known vulnerabilities,
8
+ misconfigurations, and weak configurations. Uses multiple WordPress-specific tools
9
+ to provide comprehensive coverage. Critical for WordPress site security audits.
10
+ tags: [http, wordpress, vulnerability]
11
+ input_types:
12
+ - url
13
+ - ip
14
+ - host
15
+ - host:port
16
+
17
+ tasks:
18
+ httpx:
19
+ description: URL probe
20
+ tech_detect: True
21
+ follow_redirect: True
22
+
23
+ _group/hunt_wordpress:
24
+ wpscan:
25
+ description: WPScan
26
+ targets_:
27
+ - url.url
28
+
29
+ wpprobe:
30
+ description: WPProbe
31
+ targets_:
32
+ - url.url
33
+
34
+ nuclei:
35
+ description: Nuclei Wordpress scan
36
+ tags: [wordpress]
37
+ targets_:
38
+ - url.url