secator 0.3.4__tar.gz → 0.3.6__tar.gz
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-0.3.4 → secator-0.3.6}/CHANGELOG.md +23 -0
- {secator-0.3.4 → secator-0.3.6}/PKG-INFO +5 -3
- {secator-0.3.4 → secator-0.3.6}/README.md +2 -2
- secator-0.3.6/SECURITY.md +14 -0
- {secator-0.3.4 → secator-0.3.6}/pyproject.toml +3 -2
- {secator-0.3.4 → secator-0.3.6}/secator/celery.py +3 -2
- {secator-0.3.4 → secator-0.3.6}/secator/decorators.py +16 -9
- {secator-0.3.4 → secator-0.3.6}/secator/definitions.py +2 -2
- {secator-0.3.4 → secator-0.3.6}/secator/installer.py +2 -2
- {secator-0.3.4 → secator-0.3.6}/secator/runners/_base.py +1 -2
- {secator-0.3.4 → secator-0.3.6}/secator/runners/scan.py +0 -1
- {secator-0.3.4 → secator-0.3.6}/secator/runners/task.py +0 -1
- {secator-0.3.4 → secator-0.3.6}/secator/runners/workflow.py +0 -1
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/searchsploit.py +0 -1
- {secator-0.3.4 → secator-0.3.6}/secator/utils.py +1 -2
- secator-0.3.4/SECURITY.md +0 -21
- {secator-0.3.4 → secator-0.3.6}/.flake8 +0 -0
- {secator-0.3.4 → secator-0.3.6}/.gitignore +0 -0
- {secator-0.3.4 → secator-0.3.6}/CONTRIBUTING.md +0 -0
- {secator-0.3.4 → secator-0.3.6}/Dockerfile +0 -0
- {secator-0.3.4 → secator-0.3.6}/LICENSE +0 -0
- {secator-0.3.4 → secator-0.3.6}/cloudbuild.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/aliases.cast +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/aliases.gif +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/demo.cast +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/demo.gif +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/fmt.cast +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/fmt.gif +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/help.png +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/input.cast +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/input.gif +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/pipe.cast +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/pipe.gif +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/short_demo.cast +0 -0
- {secator-0.3.4 → secator-0.3.6}/images/short_demo.gif +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/download_cves.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/install.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/install_asciinema.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/install_go.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/install_ruby.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/msf/exploit_cve.rc +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/msf/ftp_anonymous.rc +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/msf/ftp_version.rc +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/msf/ftp_vsftpd_234_backdoor.rc +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/msf/redis.rc +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/msfinstall.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/stories/STORY.md +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/stories/aliases.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/stories/demo.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/stories/fmt.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/stories/input.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/stories/pipe.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/scripts/stories/short_demo.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/.gitignore +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/cli.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/config.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/profiles/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/profiles/aggressive.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/profiles/default.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/profiles/stealth.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/scans/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/scans/domain.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/scans/host.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/scans/network.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/scans/subdomain.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/scans/url.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/cidr_recon.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/code_scan.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/host_recon.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/port_scan.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/subdomain_recon.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/url_crawl.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/url_dirsearch.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/url_fuzz.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/url_nuclei.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/url_vuln.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/user_hunt.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/configs/workflows/wordpress.yaml +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/exporters/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/exporters/_base.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/exporters/csv.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/exporters/gdrive.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/exporters/json.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/exporters/table.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/exporters/txt.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/hooks/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/hooks/mongodb.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/_base.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/exploit.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/ip.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/port.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/progress.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/record.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/subdomain.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/tag.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/target.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/url.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/user_account.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/output_types/vulnerability.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/report.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/rich.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/runners/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/runners/_helpers.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/runners/command.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/serializers/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/serializers/dataclass.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/serializers/json.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/serializers/regex.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/_categories.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/cariddi.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/dalfox.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/dirsearch.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/dnsx.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/dnsxbrute.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/feroxbuster.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/ffuf.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/fping.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/gau.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/gf.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/gospider.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/grype.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/h8mail.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/httpx.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/katana.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/maigret.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/mapcidr.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/msfconsole.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/naabu.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/nmap.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/nuclei.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/subfinder.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/tasks/wpscan.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/secator/utils_test.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/fixtures/h8mail_breach.txt +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/fixtures/msfconsole_input.rc +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/fixtures/nmap_output.xml +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/inputs.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/outputs.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/setup.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/teardown.sh +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/test_scans.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/test_tasks.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/test_workflows.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/wordlist.txt +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/wordlist_dns.txt +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/wordpress_toolbox/Dockerfile +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/integration/wordpress_toolbox/Makefile +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/performance/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/performance/loadtester.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/unit/__init__.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/unit/test_celery.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/unit/test_scans.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/unit/test_serializers.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/unit/test_tasks.py +0 -0
- {secator-0.3.4 → secator-0.3.6}/tests/unit/test_workflows.py +0 -0
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.6](https://github.com/freelabz/secator/compare/v0.3.5...v0.3.6) (2024-04-17)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* broken reports folder on remote workers ([#307](https://github.com/freelabz/secator/issues/307)) ([9a7a1f1](https://github.com/freelabz/secator/commit/9a7a1f1c449c688701b02be66e98d3434073bbb0))
|
|
9
|
+
* searchsploit install ([#306](https://github.com/freelabz/secator/issues/306)) ([040cfaf](https://github.com/freelabz/secator/commit/040cfaf6968ae120241fdd6a74a9a6cd5fa0631d))
|
|
10
|
+
|
|
11
|
+
## [0.3.5](https://github.com/freelabz/secator/compare/v0.3.4...v0.3.5) (2024-04-17)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* Celery control folder ([#298](https://github.com/freelabz/secator/issues/298)) ([3cbc0a3](https://github.com/freelabz/secator/commit/3cbc0a37d06c9b3a20eb0005b1cb68b484d22d15))
|
|
17
|
+
* remove pkg_resources in favor of packaging ([#304](https://github.com/freelabz/secator/issues/304)) ([6cf478c](https://github.com/freelabz/secator/commit/6cf478c1f1c4b7363d1710e634686ede8a209594))
|
|
18
|
+
* typo in `requires-python` in pyproject.toml ([#303](https://github.com/freelabz/secator/issues/303)) ([7a7766c](https://github.com/freelabz/secator/commit/7a7766caba0faa98406764fa1bb5ad2eae346302))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Documentation
|
|
22
|
+
|
|
23
|
+
* update README.md ([8f1b1c1](https://github.com/freelabz/secator/commit/8f1b1c1cb852a88d80aa15379962aaa36afc7635))
|
|
24
|
+
* update SECURITY.md ([6518dd6](https://github.com/freelabz/secator/commit/6518dd646c0358e661e186edf28b4fb0494bf712))
|
|
25
|
+
|
|
3
26
|
## [0.3.4](https://github.com/freelabz/secator/compare/v0.3.3...v0.3.4) (2024-04-15)
|
|
4
27
|
|
|
5
28
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: secator
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.6
|
|
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
|
|
@@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.9
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Requires-Python: >=3.8
|
|
21
22
|
Requires-Dist: bs4<1
|
|
22
23
|
Requires-Dist: celery<6
|
|
23
24
|
Requires-Dist: cpe<2
|
|
@@ -27,6 +28,7 @@ Requires-Dist: furl<3
|
|
|
27
28
|
Requires-Dist: humanize<5
|
|
28
29
|
Requires-Dist: ifaddr<1
|
|
29
30
|
Requires-Dist: jinja2<4
|
|
31
|
+
Requires-Dist: packaging<25
|
|
30
32
|
Requires-Dist: python-dotenv<2
|
|
31
33
|
Requires-Dist: pyyaml<7
|
|
32
34
|
Requires-Dist: requests<3
|
|
@@ -175,14 +177,14 @@ wget -O - https://raw.githubusercontent.com/freelabz/secator/main/scripts/instal
|
|
|
175
177
|
<summary>Docker</summary>
|
|
176
178
|
|
|
177
179
|
```sh
|
|
178
|
-
docker run -it --rm --net=host
|
|
180
|
+
docker run -it --rm --net=host -v $HOME/.secator:/root/.secator freelabz/secator --help
|
|
179
181
|
```
|
|
180
182
|
|
|
181
183
|
The volume mount `-v` is necessary to save all `secator` reports to your host machine.
|
|
182
184
|
|
|
183
185
|
You can set up an alias to facilitate running `secator` from Docker:
|
|
184
186
|
```sh
|
|
185
|
-
alias secator="docker run -it --rm --net=host
|
|
187
|
+
alias secator="docker run -it --rm --net=host -v $HOME/.secator:/root/.secator freelabz/secator"
|
|
186
188
|
secator --help
|
|
187
189
|
```
|
|
188
190
|
|
|
@@ -116,14 +116,14 @@ wget -O - https://raw.githubusercontent.com/freelabz/secator/main/scripts/instal
|
|
|
116
116
|
<summary>Docker</summary>
|
|
117
117
|
|
|
118
118
|
```sh
|
|
119
|
-
docker run -it --rm --net=host
|
|
119
|
+
docker run -it --rm --net=host -v $HOME/.secator:/root/.secator freelabz/secator --help
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
The volume mount `-v` is necessary to save all `secator` reports to your host machine.
|
|
123
123
|
|
|
124
124
|
You can set up an alias to facilitate running `secator` from Docker:
|
|
125
125
|
```sh
|
|
126
|
-
alias secator="docker run -it --rm --net=host
|
|
126
|
+
alias secator="docker run -it --rm --net=host -v $HOME/.secator:/root/.secator freelabz/secator"
|
|
127
127
|
secator --help
|
|
128
128
|
```
|
|
129
129
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Versions
|
|
4
|
+
|
|
5
|
+
Use this section to tell people about which versions of your project are
|
|
6
|
+
currently being supported with security updates.
|
|
7
|
+
|
|
8
|
+
| Version | Supported |
|
|
9
|
+
| ------- | ------------------ |
|
|
10
|
+
| 0.0.x | :white_check_mark: |
|
|
11
|
+
|
|
12
|
+
## Reporting a Vulnerability
|
|
13
|
+
|
|
14
|
+
To report a new vulnerability, please open an issue with the title "security: report <issue_name>".
|
|
@@ -4,11 +4,11 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "secator"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.6"
|
|
8
8
|
authors = [{ name = "FreeLabz", email = "sales@freelabz.com" }]
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
description = "The pentester's swiss knife."
|
|
11
|
-
|
|
11
|
+
requires-python = ">=3.8"
|
|
12
12
|
keywords = [
|
|
13
13
|
'cybersecurity',
|
|
14
14
|
'recon',
|
|
@@ -39,6 +39,7 @@ dependencies = [
|
|
|
39
39
|
"humanize < 5",
|
|
40
40
|
"ifaddr < 1",
|
|
41
41
|
"jinja2 < 4",
|
|
42
|
+
"packaging < 25",
|
|
42
43
|
"python-dotenv < 2",
|
|
43
44
|
"pyyaml < 7",
|
|
44
45
|
"requests < 3",
|
|
@@ -53,6 +53,7 @@ app.conf.update({
|
|
|
53
53
|
'broker_transport_options': {
|
|
54
54
|
'data_folder_in': CELERY_DATA_FOLDER,
|
|
55
55
|
'data_folder_out': CELERY_DATA_FOLDER,
|
|
56
|
+
'control_folder': CELERY_DATA_FOLDER,
|
|
56
57
|
'visibility_timeout': CELERY_BROKER_VISIBILITY_TIMEOUT,
|
|
57
58
|
},
|
|
58
59
|
'broker_connection_retry_on_startup': True,
|
|
@@ -416,6 +417,6 @@ def is_celery_worker_alive():
|
|
|
416
417
|
result = bool(result)
|
|
417
418
|
if result:
|
|
418
419
|
console.print('Celery worker is alive !', style='bold green')
|
|
419
|
-
|
|
420
|
-
|
|
420
|
+
else:
|
|
421
|
+
console.print('No Celery worker alive.', style='bold orange1')
|
|
421
422
|
return result
|
|
@@ -24,7 +24,6 @@ RUNNER_OPTS = {
|
|
|
24
24
|
|
|
25
25
|
RUNNER_GLOBAL_OPTS = {
|
|
26
26
|
'sync': {'is_flag': True, 'help': 'Run tasks synchronously (automatic if no worker is alive)'},
|
|
27
|
-
'worker': {'is_flag': True, 'help': 'Run tasks in worker (automatic if worker is alive)'},
|
|
28
27
|
'proxy': {'type': str, 'help': 'HTTP proxy'},
|
|
29
28
|
'driver': {'type': str, 'help': 'Export real-time results. E.g: "mongodb"'}
|
|
30
29
|
# 'debug': {'type': int, 'default': 0, 'help': 'Debug mode'},
|
|
@@ -264,7 +263,6 @@ def register_runner(cli_endpoint, config):
|
|
|
264
263
|
def func(ctx, **opts):
|
|
265
264
|
opts.update(fmt_opts)
|
|
266
265
|
sync = opts['sync']
|
|
267
|
-
worker = opts['worker']
|
|
268
266
|
# debug = opts['debug']
|
|
269
267
|
ws = opts.pop('workspace')
|
|
270
268
|
driver = opts.pop('driver', '')
|
|
@@ -275,13 +273,22 @@ def register_runner(cli_endpoint, config):
|
|
|
275
273
|
# opts.update(unknown_opts)
|
|
276
274
|
targets = opts.pop(input_type)
|
|
277
275
|
targets = expand_input(targets)
|
|
278
|
-
if sync or show
|
|
276
|
+
if sync or show:
|
|
279
277
|
sync = True
|
|
280
|
-
|
|
281
|
-
sync = False
|
|
282
|
-
else: # automatically run in worker if it's alive
|
|
278
|
+
else:
|
|
283
279
|
from secator.celery import is_celery_worker_alive
|
|
284
|
-
|
|
280
|
+
worker_alive = is_celery_worker_alive()
|
|
281
|
+
if not worker_alive:
|
|
282
|
+
sync = True
|
|
283
|
+
else:
|
|
284
|
+
sync = False
|
|
285
|
+
from secator.definitions import CELERY_BROKER_URL, CELERY_RESULT_BACKEND
|
|
286
|
+
broker_protocol = CELERY_BROKER_URL.split('://')[0]
|
|
287
|
+
backend_protocol = CELERY_RESULT_BACKEND.split('://')[0]
|
|
288
|
+
if CELERY_BROKER_URL:
|
|
289
|
+
if (broker_protocol == 'redis' or backend_protocol == 'redis') and not ADDONS_ENABLED['redis']:
|
|
290
|
+
_get_rich_console().print('[bold red]Missing `redis` addon: please run `secator install addons redis`[/].')
|
|
291
|
+
sys.exit(1)
|
|
285
292
|
opts['sync'] = sync
|
|
286
293
|
opts.update({
|
|
287
294
|
'print_item': not sync,
|
|
@@ -293,8 +300,8 @@ def register_runner(cli_endpoint, config):
|
|
|
293
300
|
# Build hooks from driver name
|
|
294
301
|
hooks = {}
|
|
295
302
|
if driver == 'mongodb':
|
|
296
|
-
if not ADDONS_ENABLED['
|
|
297
|
-
_get_rich_console().print('[bold red]Missing
|
|
303
|
+
if not ADDONS_ENABLED['mongodb']:
|
|
304
|
+
_get_rich_console().print('[bold red]Missing `mongodb` addon: please run `secator install addons mongodb`[/].')
|
|
298
305
|
sys.exit(1)
|
|
299
306
|
from secator.hooks.mongodb import MONGODB_HOOKS
|
|
300
307
|
hooks = MONGODB_HOOKS
|
|
@@ -4,14 +4,14 @@ import os
|
|
|
4
4
|
import requests
|
|
5
5
|
|
|
6
6
|
from dotenv import find_dotenv, load_dotenv
|
|
7
|
-
from
|
|
7
|
+
from importlib.metadata import version
|
|
8
8
|
|
|
9
9
|
from secator.rich import console
|
|
10
10
|
|
|
11
11
|
load_dotenv(find_dotenv(usecwd=True), override=False)
|
|
12
12
|
|
|
13
13
|
# Globals
|
|
14
|
-
VERSION =
|
|
14
|
+
VERSION = version('secator')
|
|
15
15
|
ASCII = f"""
|
|
16
16
|
__
|
|
17
17
|
________ _________ _/ /_____ _____
|
|
@@ -259,7 +259,7 @@ def get_version_info(name, version_flag=None, github_handle=None, version=None):
|
|
|
259
259
|
Return:
|
|
260
260
|
dict: Version info.
|
|
261
261
|
"""
|
|
262
|
-
from
|
|
262
|
+
from packaging import version as _version
|
|
263
263
|
from secator.installer import GithubInstaller
|
|
264
264
|
info = {
|
|
265
265
|
'name': name,
|
|
@@ -287,7 +287,7 @@ def get_version_info(name, version_flag=None, github_handle=None, version=None):
|
|
|
287
287
|
if location:
|
|
288
288
|
info['installed'] = True
|
|
289
289
|
if version and latest_version:
|
|
290
|
-
if
|
|
290
|
+
if _version.parse(version) < _version.parse(latest_version):
|
|
291
291
|
info['status'] = 'outdated'
|
|
292
292
|
else:
|
|
293
293
|
info['status'] = 'latest'
|
|
@@ -111,8 +111,7 @@ class Runner:
|
|
|
111
111
|
# Determine report folder
|
|
112
112
|
default_reports_folder_base = f'{REPORTS_FOLDER}/{self.workspace_name}/{self.config.type}s'
|
|
113
113
|
_id = get_task_folder_id(default_reports_folder_base)
|
|
114
|
-
|
|
115
|
-
self.reports_folder = run_opts.get('reports_folder') or default_report_folder
|
|
114
|
+
self.reports_folder = f'{default_reports_folder_base}/{_id}'
|
|
116
115
|
|
|
117
116
|
# Make reports folders
|
|
118
117
|
os.makedirs(self.reports_folder, exist_ok=True)
|
|
@@ -28,7 +28,6 @@ class searchsploit(Command):
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
install_cmd = 'sudo git clone https://gitlab.com/exploit-database/exploitdb.git /opt/exploitdb || true && sudo ln -sf /opt/exploitdb/searchsploit /usr/local/bin/searchsploit' # noqa: E501
|
|
31
|
-
install_github_handle = 'rad10/SearchSploit.py'
|
|
32
31
|
proxychains = False
|
|
33
32
|
proxy_socks5 = False
|
|
34
33
|
proxy_http = False
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import importlib
|
|
2
1
|
import inspect
|
|
3
2
|
import itertools
|
|
4
3
|
import logging
|
|
@@ -195,7 +194,7 @@ def import_dynamic(cls_path, cls_root='Command'):
|
|
|
195
194
|
"""
|
|
196
195
|
try:
|
|
197
196
|
package, name = cls_path.rsplit(".", maxsplit=1)
|
|
198
|
-
cls = getattr(
|
|
197
|
+
cls = getattr(import_module(package), name)
|
|
199
198
|
root_cls = inspect.getmro(cls)[-2]
|
|
200
199
|
if root_cls.__name__ == cls_root:
|
|
201
200
|
return cls
|
secator-0.3.4/SECURITY.md
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Security Policy
|
|
2
|
-
|
|
3
|
-
## Supported Versions
|
|
4
|
-
|
|
5
|
-
Use this section to tell people about which versions of your project are
|
|
6
|
-
currently being supported with security updates.
|
|
7
|
-
|
|
8
|
-
| Version | Supported |
|
|
9
|
-
| ------- | ------------------ |
|
|
10
|
-
| 5.1.x | :white_check_mark: |
|
|
11
|
-
| 5.0.x | :x: |
|
|
12
|
-
| 4.0.x | :white_check_mark: |
|
|
13
|
-
| < 4.0 | :x: |
|
|
14
|
-
|
|
15
|
-
## Reporting a Vulnerability
|
|
16
|
-
|
|
17
|
-
Use this section to tell people how to report a vulnerability.
|
|
18
|
-
|
|
19
|
-
Tell them where to go, how often they can expect to get an update on a
|
|
20
|
-
reported vulnerability, what to expect if the vulnerability is accepted or
|
|
21
|
-
declined, etc.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|