mirror of https://github.com/OWASP/Nettacker.git
Compare commits
21 Commits
fe5c413b6c
...
7c1e2a5fb4
| Author | SHA1 | Date |
|---|---|---|
|
|
7c1e2a5fb4 | |
|
|
b6e9d433cc | |
|
|
e9a4eea0a4 | |
|
|
2b3e92f308 | |
|
|
e6fcd37532 | |
|
|
42e54e68aa | |
|
|
8288040729 | |
|
|
2d3f39c7a3 | |
|
|
677f13ec2d | |
|
|
f6f8c60f11 | |
|
|
8c538fa065 | |
|
|
e2b4d7c2d8 | |
|
|
ad76ce537a | |
|
|
0fa6c156e3 | |
|
|
a0831bc70a | |
|
|
bf43de5f71 | |
|
|
e934f748ee | |
|
|
2fea1e44f0 | |
|
|
1d37e0e3a2 | |
|
|
cd0d168ab4 | |
|
|
5d905edce4 |
|
|
@ -26,7 +26,7 @@ jobs:
|
|||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
- name: Run pre-commit
|
||||
|
|
@ -50,12 +50,12 @@ jobs:
|
|||
uses: actions/checkout@v5
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
uses: github/codeql-action/init@v4
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
uses: github/codeql-action/analyze@v4
|
||||
with:
|
||||
category: /language:${{ matrix.language }}
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ jobs:
|
|||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
|
|
@ -93,7 +93,7 @@ jobs:
|
|||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
|
|
@ -107,7 +107,7 @@ jobs:
|
|||
poetry build --no-interaction
|
||||
|
||||
- name: Upload package artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: dist
|
||||
path: dist
|
||||
|
|
@ -126,12 +126,12 @@ jobs:
|
|||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: Get package artifacts
|
||||
uses: actions/download-artifact@v5
|
||||
uses: actions/download-artifact@v6
|
||||
with:
|
||||
name: dist
|
||||
path: dist
|
||||
|
|
@ -319,7 +319,7 @@ jobs:
|
|||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Get package artifacts
|
||||
uses: actions/download-artifact@v5
|
||||
uses: actions/download-artifact@v6
|
||||
with:
|
||||
name: dist
|
||||
path: dist
|
||||
|
|
@ -345,7 +345,7 @@ jobs:
|
|||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Get package artifacts
|
||||
uses: actions/download-artifact@v5
|
||||
uses: actions/download-artifact@v6
|
||||
with:
|
||||
name: dist
|
||||
path: dist
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@ logs.txt
|
|||
results.*
|
||||
.owasp-nettacker*
|
||||
.nettacker/data*
|
||||
.data*
|
||||
*.sarif
|
||||
*.dd.json
|
||||
*.DS_Store
|
||||
*.swp
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
<!--
|
||||
Think of AGENTS.md as a README for AI agents: a dedicated, predictable place to provide the context and instructions to help AI coding agents work on your project.
|
||||
See https://agents.md for more info
|
||||
-->
|
||||
|
||||
# Repository Guidelines
|
||||
## Project Structure & Module Organization
|
||||
- Source: `nettacker/` (CLI: `nettacker/main.py`, API: `nettacker/api/`, core libs: `nettacker/core/`, modules: `nettacker/modules/`).
|
||||
- Entry points: `nettacker.py` (Python) and `poetry` script `nettacker`.
|
||||
- Tests: `tests/` (mirrors package layout: `tests/core/`, `tests/lib/`, etc.).
|
||||
- Docs & assets: `docs/`, `nettacker/web/static/`.
|
||||
- Runtime data (not for commit): `.nettacker/data/` (DB at `.nettacker/data/nettacker.db`, results in `.nettacker/data/results/`).
|
||||
|
||||
## Build, Test, and Development Commands
|
||||
- Install: `poetry install` (uses `pyproject.toml`).
|
||||
- Lint/format (all hooks): `make pre-commit` or `pre-commit run --all-files`.
|
||||
- Tests: `make test` or `poetry run pytest` (coverage configured via `pyproject.toml`).
|
||||
- Run CLI: `poetry run nettacker --help` or `python nettacker.py --help`.
|
||||
- Docker (web UI): `docker-compose up`.
|
||||
|
||||
## Coding Style & Naming Conventions
|
||||
- Python 3.9–3.12 supported. Use 4-space indents.
|
||||
- Line length: 99 chars (`ruff`, `ruff-format`, `isort` profile=black).
|
||||
- Names: modules/files `lower_snake_case`; functions/vars `lower_snake_case`; classes `PascalCase`; constants `UPPER_SNAKE_CASE`.
|
||||
- Keep functions small, typed where practical, and add docstrings for public APIs.
|
||||
|
||||
## Testing Guidelines
|
||||
- Framework: `pytest` (+ `pytest-asyncio`, `xdist`).
|
||||
- Location/pattern: place tests under `tests/`; name files `test_*.py`; parametrize where useful.
|
||||
- Coverage: enforced via `--cov=nettacker` (see `tool.pytest.ini_options`). Add tests with new features and for bug fixes.
|
||||
- Run subsets: `poetry run pytest -k <expr>`.
|
||||
|
||||
## Commit & Pull Request Guidelines
|
||||
- Commit messages: imperative tense, concise subject; reference issues (`Fixes #123`).
|
||||
- Before pushing: `pre-commit run --all-files` and `make test` must pass.
|
||||
- PRs: include a clear description, rationale, linked issue(s), test evidence (logs or screenshots for web UI), and update docs if behavior changes.
|
||||
|
||||
## Security & Configuration Tips
|
||||
- Legal/ethics: only scan assets you are authorized to test.
|
||||
- Secrets: never commit API keys, DBs, or results; `.nettacker/data/` is runtime-only.
|
||||
- Config: defaults in `nettacker/config.py` (API key, DB path, paths). Review sensitive headers list before logging.
|
||||
|
|
@ -126,4 +126,4 @@ _____________
|
|||
|
||||
[](https://starchart.cc/OWASP/Nettacker)
|
||||
|
||||
|
||||
<img alt="" referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=8e922d16-445a-4c63-b4cf-5152fbbaf7fd" />
|
||||
|
|
|
|||
|
|
@ -0,0 +1,78 @@
|
|||
## OWASP Nettacker Codebase Overview
|
||||
OWASP Nettacker is an open‑source, Python‑based framework for automated penetration testing and information gathering. It supports modular tasks such as port scanning, service detection, subdomain enumeration, vulnerability scans, and credential brute forcing, all driven by a unified CLI, REST API, and Web UI.
|
||||
|
||||
|
||||
## Project layout
|
||||
|
||||
```
|
||||
.
|
||||
├── docs
|
||||
├── nettacker
|
||||
│ ├── api
|
||||
│ ├── core
|
||||
│ │ ├── lib
|
||||
│ │ └── utils
|
||||
│ ├── database
|
||||
│ ├── lib
|
||||
│ │ ├── compare_report
|
||||
│ │ ├── graph
|
||||
│ │ │ ├── d3_tree_v1
|
||||
│ │ │ └── d3_tree_v2
|
||||
│ │ ├── html_log
|
||||
│ │ ├── icmp
|
||||
│ │ └── payloads
|
||||
│ │ ├── User-Agents
|
||||
│ │ ├── passwords
|
||||
│ │ └── wordlists
|
||||
│ ├── locale
|
||||
│ ├── modules
|
||||
│ │ ├── brute
|
||||
│ │ ├── scan
|
||||
│ │ └── vuln
|
||||
│ └── web
|
||||
│ └── static
|
||||
│ ├── css
|
||||
│ ├── fonts
|
||||
│ ├── img
|
||||
│ │ └── flags
|
||||
│ │ ├── 1x1
|
||||
│ │ └── 4x3
|
||||
│ ├── js
|
||||
│ └── report
|
||||
└── tests
|
||||
├── api
|
||||
├── core
|
||||
│ ├── lib
|
||||
│ └── utils
|
||||
├── database
|
||||
└── lib
|
||||
└── payloads
|
||||
|
||||
```
|
||||
|
||||
- **Entry point** – `nettacker/main.py` creates a `Nettacker` application instance and runs it when invoked via the provided script or CLI
|
||||
- **Core engine (`nettacker/core`)**
|
||||
- `app.py` orchestrates scans: parsing arguments, expanding targets (including IP ranges and subdomains), launching multiprocess/multithread modules, and generating reports
|
||||
- `module.py` loads YAML-defined modules, applies service discovery results, expands payload loops, and dispatches protocol-specific engines in threaded fashion
|
||||
- `arg_parser.py`, `ip.py`, `messages.py`, and `utils` provide CLI parsing, IP range handling, internationalized messages, and common helpers
|
||||
- Protocol engines reside in `core/lib` (e.g., HTTP, FTP, SSH, SMTP, socket) and are invoked by modules
|
||||
- **Modules (`nettacker/modules`)** – Scanning logic is defined declaratively in YAML under three categories (`brute`, `scan`, `vuln`). Each module contains an `info` block and a list of `payloads` that specify library, request parameters, fuzzing rules, and response conditions. Example: `dir_scan` performs directory discovery over HTTP using wordlists and response conditions
|
||||
- **Database layer (`nettacker/database`)** – Uses SQLAlchemy to interface with SQLite, MySQL, or PostgreSQL for persisting events and reports
|
||||
- **API & Web UI (`nettacker/api`, `nettacker/web`)** – Flask-based REST API plus static assets enabling web‑based scan management
|
||||
- **Supporting libraries (`nettacker/lib`)** – Reporting helpers, ICMP tools, graph generation, and payload wordlists
|
||||
- **Configuration** – `config.py` defines default paths, database settings, and runtime options
|
||||
- **Tests** – The `tests` directory includes unit tests and validation checks; for example, `test_yaml_regexes.py` ensures regex definitions in YAML modules compile correctly
|
||||
- **Build & dependencies** – `pyproject.toml` defines the project as a Poetry package and lists dependencies such as `aiohttp`, `multiprocess`, `paramiko`, and `sqlalchemy`
|
||||
|
||||
## Important concepts
|
||||
- **Modular architecture:** Modules are YAML files; the engine interprets them and runs protocol-specific steps.
|
||||
- **Target expansion:** Before scanning, the engine normalizes URLs, enumerates IP ranges, resolves subdomains, and runs preliminary checks like ICMP and port scans
|
||||
- **Service discovery:** Results from `port_scan` feed into subsequent modules, allowing conditional execution based on discovered services. Service discovery can be turned off during scans using `-d` or `--skip-service-discovery` run-time option.
|
||||
- **Concurrency:** Scans are distributed across processes and threads for performance, with configurable limits per host and module using the `-t` and `-M` runtime options. The requests can be rate-limited using the `-w` option.
|
||||
|
||||
## Where to go next
|
||||
- **Documentation:** Review `docs/Installation.md` and `docs/Usage.md` for setup and basic usage; `docs/Modules.md` explains module types and parameters; `docs/Developers.md` covers contribution guidelines and how to add languages or modules
|
||||
- **Explore modules:** Study YAML files under `nettacker/modules/*` to see how scans, brute-force checks, and vulnerability tests are structured.
|
||||
- **Understand protocol engines:** Read files in `nettacker/core/lib/` to learn how HTTP, socket, and other protocol interactions are implemented.
|
||||
- **Run locally:** Use the CLI (`nettacker`) or Docker instructions in [Installation](Installation.md) and [Usage](Usage.md)
|
||||
- **Contribute:** Follow the guidelines in `docs/Developers.md` and run `make pre-commit` and `make test` before submitting changes.
|
||||
|
|
@ -19,6 +19,7 @@ ________
|
|||
|
||||
These are the guidelines you need to keep in mind while contributing:
|
||||
|
||||
* Start by familiarising yourself with the Nettacker Codebase: [Codebase Overview](CodebaseOverview.md)
|
||||
* Use the automated checks: run `make pre-commit` and `make test`
|
||||
* Thoroughly test your code locally.
|
||||
* Be sure to add/update related documentation.
|
||||
|
|
@ -44,8 +45,8 @@ OWASP Nettacker is using multi-language libraries (default English) to create a
|
|||
|
||||
In some cases language library does not exist, you can create a new file and add it to the framework.
|
||||
|
||||
* 1- Goto `lib/messages`
|
||||
* 2- Name your message library e.g. `fa.yaml`
|
||||
* 1- Goto `nettacker/locale`
|
||||
* 2- Name your message library in accordance with the ISO two-letter code e.g. `fa.yaml`
|
||||
* 3- Copy the default language lib (`en.yaml`) and start your translation.
|
||||
* 4- **Please notice that you should not change the key-value like `scan_started`, `options` and etc. you just need to modify the Values.**
|
||||
|
||||
|
|
@ -59,7 +60,7 @@ To contribute to the existing libraries, You may go to `lib/messages` select the
|
|||
|
||||
# Contribute to Modules
|
||||
|
||||
Modules exist in path `/modules/module_category`. Currently, we have three categories (scan, brute, vuln). if you need to add more just create a directory with a name! To start a new module you should understand what kind of protocol you want to use. The list of protocols and module functionalities are in `core/module_protocols`. To understand how they work read the below example.
|
||||
Modules exist in path `nettacker/modules/module_category`. Currently, we have three categories (scan, brute, vuln). if you need to add more just create a directory with a name! To start a new module you should understand what kind of protocol you want to use. The list of protocols and module functionalities are in `core/module_protocols`. To understand how they work read the below example.
|
||||
|
||||
```yaml
|
||||
info: # this section is to store information about module
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ Engine:
|
|||
--verbose-event enable verbose event to see state of each thread
|
||||
-V, --version show software version
|
||||
-o REPORT_PATH_FILENAME, --output REPORT_PATH_FILENAME
|
||||
save all logs in file (results.txt, results.csv, results.html, results.json)
|
||||
save all logs in file (results.txt, results.csv, results.html, results.json, results.sarif, results.dd.json)
|
||||
--graph GRAPH_NAME build a graph of all activities and information, you must use HTML output. available graphs:
|
||||
['d3_tree_v2_graph', 'd3_tree_v1_graph']
|
||||
-h, --help Show Nettacker Help Menu
|
||||
|
|
@ -81,7 +81,7 @@ Method:
|
|||
add extra args to pass to modules (e.g. --modules-extra-args "x_api_key=123&xyz_passwd=abc"
|
||||
--show-all-modules show all modules and their information
|
||||
--profile PROFILES select profile ['accela', 'adobe', 'apache', 'apache_ofbiz', 'apache_struts', 'atlassian',
|
||||
'aviatrix', 'backup', 'brute', 'brute_force']
|
||||
'aviatrix', 'backup', 'brute']
|
||||
--show-all-profiles show all profiles and their information
|
||||
-x EXCLUDED_MODULES, --exclude-modules EXCLUDED_MODULES
|
||||
choose scan method to exclude ['accela_cve_2021_34370_vuln', 'admin_scan',
|
||||
|
|
@ -203,7 +203,7 @@ usage: Nettacker [-L LANGUAGE] [-v] [--verbose-event] [-V] [-o REPORT_PATH_FILEN
|
|||
--verbose-event enable verbose event to see state of each thread
|
||||
-V, --version نمایش ورژن نرم افزار
|
||||
-o REPORT_PATH_FILENAME, --output REPORT_PATH_FILENAME
|
||||
ذخیره کردن کل لاگ ها در فایل (result.txt، result.html، results.json)
|
||||
ذخیره کردن کل لاگ ها در فایل (results.txt، results.html، results.csv, results.json, results.sarif, results.dd.json)
|
||||
--graph GRAPH_NAME ساخت گراف از همه فعالیت ها و اطلاعات، شما باید از خروجی HTML استفاده کنید. گراف های در دسترس:
|
||||
['d3_tree_v1_graph', 'd3_tree_v2_graph']
|
||||
-h, --help نشان دادن منوی کمک Nettacker
|
||||
|
|
@ -229,7 +229,7 @@ usage: Nettacker [-L LANGUAGE] [-v] [--verbose-event] [-V] [-o REPORT_PATH_FILEN
|
|||
add extra args to pass to modules (e.g. --modules-extra-args "x_api_key=123&xyz_passwd=abc"
|
||||
--show-all-modules show all modules and their information
|
||||
--profile PROFILES انتخاب پروفایل ['accela', 'adobe', 'apache', 'apache_ofbiz', 'apache_struts', 'atlassian',
|
||||
'aviatrix', 'backup', 'brute', 'brute_force']
|
||||
'aviatrix', 'backup', 'brute']
|
||||
--show-all-profiles show all profiles and their information
|
||||
-x EXCLUDED_MODULES, --exclude-modules EXCLUDED_MODULES
|
||||
انتخاب متود اسکن استثنا ['accela_cve_2021_34370_vuln', 'admin_scan',
|
||||
|
|
@ -374,8 +374,8 @@ python nettacker.py -i 192.168.1.1/24 -m *_scan,*_vuln
|
|||
* Use profiles for using all modules inside a given profile
|
||||
|
||||
```
|
||||
python nettacker.py -i 192.168.1.1/24 --profile information_gathering
|
||||
python nettacker.py -i 192.168.1.1/24 --profile information_gathering,vulnerabilities
|
||||
python nettacker.py -i 192.168.1.1/24 --profile info
|
||||
python nettacker.py -i 192.168.1.1/24 --profile info,vuln
|
||||
python nettacker.py -i 192.168.1.1/24 --profile all
|
||||
```
|
||||
|
||||
|
|
@ -411,43 +411,43 @@ python nettacker.py --show-all-modules
|
|||
|
||||
|
||||
|
||||
[2021-08-31 17:42:06][+] http_options_enabled_vuln: name: http_options_enabled_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] clickjacking_vuln: name: clickjacking_vuln, author: OWASP Nettacker Team, severity: 5, description: Clickjacking, also known as a "UI redress attack", is when an attacker uses multiple transparent or opaque layers to trick a user into clicking on a button, reference: https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html, profiles: ['vuln', 'vulnerability', 'http', 'medium_severity']
|
||||
[2021-08-31 17:42:06][+] wp_xmlrpc_bruteforce_vuln: name: wp_xmlrpc_bruteforce_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'low_severity', 'wordpress', 'wp']
|
||||
[2021-08-31 17:42:06][+] graphql_vuln: name: graphql_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'information_gathering', 'http', 'low_severity', 'graphql']
|
||||
[2021-08-31 17:42:06][+] content_security_policy_vuln: name: content_security_policy_vuln, author: OWASP Nettacker Team, severity: 3, description: Content-Security-Policy is the name of a HTTP response header that modern browsers use to enhance the security of the document (or web page). The Content-Security-Policy header allows you to restrict how resources such as JavaScript, CSS, or pretty much anything that the browser loads., reference: https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html, profiles: ['vuln', 'vulnerability', 'http', 'low_severity', 'csp']
|
||||
[2021-08-31 17:42:06][+] xdebug_rce_vuln: name: xdebug_rce_vuln, author: OWASP Nettacker Team, severity: 10, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'critical_severity']
|
||||
[2021-08-31 17:42:06][+] x_powered_by_vuln: name: x_powered_by_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] wp_xmlrpc_pingback_vuln: name: wp_xmlrpc_pingback_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'wordpress', 'wp']
|
||||
[2021-08-31 17:42:06][+] http_cors_vuln: name: http_cors_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] f5_cve_2020_5902_vuln: name: f5_cve_2020_5902_vuln, author: OWASP Nettacker Team, severity: 9, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'critical_severity', 'cve', 'f5']
|
||||
[2021-08-31 17:42:06][+] subdomain_takeover_vuln: name: subdomain_takeover_vuln, author: OWASP Nettacker Team, severity: 5, description: let us assume that example.com is the target and that the team running example.com have a bug bounty programme. While enumerating all of the subdomains belonging to example.com — a process that we will explore later — a hacker stumbles across subdomain.example.com, a subdomain pointing to GitHub pages. We can determine this by reviewing the subdomain's DNS records; in this example, subdomain.example.com has multiple A records pointing to GitHub's dedicated IP addresses for custom pages., reference: https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/02-Configuration_and_Deployment_Management_Testing/10-Test_for_Subdomain_Takeover, profiles: ['vuln', 'vulnerability', 'http', 'medium_severity', 'takeover']
|
||||
[2021-08-31 17:42:06][+] http_trace_enabled_vuln: name: http_trace_enabled_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] http_cookie_vuln: name: http_cookie_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] wp_xmlrpc_dos_vuln: name: wp_xmlrpc_dos_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'wordpress', 'wp']
|
||||
[2021-08-31 17:42:06][+] server_version_vuln: name: server_version_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] x_xss_protection_vuln: name: x_xss_protection_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] citrix_cve_2019_19781_vuln: name: citrix_cve_2019_19781_vuln, author: OWASP Nettacker Team, severity: 8, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'high_severity', 'cve', 'citrix']
|
||||
[2021-08-31 17:42:06][+] content_type_options_vuln: name: content_type_options_vuln, author: OWASP Nettacker Team, severity: 2, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] apache_struts_vuln: name: apache_struts_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'low_severity', 'apache_struts']
|
||||
[2021-08-31 17:42:06][+] vbulletin_cve_2019_16759_vuln: name: vbulletin_cve_2019_16759_vuln, author: OWASP Nettacker Team, severity: 9, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'critical_severity', 'vbulletin', 'cve']
|
||||
[2021-08-31 17:42:06][+] msexchange_cve_2021_26855_vuln: name: msexchange_cve_2021_26855_vuln, author: OWASP Nettacker Team, severity: 9, description: None, reference: None, profiles: ['vuln', 'vulnerability', 'http', 'critical_severity', 'msexchange', 'cve']
|
||||
[2021-08-31 17:42:06][+] telnet_brute: name: telnet_brute, author: OWASP Nettacker Team, severity: 3, description: Telnet Bruteforcer, reference: None, profiles: ['brute', 'brute_force', 'telnet']
|
||||
[2021-08-31 17:42:06][+] ssh_brute: name: ssh_brute, author: OWASP Nettacker Team, severity: 3, description: SSH Bruteforcer, reference: None, profiles: ['brute', 'brute_force', 'ssh']
|
||||
[2021-08-31 17:42:06][+] smtp_brute: name: smtp_brute, author: OWASP Nettacker Team, severity: 3, description: SMTP Bruteforcer, reference: None, profiles: ['brute', 'brute_force', 'smtp']
|
||||
[2021-08-31 17:42:06][+] ftps_brute: name: ftps_brute, author: OWASP Nettacker Team, severity: 3, description: FTPS Bruteforcer, reference: None, profiles: ['brute', 'brute_force', 'ftp']
|
||||
[2021-08-31 17:42:06][+] smtps_brute: name: smtps_brute, author: OWASP Nettacker Team, severity: 3, description: SMTPS Bruteforcer, reference: None, profiles: ['brute', 'brute_force', 'smtp']
|
||||
[2021-08-31 17:42:06][+] ftp_brute: name: ftp_brute, author: OWASP Nettacker Team, severity: 3, description: FTP Bruteforcer, reference: None, profiles: ['brute', 'brute_force', 'ftp']
|
||||
[2021-08-31 17:42:06][+] http_options_enabled_vuln: name: http_options_enabled_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] clickjacking_vuln: name: clickjacking_vuln, author: OWASP Nettacker Team, severity: 5, description: Clickjacking, also known as a "UI redress attack", is when an attacker uses multiple transparent or opaque layers to trick a user into clicking on a button, reference: https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html, profiles: ['vuln', 'http', 'medium_severity']
|
||||
[2021-08-31 17:42:06][+] wp_xmlrpc_bruteforce_vuln: name: wp_xmlrpc_bruteforce_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'low_severity', 'wordpress']
|
||||
[2021-08-31 17:42:06][+] graphql_vuln: name: graphql_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'low_severity', 'graphql']
|
||||
[2021-08-31 17:42:06][+] content_security_policy_vuln: name: content_security_policy_vuln, author: OWASP Nettacker Team, severity: 3, description: Content-Security-Policy is the name of a HTTP response header that modern browsers use to enhance the security of the document (or web page). The Content-Security-Policy header allows you to restrict how resources such as JavaScript, CSS, or pretty much anything that the browser loads., reference: https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html, profiles: ['vuln', 'http', 'low_severity', 'csp']
|
||||
[2021-08-31 17:42:06][+] xdebug_rce_vuln: name: xdebug_rce_vuln, author: OWASP Nettacker Team, severity: 10, description: None, reference: None, profiles: ['vuln', 'http', 'critical_severity']
|
||||
[2021-08-31 17:42:06][+] x_powered_by_vuln: name: x_powered_by_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] wp_xmlrpc_pingback_vuln: name: wp_xmlrpc_pingback_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'wordpress']
|
||||
[2021-08-31 17:42:06][+] http_cors_vuln: name: http_cors_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] f5_cve_2020_5902_vuln: name: f5_cve_2020_5902_vuln, author: OWASP Nettacker Team, severity: 9, description: None, reference: None, profiles: ['vuln', 'http', 'critical_severity', 'cve', 'f5']
|
||||
[2021-08-31 17:42:06][+] subdomain_takeover_vuln: name: subdomain_takeover_vuln, author: OWASP Nettacker Team, severity: 5, description: let us assume that example.com is the target and that the team running example.com have a bug bounty programme. While enumerating all of the subdomains belonging to example.com — a process that we will explore later — a hacker stumbles across subdomain.example.com, a subdomain pointing to GitHub pages. We can determine this by reviewing the subdomain's DNS records; in this example, subdomain.example.com has multiple A records pointing to GitHub's dedicated IP addresses for custom pages., reference: https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/02-Configuration_and_Deployment_Management_Testing/10-Test_for_Subdomain_Takeover, profiles: ['vuln', 'http', 'medium_severity', 'takeover']
|
||||
[2021-08-31 17:42:06][+] http_trace_enabled_vuln: name: http_trace_enabled_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] http_cookie_vuln: name: http_cookie_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] wp_xmlrpc_dos_vuln: name: wp_xmlrpc_dos_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'wordpress']
|
||||
[2021-08-31 17:42:06][+] server_version_vuln: name: server_version_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] x_xss_protection_vuln: name: x_xss_protection_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] citrix_cve_2019_19781_vuln: name: citrix_cve_2019_19781_vuln, author: OWASP Nettacker Team, severity: 8, description: None, reference: None, profiles: ['vuln', 'http', 'high_severity', 'cve', 'citrix']
|
||||
[2021-08-31 17:42:06][+] content_type_options_vuln: name: content_type_options_vuln, author: OWASP Nettacker Team, severity: 2, description: None, reference: None, profiles: ['vuln', 'http', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] apache_struts_vuln: name: apache_struts_vuln, author: OWASP Nettacker Team, severity: 3, description: None, reference: None, profiles: ['vuln', 'http', 'low_severity', 'apache_struts']
|
||||
[2021-08-31 17:42:06][+] vbulletin_cve_2019_16759_vuln: name: vbulletin_cve_2019_16759_vuln, author: OWASP Nettacker Team, severity: 9, description: None, reference: None, profiles: ['vuln', 'http', 'critical_severity', 'vbulletin', 'cve']
|
||||
[2021-08-31 17:42:06][+] msexchange_cve_2021_26855_vuln: name: msexchange_cve_2021_26855_vuln, author: OWASP Nettacker Team, severity: 9, description: None, reference: None, profiles: ['vuln', 'http', 'critical_severity', 'msexchange', 'cve']
|
||||
[2021-08-31 17:42:06][+] telnet_brute: name: telnet_brute, author: OWASP Nettacker Team, severity: 3, description: Telnet Bruteforcer, reference: None, profiles: ['brute', 'telnet']
|
||||
[2021-08-31 17:42:06][+] ssh_brute: name: ssh_brute, author: OWASP Nettacker Team, severity: 3, description: SSH Bruteforcer, reference: None, profiles: ['brute', 'ssh']
|
||||
[2021-08-31 17:42:06][+] smtp_brute: name: smtp_brute, author: OWASP Nettacker Team, severity: 3, description: SMTP Bruteforcer, reference: None, profiles: ['brute', 'smtp']
|
||||
[2021-08-31 17:42:06][+] ftps_brute: name: ftps_brute, author: OWASP Nettacker Team, severity: 3, description: FTPS Bruteforcer, reference: None, profiles: ['brute', 'ftp']
|
||||
[2021-08-31 17:42:06][+] smtps_brute: name: smtps_brute, author: OWASP Nettacker Team, severity: 3, description: SMTPS Bruteforcer, reference: None, profiles: ['brute', 'smtp']
|
||||
[2021-08-31 17:42:06][+] ftp_brute: name: ftp_brute, author: OWASP Nettacker Team, severity: 3, description: FTP Bruteforcer, reference: None, profiles: ['brute', 'ftp']
|
||||
[2021-08-31 17:42:06][+] whatcms_scan: name: dir_scan, author: OWASP Nettacker Team, severity: 3, description: Directory, Backup finder, reference: https://www.zaproxy.org/docs/alerts/10095/, profiles: ['scan', 'http', 'backup', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] icmp_scan: name: icmp_scan, author: OWASP Nettacker Team, severity: 0, description: check if host is alive through ICMP, reference: None, profiles: ['scan', 'information_gathering', 'infortmation', 'info', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] subdomain_scan: name: subdomain_scan, author: OWASP Nettacker Team, severity: 0, description: Find subdomains using different sources on internet, reference: None, profiles: ['scan', 'information_gathering', 'infortmation', 'info', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] port_scan: id: port_scan, author: OWASP Nettacker Team, severity: 0, description: Find open ports and services, reference: None, profiles: ['scan', 'http', 'information_gathering', 'infortmation', 'info', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] icmp_scan: name: icmp_scan, author: OWASP Nettacker Team, severity: 0, description: check if host is alive through ICMP, reference: None, profiles: ['scan', 'info', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] subdomain_scan: name: subdomain_scan, author: OWASP Nettacker Team, severity: 0, description: Find subdomains using different sources on internet, reference: None, profiles: ['scan', 'info', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] port_scan: id: port_scan, author: OWASP Nettacker Team, severity: 0, description: Find open ports and services, reference: None, profiles: ['scan', 'http', 'info', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] admin_scan: name: admin_scan, author: OWASP Nettacker Team, severity: 3, description: Admin Directory Finder, reference: None, profiles: ['scan', 'http', 'backup', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] dir_scan: name: dir_scan, author: OWASP Nettacker Team, severity: 3, description: Directory, Backup finder, reference: https://www.zaproxy.org/docs/alerts/10095/, profiles: ['scan', 'http', 'backup', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] viewdns_reverse_iplookup_scan: name: viewdns_reverse_iplookup_scan, author: OWASP Nettacker Team, severity: 3, description: reverse lookup for target ip, reference: None, profiles: ['scan', 'http', 'backup', 'low_severity', 'reverse_lookup']
|
||||
[2021-08-31 17:42:06][+] drupal_version_scan: name: drupal_version_scan, author: OWASP Nettacker Team, severity: 3, description: fetch drupal version from target, reference: None, profiles: ['scan', 'http', 'backup', 'low_severity', 'drupal']
|
||||
[2021-08-31 17:42:06][+] joomla_version_scan: name: drupal_version_scan, author: OWASP Nettacker Team, severity: 3, description: fetch drupal version from target, reference: None, profiles: ['scan', 'http', 'backup', 'low_severity', 'drupal']
|
||||
[2021-08-31 17:42:06][+] wordpress_version_scan: name: wordpress_version_scan, author: OWASP Nettacker Team, severity: 3, description: Directory, Backup finder, reference: None, profiles: ['scan', 'http', 'backup', 'low_severity', 'wp', 'wordpress']
|
||||
[2021-08-31 17:42:06][+] wordpress_version_scan: name: wordpress_version_scan, author: OWASP Nettacker Team, severity: 3, description: Directory, Backup finder, reference: None, profiles: ['scan', 'http', 'backup', 'low_severity', 'wordpress']
|
||||
[2021-08-31 17:42:06][+] pma_scan: name: pma_scan, author: OWASP Nettacker Team, severity: 3, description: php my admin finder, reference: None, profiles: ['scan', 'http', 'backup', 'low_severity']
|
||||
[2021-08-31 17:42:06][+] all:
|
||||
```
|
||||
|
|
@ -470,8 +470,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- scan
|
||||
- information_gathering
|
||||
- infortmation
|
||||
- info
|
||||
- low_severity
|
||||
- asset_discovery(new added profile)
|
||||
|
|
@ -531,6 +529,22 @@ def nettacker_user_application_config():
|
|||
}
|
||||
```
|
||||
|
||||
* Nettacker supports five different output types for the final report
|
||||
|
||||
1. HTML (.html) -> This also renders the graph
|
||||
2. CSV (.csv)
|
||||
3. JSON (.json)
|
||||
4. SARIF (.sarif)
|
||||
5. DefectDojo compatible json (.dd.json)
|
||||
|
||||
These output types will help with integration with different softwares and dashboards. To set the output mode use the `-o` or `--output` flag
|
||||
|
||||
```
|
||||
python nettacker.py -i 192.168.1.1/24 --profile information_gathering -o report.sarif
|
||||
python nettacker.py -i 192.168.1.1/24 --profile information_gathering -o report.json
|
||||
python nettacker.py -i 192.168.1.1/24 --profile information_gathering --output report.dd.json
|
||||
```
|
||||
|
||||
# API and WebUI
|
||||
API and WebUI are new interfaces through which you can send your commands to Nettacker. Technically WebUI was developed based on the present API to demonstrate an example of the current API and can be used as another easier interface. To start using this feature, simply run `python nettacker.py --start-api`.
|
||||
```
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
all_module_severity_and_desc = {}
|
||||
|
|
@ -66,7 +66,7 @@ class Nettacker(ArgParser):
|
|||
log.reset_color()
|
||||
|
||||
def check_dependencies(self):
|
||||
if sys.platform not in {"darwin", "linux"}:
|
||||
if sys.platform not in {"darwin", "freebsd13", "freebsd14", "freebsd15", "linux"}:
|
||||
die_failure(_("error_platform"))
|
||||
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ from argparse import ArgumentParser
|
|||
|
||||
import yaml
|
||||
|
||||
from nettacker import all_module_severity_and_desc
|
||||
from nettacker.config import version_info, Config
|
||||
from nettacker.core.die import die_failure, die_success
|
||||
from nettacker.core.ip import (
|
||||
|
|
@ -80,7 +81,6 @@ class ArgParser(ArgumentParser):
|
|||
an array of all module names
|
||||
"""
|
||||
# Search for Modules
|
||||
|
||||
module_names = {}
|
||||
for module_name in sorted(Config.path.modules_dir.glob("**/*.yaml")):
|
||||
library = str(module_name).split("/")[-1].split(".")[0]
|
||||
|
|
@ -88,7 +88,11 @@ class ArgParser(ArgumentParser):
|
|||
module = f"{library}_{category}"
|
||||
contents = yaml.safe_load(TemplateLoader(module).open().split("payload:")[0])
|
||||
module_names[module] = contents["info"] if full_details else None
|
||||
|
||||
info = contents.get("info", {})
|
||||
all_module_severity_and_desc[module] = {
|
||||
"severity": info.get("severity", 0),
|
||||
"desc": info.get("description", ""),
|
||||
}
|
||||
if len(module_names) == limit:
|
||||
module_names["..."] = {}
|
||||
break
|
||||
|
|
|
|||
|
|
@ -3,11 +3,13 @@ import html
|
|||
import importlib
|
||||
import json
|
||||
import os
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
import texttable
|
||||
|
||||
from nettacker import logger
|
||||
from nettacker import logger, all_module_severity_and_desc
|
||||
from nettacker.config import Config, version_info
|
||||
from nettacker.core.die import die_failure
|
||||
from nettacker.core.messages import messages as _
|
||||
|
|
@ -119,6 +121,99 @@ def create_compare_text_table(results):
|
|||
return table.draw() + "\n\n"
|
||||
|
||||
|
||||
def create_dd_specific_json(all_scan_logs):
|
||||
severity_mapping = {1: "Info", 2: "Low", 3: "Medium", 4: "High", 5: "Critical"}
|
||||
|
||||
findings = []
|
||||
|
||||
for log in all_scan_logs:
|
||||
module_name = log["module_name"].strip()
|
||||
date = datetime.strptime(log["date"], "%Y-%m-%d %H:%M:%S.%f").strftime("%m/%d/%Y")
|
||||
port = str(log.get("port", "")).strip()
|
||||
impact = log.get("event", "").strip()
|
||||
severity_justification = log.get("json_event", "").strip()
|
||||
service = log.get("target", "").strip()
|
||||
unique_id = log.get("scan_id", uuid.uuid4().hex)
|
||||
|
||||
metadata = all_module_severity_and_desc.get(module_name, {})
|
||||
severity_raw = metadata.get("severity", 0)
|
||||
description = metadata.get("desc", "")
|
||||
if severity_raw >= 9:
|
||||
severity = severity_mapping[5]
|
||||
elif severity_raw >= 7:
|
||||
severity = severity_mapping[4]
|
||||
elif severity_raw >= 4:
|
||||
severity = severity_mapping[3]
|
||||
elif severity_raw > 0:
|
||||
severity = severity_mapping[2]
|
||||
else:
|
||||
severity = severity_mapping[1]
|
||||
|
||||
findings.append(
|
||||
{
|
||||
"date": date,
|
||||
"title": module_name,
|
||||
"description": description.strip(),
|
||||
"severity": severity,
|
||||
"param": port,
|
||||
"impact": impact,
|
||||
"severity_justification": severity_justification,
|
||||
"service": service,
|
||||
"unique_id_from_tool": unique_id,
|
||||
"static_finding": False,
|
||||
"dynamic_finding": True,
|
||||
}
|
||||
)
|
||||
|
||||
return json.dumps({"findings": findings}, indent=4)
|
||||
|
||||
|
||||
def create_sarif_report(all_scan_logs):
|
||||
"""
|
||||
Takes all_scan_logs and converts them to a SARIF based json
|
||||
format. The schema and version used are 2.1.0 linked below.
|
||||
The following conversions are made:
|
||||
ruleId: name of the module
|
||||
message: event value for each log in all_scan_logs
|
||||
locations.physicalLocations.artifactLocation.uri: target value
|
||||
webRequest.properties.json_event: json_event value for each log in all_scan_logs
|
||||
properties.scan_id: scan_id unique value for each run
|
||||
properties.date: date field specified in all_scan_logs
|
||||
"""
|
||||
|
||||
sarif_structure = {
|
||||
"$schema": "https://json.schemastore.org/sarif-2.1.0.json",
|
||||
"version": "2.1.0",
|
||||
"runs": [
|
||||
{
|
||||
"tool": {
|
||||
"driver": {
|
||||
"name": "Nettacker",
|
||||
"version": "0.4.0",
|
||||
"informationUri": "https://github.com/OWASP/Nettacker",
|
||||
}
|
||||
},
|
||||
"results": [],
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
for log in all_scan_logs:
|
||||
sarif_result = {
|
||||
"ruleId": log["module_name"],
|
||||
"message": {"text": log["event"]},
|
||||
"locations": [{"physicalLocation": {"artifactLocation": {"uri": log["target"]}}}],
|
||||
"properties": {
|
||||
"scan_id": log["scan_id"],
|
||||
"date": log["date"],
|
||||
"json_event": log["json_event"],
|
||||
},
|
||||
}
|
||||
sarif_structure["runs"][0]["results"].append(sarif_result)
|
||||
|
||||
return json.dumps(sarif_structure, indent=2)
|
||||
|
||||
|
||||
def create_report(options, scan_id):
|
||||
"""
|
||||
sort all events, create log file in HTML/TEXT/JSON and remove old logs
|
||||
|
|
@ -179,25 +274,34 @@ def create_report(options, scan_id):
|
|||
+ "</p>"
|
||||
+ log_data.json_parse_js
|
||||
)
|
||||
with open(report_path_filename, "w", encoding="utf-8") as report_file:
|
||||
with Path(report_path_filename).open("w", encoding="utf-8") as report_file:
|
||||
report_file.write(html_table_content + "\n")
|
||||
report_file.close()
|
||||
|
||||
elif len(report_path_filename) >= 5 and report_path_filename[-8:].lower() == ".dd.json":
|
||||
with Path(report_path_filename).open("w", encoding="utf-8") as report_file:
|
||||
dd_content_json = create_dd_specific_json(all_scan_logs)
|
||||
report_file.write(dd_content_json + "\n")
|
||||
|
||||
elif len(report_path_filename) >= 5 and report_path_filename[-5:] == ".json":
|
||||
with open(report_path_filename, "w", encoding="utf-8") as report_file:
|
||||
with Path(report_path_filename).open("w", encoding="utf-8") as report_file:
|
||||
report_file.write(str(json.dumps(all_scan_logs)) + "\n")
|
||||
report_file.close()
|
||||
|
||||
elif len(report_path_filename) >= 6 and report_path_filename[-6:].lower() == ".sarif":
|
||||
with Path(report_path_filename).open("w", encoding="utf-8") as report_file:
|
||||
sarif_content = create_sarif_report(all_scan_logs)
|
||||
report_file.write(sarif_content + "\n")
|
||||
|
||||
elif len(report_path_filename) >= 5 and report_path_filename[-4:] == ".csv":
|
||||
keys = all_scan_logs[0].keys()
|
||||
with open(report_path_filename, "a") as csvfile:
|
||||
with Path(report_path_filename).open("a") as csvfile:
|
||||
writer = csv.DictWriter(csvfile, fieldnames=keys)
|
||||
writer.writeheader()
|
||||
for log_list in all_scan_logs:
|
||||
dict_data = {key: value for key, value in log_list.items() if key in keys}
|
||||
writer.writerow(dict_data)
|
||||
csvfile.close()
|
||||
|
||||
else:
|
||||
with open(report_path_filename, "w", encoding="utf-8") as report_file:
|
||||
with Path(report_path_filename).open("w", encoding="utf-8") as report_file:
|
||||
report_file.write(build_text_table(all_scan_logs))
|
||||
|
||||
log.write(build_text_table(all_scan_logs))
|
||||
|
|
@ -278,20 +382,20 @@ def create_compare_report(options, scan_id):
|
|||
len(fullpath) >= 4 and fullpath[-4:] == ".htm"
|
||||
):
|
||||
html_report = build_compare_report(compare_results)
|
||||
with open(fullpath, "w", encoding="utf-8") as compare_report:
|
||||
with Path(fullpath).open("w", encoding="utf-8") as compare_report:
|
||||
compare_report.write(html_report + "\n")
|
||||
elif len(fullpath) >= 5 and fullpath[-5:] == ".json":
|
||||
with open(fullpath, "w", encoding="utf-8") as compare_report:
|
||||
with Path(fullpath).open("w", encoding="utf-8") as compare_report:
|
||||
compare_report.write(str(json.dumps(compare_results)) + "\n")
|
||||
elif len(fullpath) >= 5 and fullpath[-4:] == ".csv":
|
||||
keys = compare_results.keys()
|
||||
with open(fullpath, "a") as csvfile:
|
||||
with Path(fullpath).open("a") as csvfile:
|
||||
writer = csv.DictWriter(csvfile, fieldnames=keys)
|
||||
if csvfile.tell() == 0:
|
||||
writer.writeheader()
|
||||
writer.writerow(compare_results)
|
||||
else:
|
||||
with open(fullpath, "w", encoding="utf-8") as compare_report:
|
||||
with Path(fullpath).open("w", encoding="utf-8") as compare_report:
|
||||
compare_report.write(create_compare_text_table(compare_results))
|
||||
|
||||
log.write(create_compare_text_table(compare_results))
|
||||
|
|
|
|||
|
|
@ -118,26 +118,25 @@ class Module:
|
|||
self.module_content["payloads"] = expand_module_steps(self.module_content["payloads"])
|
||||
|
||||
def sort_loops(self):
|
||||
steps = []
|
||||
for index in range(len(self.module_content["payloads"])):
|
||||
for step in copy.deepcopy(self.module_content["payloads"][index]["steps"]):
|
||||
if "dependent_on_temp_event" not in step[0]["response"]:
|
||||
steps.append(step)
|
||||
steps_without_dependencies = []
|
||||
steps_with_temp_dependencies = []
|
||||
steps_with_normal_dependencies = []
|
||||
|
||||
for step in copy.deepcopy(self.module_content["payloads"][index]["steps"]):
|
||||
if (
|
||||
"dependent_on_temp_event" in step[0]["response"]
|
||||
and "save_to_temp_events_only" in step[0]["response"]
|
||||
):
|
||||
steps.append(step)
|
||||
resp = step[0]["response"]
|
||||
if "dependent_on_temp_event" not in resp:
|
||||
steps_without_dependencies.append(step)
|
||||
elif "save_to_temp_events_only" in resp:
|
||||
steps_with_temp_dependencies.append(step)
|
||||
else:
|
||||
steps_with_normal_dependencies.append(step)
|
||||
|
||||
for step in copy.deepcopy(self.module_content["payloads"][index]["steps"]):
|
||||
if (
|
||||
"dependent_on_temp_event" in step[0]["response"]
|
||||
and "save_to_temp_events_only" not in step[0]["response"]
|
||||
):
|
||||
steps.append(step)
|
||||
self.module_content["payloads"][index]["steps"] = steps
|
||||
self.module_content["payloads"][index]["steps"] = (
|
||||
steps_without_dependencies
|
||||
+ steps_with_temp_dependencies
|
||||
+ steps_with_normal_dependencies
|
||||
)
|
||||
|
||||
def start(self):
|
||||
active_threads = []
|
||||
|
|
|
|||
|
|
@ -25,15 +25,14 @@ database_connect_fail: ڈیٹابیس سیت رابطہ نئیں بن پایو!
|
|||
database_connection_failed: چُنی گیے ڈیٹابیس سیت رابطہ ناکام!
|
||||
define_white_list: "سفید فہرست ہوسٹس مقرر کرنہ، الگ کرنہ ',' سیت (مثال: 127.0.0.1, 192.168.0.1/24, 10.0.0.1-10.0.0.255)"
|
||||
engine: انجن
|
||||
filtered_content: ... [مکمل مواد رپورٹ منز چھ]
|
||||
filtered_content: "... [مکمل مواد رپورٹ منز چھ]"
|
||||
engine_input: انجن انپٹ اختیارات
|
||||
Invalid_whatcms_api_key: "{0}"
|
||||
searching_whatcms_database: whatcms.org پر CMS تلاش کرنہ...
|
||||
whatcms_monthly_quota_exceeded: تُہند ماہانہ WHATCMS درخواست حد پار گئ چھ
|
||||
finished_module: موڈیول {0} مکمل گیے ہدف {1} پر | موڈیول تھریڈ نمبر {2} از {3}!
|
||||
modules_extra_args_help: موڈیولس ہند واسطے اضافی دلائل چھپن (مثال: --modules-extra-args "x_api_key=123&xyz_passwd=abc")
|
||||
modules_extra_args_help: 'موڈیولس ہند واسطے اضافی دلائل چھپن (مثال: --modules-extra-args "x_api_key=123&xyz_passwd=abc")'
|
||||
choose_scan_method: موڈیول چُنہ {0}، مکمل فہرست خاطر --show-all-modules استعمال کرنہ
|
||||
cannot_run_api_server: API سرور خودس اندران چلائو نہ یتھ!
|
||||
error_target: ہدف طے کرنہ ممکن نہ چھ
|
||||
error_target_file: "ہدف طے کرنہ ممکن نہ چھ، فائِل کھولنہ ناکام: {0}"
|
||||
error_username: "یوزرنام طے کرنہ ممکن نہ چھ، فائِل کھولنہ ناکام: {0}"
|
||||
|
|
@ -65,12 +64,12 @@ module_profile_full_information: "{0}{1}{2}: {3}"
|
|||
nettacker_report: OWASP Nettacker رپورٹ
|
||||
nettacker_version_details: "سافٹ ویئر تفصیل: OWASP Nettacker ورژن {0} [{1}] منز {2}"
|
||||
not_found: نہ ملیو!
|
||||
outgoing_proxy: "باہر جارنہ کنکشن خاطر پراکسی (socks)۔ مثال socks5: 127.0.0.1:9050, socks://127.0.0.1:9050, socks5://127.0.0.1:9050 یا socks4: socks4://127.0.0.1:9050, توکن: socks://username:password@127.0.0.1"
|
||||
outgoing_proxy: "باہر جارنہ کنکشن خاطر پراکسی (socks)۔ مثال socks5: 127.0.0.1:9050, socks://127.0.0.1:9050, socks5://127.0.0.1:9050 یا socks4: socks4://127.0.0.1:9050, ٹوکن: socks://USERNAME:PASSWORD@127.0.0.1"
|
||||
password_separator: پاسورڈ فہرست، "," سیت الگ کرنہ
|
||||
pentest_graphs: پینیٹریشن ٹیسٹنگ گرافس
|
||||
ping_before_scan: سکین سیت پہلے پنگ کرنہ
|
||||
port_separator: پورٹ فہرست، "," سیت الگ کرنہ
|
||||
ports_int: پورٹس لازمی عدد ہون! (مثال: 80 || 80,1080 || 80,1080-1300,9000,12000-15000)
|
||||
ports_int: پورٹس لازمی عدد ہون! (مثال: 80, 80,1080, 80,1080-1300,9000,12000-15000)
|
||||
profile_404: پروفائل "{0}" نہ ملیو!
|
||||
range: IP حدود سکین کرنہ
|
||||
read_passwords: پاسورڈس فائِل منز پڈھان
|
||||
|
|
@ -95,10 +94,8 @@ show_all_profiles: سبھی پروفائلز تہ اُنکی معلومات دی
|
|||
single_process_started: عمل-{0}| عمل شروع گئ!
|
||||
software_version: سافٹ ویئر ورژن دیکھاو
|
||||
start_api_server: API سروس شروع کرنہ
|
||||
start_multi_process: {0} اہداف {1} عملس منز شامل کرنہ.
|
||||
start_parallel_module_scan:
|
||||
عمل-{0}|{1}|{2}| موڈیول تھریڈ نمبر {3} شروع گئ
|
||||
از {4}
|
||||
start_multi_process: "{0} اہداف {1} عملس منز شامل کرنہ."
|
||||
start_parallel_module_scan: عمل-{0}|{1}|{2}| موڈیول تھریڈ نمبر {3} شروع گئ از {4}
|
||||
subdomains: سب ڈومینس پتہ لگان تہ سکین کرنہ
|
||||
target: ہدف
|
||||
target_input: ہدف انپٹ اختیارات
|
||||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- brute
|
||||
- brute_force
|
||||
- ftp
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- brute
|
||||
- brute_force
|
||||
- ftp
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- brute
|
||||
- brute_force
|
||||
- pop3
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- brute
|
||||
- brute_force
|
||||
- pop3
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- brute
|
||||
- brute_force
|
||||
- smtp
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- brute
|
||||
- brute_force
|
||||
- smtp
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- brute
|
||||
- brute_force
|
||||
- ssh
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- brute
|
||||
- brute_force
|
||||
- telnet
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -6,8 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- scan
|
||||
- information_gathering
|
||||
- infortmation
|
||||
- info
|
||||
- low_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@ info:
|
|||
profiles:
|
||||
- scan
|
||||
- http
|
||||
- information_gathering
|
||||
- infortmation
|
||||
- info
|
||||
- low_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -6,8 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- scan
|
||||
- information_gathering
|
||||
- infortmation
|
||||
- info
|
||||
- low_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ info:
|
|||
- http
|
||||
- backup
|
||||
- low_severity
|
||||
- wp
|
||||
- wordpress
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ info:
|
|||
- http
|
||||
- backup
|
||||
- low_severity
|
||||
- wp
|
||||
- wordpress
|
||||
payloads:
|
||||
- library: http
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ info:
|
|||
- http
|
||||
- backup
|
||||
- low_severity
|
||||
- wp
|
||||
- wordpress
|
||||
- wp_theme
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ info:
|
|||
- http
|
||||
- backup
|
||||
- low_severity
|
||||
- wp
|
||||
- wp_timethumbs
|
||||
- wordpress
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2021-34370
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ info:
|
|||
- http://packetstormsecurity.com/files/172079/Adobe-ColdFusion-Unauthenticated-Remote-Code-Execution.html
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2021-41773
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2021-42013
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ info:
|
|||
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
- apache_struts
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2021-40870
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://packetstormsecurity.com/files/162976/Cisco-HyperFlex-HX-Data-Platform-Command-Execution.html
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ info:
|
|||
- https://support.citrix.com/article/CTX267027
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ info:
|
|||
- https://blog.assetnote.io/2023/06/29/citrix-xss-advisory/
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ info:
|
|||
- https://github.com/advisories/GHSA-2g42-2pwg-93cj
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference: "https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html"
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2021-40868
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2023-22515
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2023-22527
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference: "https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html"
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
- csp
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -6,10 +6,8 @@ info:
|
|||
reference: https://seclists.org/fulldisclosure/2021/Aug/20
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve_2021_38702
|
||||
- cve2021
|
||||
- cve
|
||||
- cyberoam
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://github.com/exponentcms/exponent-cms/blob/a9fa9358c5e8dc2ce7ad61d7d5bea38505b8515c/exponent_constants.php#L56-L64
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ info:
|
|||
- https://portswigger.net/research/pre-auth-rce-in-forgerock-openam-cve-2021-35464
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-40960
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://github.com/jas502n/Grafana-VulnTips
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- grafana
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- information_gathering
|
||||
- http
|
||||
- low_severity
|
||||
- graphql
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-40875
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2021-37833
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ info:
|
|||
- https://www.rapid7.com/blog/post/2023/08/02/cve-2023-35082-mobileiron-core-unauthenticated-api-access-vulnerability/
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://labs.watchtowr.com/welcome-to-2024-the-sslvpn-chaos-continues-ivanti-cve-2023-46805-cve-2024-21887
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41878
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://github.com/huntresslabs/log4shell-tester
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2021-35265
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- msexchange
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://blog.orange.tw/2021/08/proxylogon-a-new-attack-surface-on-ms-exchange-part-1.html
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- msexchange
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3654
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://github.com/microsoft/omi
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ info:
|
|||
- https://thehackernews.com/2025/02/cisa-adds-palo-alto-networks-and.html
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2021-41381
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-37704
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2021-41826
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://blog.sorcery.ie/posts/smartblog_sqli/
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -7,12 +7,10 @@ info:
|
|||
- https://github.com/MobiusBinary/CVE-2021-41648
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve2021
|
||||
- cve
|
||||
- puneethreddyhc
|
||||
- sqli
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -7,12 +7,10 @@ info:
|
|||
- https://github.com/MobiusBinary/CVE-2021-41649
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve2021
|
||||
- cve
|
||||
- puneethreddyhc
|
||||
- sqli
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ info:
|
|||
- https://www.twcert.org.tw/tw/cp-132-4962-44cd2-1.html
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ info:
|
|||
- https://www.cisa.gov/news-events/alerts/2025/02/18/cisa-adds-two-known-exploited-vulnerabilities-catalog
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ info:
|
|||
reference:
|
||||
- https://www.ssl.com/article/ssl-tls-self-signed-certificates/
|
||||
profiles:
|
||||
- scan
|
||||
- vuln
|
||||
- ssl
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ info:
|
|||
reference:
|
||||
- https://www.beyondsecurity.com/resources/vulnerabilities/ssl-certificate-expiry
|
||||
profiles:
|
||||
- scan
|
||||
- vuln
|
||||
- ssl
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ info:
|
|||
reference:
|
||||
- https://www.ssl.com/article/ssl-tls-self-signed-certificates/
|
||||
profiles:
|
||||
- scan
|
||||
- vuln
|
||||
- ssl
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ info:
|
|||
- https://www.manageengine.com/privileged-access-management/help/ssl_vulnerability.html
|
||||
- https://www.acunetix.com/vulnerabilities/web/tls-ssl-weak-cipher-suites/
|
||||
profiles:
|
||||
- scan
|
||||
- vuln
|
||||
- ssl
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ info:
|
|||
- https://www.manageengine.com/privileged-access-management/help/ssl_vulnerability.html
|
||||
- https://www.cloudflare.com/learning/ssl/why-use-tls-1.3/
|
||||
profiles:
|
||||
- scan
|
||||
- vuln
|
||||
- ssl
|
||||
|
||||
payloads:
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/02-Configuration_and_Deployment_Management_Testing/07-Test_HTTP_Strict_Transport_Security
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference: "https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/02-Configuration_and_Deployment_Management_Testing/10-Test_for_Subdomain_Takeover"
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- takeover
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2024-27198
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2021-35336
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ info:
|
|||
- https://seclists.org/fulldisclosure/2021/Aug/13
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- vbulletin
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-38314
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-39316
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- high_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://nvd.nist.gov/vuln/detail/CVE-2021-39320
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -9,11 +9,9 @@ info:
|
|||
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- medium_severity
|
||||
- wordpress
|
||||
- wp
|
||||
|
||||
payloads:
|
||||
- library: http
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ info:
|
|||
- https://www.cve.org/CVERecord?id=CVE-2023-6875
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve2023
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
- wordpress
|
||||
- wp
|
||||
|
||||
payloads:
|
||||
- library: http
|
||||
|
|
|
|||
|
|
@ -6,10 +6,8 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- wordpress
|
||||
- wp
|
||||
|
||||
payloads:
|
||||
- library: http
|
||||
|
|
|
|||
|
|
@ -6,10 +6,8 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- wordpress
|
||||
- wp
|
||||
|
||||
payloads:
|
||||
- library: http
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- low_severity
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ info:
|
|||
reference:
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- rce
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ info:
|
|||
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-40539
|
||||
profiles:
|
||||
- vuln
|
||||
- vulnerability
|
||||
- http
|
||||
- critical_severity
|
||||
- cve2021
|
||||
|
|
|
|||
|
|
@ -1816,30 +1816,31 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
|||
|
||||
[[package]]
|
||||
name = "ruff"
|
||||
version = "0.7.3"
|
||||
version = "0.12.11"
|
||||
description = "An extremely fast Python linter and code formatter, written in Rust."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
groups = ["dev"]
|
||||
files = [
|
||||
{file = "ruff-0.7.3-py3-none-linux_armv6l.whl", hash = "sha256:34f2339dc22687ec7e7002792d1f50712bf84a13d5152e75712ac08be565d344"},
|
||||
{file = "ruff-0.7.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:fb397332a1879b9764a3455a0bb1087bda876c2db8aca3a3cbb67b3dbce8cda0"},
|
||||
{file = "ruff-0.7.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:37d0b619546103274e7f62643d14e1adcbccb242efda4e4bdb9544d7764782e9"},
|
||||
{file = "ruff-0.7.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d59f0c3ee4d1a6787614e7135b72e21024875266101142a09a61439cb6e38a5"},
|
||||
{file = "ruff-0.7.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:44eb93c2499a169d49fafd07bc62ac89b1bc800b197e50ff4633aed212569299"},
|
||||
{file = "ruff-0.7.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d0242ce53f3a576c35ee32d907475a8d569944c0407f91d207c8af5be5dae4e"},
|
||||
{file = "ruff-0.7.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:6b6224af8b5e09772c2ecb8dc9f3f344c1aa48201c7f07e7315367f6dd90ac29"},
|
||||
{file = "ruff-0.7.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c50f95a82b94421c964fae4c27c0242890a20fe67d203d127e84fbb8013855f5"},
|
||||
{file = "ruff-0.7.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7f3eff9961b5d2644bcf1616c606e93baa2d6b349e8aa8b035f654df252c8c67"},
|
||||
{file = "ruff-0.7.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8963cab06d130c4df2fd52c84e9f10d297826d2e8169ae0c798b6221be1d1d2"},
|
||||
{file = "ruff-0.7.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:61b46049d6edc0e4317fb14b33bd693245281a3007288b68a3f5b74a22a0746d"},
|
||||
{file = "ruff-0.7.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:10ebce7696afe4644e8c1a23b3cf8c0f2193a310c18387c06e583ae9ef284de2"},
|
||||
{file = "ruff-0.7.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3f36d56326b3aef8eeee150b700e519880d1aab92f471eefdef656fd57492aa2"},
|
||||
{file = "ruff-0.7.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5d024301109a0007b78d57ab0ba190087b43dce852e552734ebf0b0b85e4fb16"},
|
||||
{file = "ruff-0.7.3-py3-none-win32.whl", hash = "sha256:4ba81a5f0c5478aa61674c5a2194de8b02652f17addf8dfc40c8937e6e7d79fc"},
|
||||
{file = "ruff-0.7.3-py3-none-win_amd64.whl", hash = "sha256:588a9ff2fecf01025ed065fe28809cd5a53b43505f48b69a1ac7707b1b7e4088"},
|
||||
{file = "ruff-0.7.3-py3-none-win_arm64.whl", hash = "sha256:1713e2c5545863cdbfe2cbce21f69ffaf37b813bfd1fb3b90dc9a6f1963f5a8c"},
|
||||
{file = "ruff-0.7.3.tar.gz", hash = "sha256:e1d1ba2e40b6e71a61b063354d04be669ab0d39c352461f3d789cac68b54a313"},
|
||||
{file = "ruff-0.12.11-py3-none-linux_armv6l.whl", hash = "sha256:93fce71e1cac3a8bf9200e63a38ac5c078f3b6baebffb74ba5274fb2ab276065"},
|
||||
{file = "ruff-0.12.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b8e33ac7b28c772440afa80cebb972ffd823621ded90404f29e5ab6d1e2d4b93"},
|
||||
{file = "ruff-0.12.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d69fb9d4937aa19adb2e9f058bc4fbfe986c2040acb1a4a9747734834eaa0bfd"},
|
||||
{file = "ruff-0.12.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:411954eca8464595077a93e580e2918d0a01a19317af0a72132283e28ae21bee"},
|
||||
{file = "ruff-0.12.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a2c0a2e1a450f387bf2c6237c727dd22191ae8c00e448e0672d624b2bbd7fb0"},
|
||||
{file = "ruff-0.12.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ca4c3a7f937725fd2413c0e884b5248a19369ab9bdd850b5781348ba283f644"},
|
||||
{file = "ruff-0.12.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4d1df0098124006f6a66ecf3581a7f7e754c4df7644b2e6704cd7ca80ff95211"},
|
||||
{file = "ruff-0.12.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a8dd5f230efc99a24ace3b77e3555d3fbc0343aeed3fc84c8d89e75ab2ff793"},
|
||||
{file = "ruff-0.12.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4dc75533039d0ed04cd33fb8ca9ac9620b99672fe7ff1533b6402206901c34ee"},
|
||||
{file = "ruff-0.12.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fc58f9266d62c6eccc75261a665f26b4ef64840887fc6cbc552ce5b29f96cc8"},
|
||||
{file = "ruff-0.12.11-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:5a0113bd6eafd545146440225fe60b4e9489f59eb5f5f107acd715ba5f0b3d2f"},
|
||||
{file = "ruff-0.12.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0d737b4059d66295c3ea5720e6efc152623bb83fde5444209b69cd33a53e2000"},
|
||||
{file = "ruff-0.12.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:916fc5defee32dbc1fc1650b576a8fed68f5e8256e2180d4d9855aea43d6aab2"},
|
||||
{file = "ruff-0.12.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c984f07d7adb42d3ded5be894fb4007f30f82c87559438b4879fe7aa08c62b39"},
|
||||
{file = "ruff-0.12.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e07fbb89f2e9249f219d88331c833860489b49cdf4b032b8e4432e9b13e8a4b9"},
|
||||
{file = "ruff-0.12.11-py3-none-win32.whl", hash = "sha256:c792e8f597c9c756e9bcd4d87cf407a00b60af77078c96f7b6366ea2ce9ba9d3"},
|
||||
{file = "ruff-0.12.11-py3-none-win_amd64.whl", hash = "sha256:a3283325960307915b6deb3576b96919ee89432ebd9c48771ca12ee8afe4a0fd"},
|
||||
{file = "ruff-0.12.11-py3-none-win_arm64.whl", hash = "sha256:bae4d6e6a2676f8fb0f98b74594a048bae1b944aab17e9f5d504062303c6dbea"},
|
||||
{file = "ruff-0.12.11.tar.gz", hash = "sha256:c6b09ae8426a65bbee5425b9d0b82796dbb07cb1af045743c79bfb163001165d"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -2253,4 +2254,4 @@ type = ["pytest-mypy"]
|
|||
[metadata]
|
||||
lock-version = "2.1"
|
||||
python-versions = "^3.9, <3.13"
|
||||
content-hash = "0377e9d8f656d26bacf2ec6faa811d7172263b595430dc8ce21c5911538d3ed3"
|
||||
content-hash = "0e1731401cd6acfc4d45ede5e18668530aae6a6b2e359d7dc8d8d635635a1257"
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue