Skip to content

Commit fdb2018

Browse files
authored
Merge branch 'master' into add-fortivoice-cve-2025-32756
2 parents 0086c06 + d177207 commit fdb2018

10 files changed

Lines changed: 334 additions & 66 deletions

File tree

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,34 @@
11
<!--
2-
Thanks for contributing to OWASP Nettacker!
2+
Thanks for contributing to OWASP Nettacker!
3+
Please read and follow the instructions!
4+
Please DO NOT REMOVE THIS PR TEMPLATE AND THE PR CHECKLIST AT THE BOTTOM!
35
-->
46

57
## Proposed change
68

79
<!--
810
Describe the big picture of your changes.
9-
Don't forget to link your PR to an existing issue if any.
11+
Don't forget to link your PR to a new or existing issue.
12+
Remember to digitally sign your commits, run tests, attach screenshot/video evidence, add documentation
13+
Check and follow the contribution guidelines here: https://nettacker.readthedocs.io/en/latest/Developers/#contribution-guidelines
14+
We use CodeRabbit.AI to perform the first round of PR reviews
15+
PRs failing to comply with the contribution guidelines and PR checks in this template may be auto-closed without a human maintainer review
1016
-->
1117

12-
Your PR description goes here.
18+
Your PR description goes here:
19+
20+
1321

1422
## Type of change
1523

1624
<!--
17-
Type of change you want to introduce. Please, check one (1) box only!
18-
If your PR requires multiple boxes to be checked, most likely it needs to
19-
be split into multiple PRs.
25+
Type of change you want to introduce.
26+
Select one (1) option only.
27+
If your PR seems to fit multiple options, it likely should be split into multiple PRs.
2028
-->
2129

2230
- [ ] New core framework functionality
23-
- [ ] Bugfix (non-breaking change which fixes an issue)
31+
- [ ] Bugfix (non-breaking change that fixes an issue)
2432
- [ ] Code refactoring without any functionality changes
2533
- [ ] New or existing module/payload change
2634
- [ ] Documentation/localization improvement
@@ -31,17 +39,17 @@ Your PR description goes here.
3139
## Checklist
3240

3341
<!--
34-
Put an `x` in the boxes that apply. You can change them after PR is created.
42+
Put an `x` in the boxes that apply. You can change them after the PR is created.
3543
-->
3644

3745
- [ ] I've followed the [contributing guidelines][contributing-guidelines]
38-
- [ ] I have **digitally signed** all my commits in this PR
46+
- [ ] I've **digitally signed** all my commits in this PR
3947
- [ ] I've run `make pre-commit` and confirm it didn't generate any warnings/changes
40-
- [ ] I've run `make test`, I confirm all tests passed locally
48+
- [ ] I've run `make test` and I confirm all tests passed locally
4149
- [ ] I've added/updated any relevant documentation in the `docs/` folder
4250
- [ ] I've linked this PR with an open issue
4351
- [ ] I've tested and verified that my code works as intended and resolves the issue as described
44-
- [ ] I have attached screenshots demonstrating my code works as intended
52+
- [ ] I've attached screenshots demonstrating that my code works as intended (if applicable)
4553
- [ ] I've checked all other open PRs to avoid submitting duplicate work
4654
- [ ] I confirm that the code and comments in this PR are not direct unreviewed outputs of AI
4755
- [ ] I confirm that I am the Sole Responsible Author for every line of code, comment, and design decision
@@ -50,4 +58,4 @@ Your PR description goes here.
5058
Thanks again for your contribution!
5159
-->
5260

53-
[contributing-guidelines]: https://nettacker.readthedocs.io/en/latest/Developers/
61+
[contributing-guidelines]: https://nettacker.readthedocs.io/en/latest/Developers/#contribution-guidelines

.github/dependabot.yml

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,61 @@
1-
# To get started with Dependabot version updates, you'll need to specify which
2-
# package ecosystems to update and where the package manifests are located.
3-
# Please see the documentation for all configuration options:
4-
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5-
61
version: 2
72
updates:
8-
- package-ecosystem: "pip" # See documentation for possible values
9-
directory: "/" # Location of package manifests
3+
- package-ecosystem: 'docker'
4+
cooldown:
5+
default-days: 21
6+
directory: '/'
7+
groups:
8+
version-updates:
9+
applies-to: version-updates
10+
patterns:
11+
- '*'
1012
schedule:
11-
interval: "daily"
13+
interval: 'weekly'
1214

13-
- package-ecosystem: "docker" # See documentation for possible values
14-
directory: "/" # Location of package manifests
15+
- package-ecosystem: 'github-actions'
16+
cooldown:
17+
default-days: 21
18+
directory: '/'
19+
groups:
20+
version-updates:
21+
applies-to: version-updates
22+
patterns:
23+
- '*'
1524
schedule:
16-
interval: "daily"
25+
interval: 'weekly'
1726

18-
- package-ecosystem: "mix" # See documentation for possible values
19-
directory: "/" # Location of package manifests
27+
- package-ecosystem: 'gitsubmodule'
28+
cooldown:
29+
default-days: 21
30+
directory: '/'
31+
groups:
32+
version-updates:
33+
applies-to: version-updates
34+
patterns:
35+
- '*'
2036
schedule:
21-
interval: "daily"
37+
interval: 'weekly'
2238

23-
- package-ecosystem: "github-actions" # See documentation for possible values
24-
directory: "/" # Location of package manifests
39+
- package-ecosystem: 'mix'
40+
cooldown:
41+
default-days: 21
42+
directory: '/'
43+
groups:
44+
version-updates:
45+
applies-to: version-updates
46+
patterns:
47+
- '*'
2548
schedule:
26-
interval: "daily"
49+
interval: 'weekly'
2750

28-
- package-ecosystem: "gitsubmodule" # See documentation for possible values
29-
directory: "/" # Location of package manifests
51+
- package-ecosystem: 'pip'
52+
cooldown:
53+
default-days: 21
54+
directory: '/'
55+
groups:
56+
version-updates:
57+
applies-to: version-updates
58+
patterns:
59+
- '*'
3060
schedule:
31-
interval: "daily"
61+
interval: 'weekly'

.github/workflows/ci_cd.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ jobs:
5454
- name: Check out repository
5555
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
5656
- name: Initialize CodeQL
57-
uses: github/codeql-action/init@38697555549f1db7851b81482ff19f1fa5c4fedc
57+
uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13
5858
with:
5959
languages: ${{ matrix.language }}
6060

6161
- name: Perform CodeQL Analysis
62-
uses: github/codeql-action/analyze@38697555549f1db7851b81482ff19f1fa5c4fedc
62+
uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13
6363
with:
6464
category: /language:${{ matrix.language }}
6565

@@ -269,7 +269,7 @@ jobs:
269269
- name: Check out repository
270270
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
271271
- name: Login to Docker Hub
272-
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2
272+
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121
273273
with:
274274
username: ${{ secrets.DOCKER_HUB_USERNAME }}
275275
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
@@ -304,7 +304,7 @@ jobs:
304304
- name: Set up QEMU
305305
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a
306306
- name: Login to Docker Hub
307-
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2
307+
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121
308308
with:
309309
username: ${{ secrets.DOCKER_HUB_USERNAME }}
310310
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ OWASP Nettacker is an open-source, Python-based automated penetration testing an
4545
Automate and scale common reconnaissance tasks like subdomain enumeration, directory brute-forcing, and default credential checks to speed up finding targets.
4646

4747
- **Network Vulnerability Scanning**
48-
Efficiently scan IPs, IP ranges, or entire CIDR blocks or all subdmains of the organisation in parallel using a modular, multithreaded approach for large-scale network assessments.
48+
Efficiently scan IPs, IP ranges, or entire CIDR blocks or all subdomains of the organisation in parallel using a modular, multithreaded approach for large-scale network assessments.
4949

5050
- **Shadow IT & Asset Discovery**
5151
Use historical scan data and drift detection to uncover unmanaged or forgotten hosts, open ports/services, and subdomains appearing over time.

docs/Events.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ The OWASP Nettacker Events page lists various conferences and meetups where the
66
* OFFSECONF 2017 Introduction Presentation [[1](https://drive.google.com/file/d/1Ox1xpvncPgSZPaFjvTQvkOwxP3to7Rqk/view?usp=sharing)]
77
* OWASP Nettacker Accepted for **Google Summer of Code 2018** [[1](https://www.owasp.org/index.php/GSOC2018_Ideas)] [[2](https://summerofcode.withgoogle.com/organizations/6664778743808000/)]
88
* OWASP Nettacker Video Conference/Webinar for GSoC Team 1 May 2018 - **Vahid Behzadan - ML/AI in CyberSecurity** [[1](https://www.youtube.com/watch?v=7RQH8oECSyg)]
9-
* **Shaddy Garg**'s GSoC Experince [[1](https://medium.com/@shaddygarg/google-summer-of-code-final-submission-12eb98993ba8)]
10-
* **Pradeep Jairamani**'s GSoC Experince [[1](https://medium.com/@pradeepjairamani/google-summer-of-code-final-submission-7a498856c914)]
11-
* OWASP Nettacker Tutorial by at **OWASP Bay Area** meetup (Presented by **Vahid Behzadan** - Sponsered by **OWASP Bay Area**) [[1](https://www.youtube.com/watch?v=4pu4hJMk6m8)]
9+
* **Shaddy Garg**'s GSoC Experience [[1](https://medium.com/@shaddygarg/google-summer-of-code-final-submission-12eb98993ba8)]
10+
* **Pradeep Jairamani**'s GSoC Experience [[1](https://medium.com/@pradeepjairamani/google-summer-of-code-final-submission-7a498856c914)]
11+
* OWASP Nettacker Tutorial at **OWASP Bay Area** meetup (Presented by **Vahid Behzadan** - Sponsored by **OWASP Bay Area**) [[1](https://www.youtube.com/watch?v=4pu4hJMk6m8)]
1212
* OWASP Nettacker Presented By Ali Razmjoo in OWASP Iran Chapter Meeting July 2018 [[1](https://www.owasp.org/index.php/Iran#tab=Past_Events)]
1313
* OWASP Nettacker ICS Section Presented in **P0SCON 2018 By Mohammad Reza Zamiri** [[1](http://www.poscon.ir/)]
1414
* OWASP Nettacker ICS Section will be presented in **KasperSky Industrial Cybersecurity**: Opportunities and challenges in Digital Transformation 2018 by **Mohammad Reza Zamiri** [[1](https://github.com/zdresearch/OWASP-Nettacker/tree/master/lib/payload/scanner/ics_honeypot)] [[2](https://ics.kaspersky.com/conference/)]

docs/Modules.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ If you want to scan all ports please define -g 1-65535 range. Otherwise Nettacke
144144
- '**content_type_options_vuln**' - check the web server for missing 'X-Content-Type-Options'=nosniff header
145145
- '**crushftp_cve_2025_31161_vuln**' - check the target for CrushFTP CVE-2025-31161 vulnerability
146146
- '**f5_cve_2020_5902_vuln**' - check the target for F5 RCE CVE-2020-5902 vulnerability
147+
- '**geoserver_cve_2024_36401_vuln**' - check the target for CVE-2024-36401 vulnerability
147148
- '**heartbleed_vuln**' - check SSL for Heartbleed vulnerability (CVE-2014-0160)
148149
- '**msexchange_cve_2021_26855**' - check the target for MS Exchange SSRF CVE-2021-26855 (proxylogon/hafnium)
149150
- '**nextjs_cve_2025_55182_vuln**' - check the target for CVE-2025-55182(React2Shell)

docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# Documentation
22

3-
OWASP Nettacker documentaion is now available on ReadTheDocs: [https://nettacker.readthedocs.io](https://nettacker.readthedocs.io)
3+
OWASP Nettacker documentation is now available on ReadTheDocs: [https://nettacker.readthedocs.io](https://nettacker.readthedocs.io)

docs/Usage.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ usage: Nettacker [-L LANGUAGE] [-v] [--verbose-event] [-V] [-o REPORT_PATH_FILEN
246246
خواندن کلمه عبور (ها) از فایل
247247
-g PORTS, --ports PORTS
248248
لیست درگاه (ها)، با "," جدا شود
249-
--schema SCHMEA schema(s) list, separate with ","
249+
--schema SCHEMA schema(s) list, separate with ","
250250
--user-agent USER_AGENT
251251
Select a user agent to send with HTTP requests or enter "random_user_agent" to randomize the
252252
User-Agent in the requests.
@@ -547,7 +547,7 @@ def nettacker_user_application_config():
547547
4. SARIF (.sarif)
548548
5. DefectDojo compatible json (.dd.json)
549549

550-
These output types will help with integration with different softwares and dashboards. To set the output mode use the `-o` or `--output` flag
550+
These output types will help with integration with different software and dashboards. To set the output mode use the `-o` or `--output` flag
551551

552552
```
553553
python nettacker.py -i 192.168.1.1/24 --profile information_gathering -o report.sarif
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
info:
2+
name: geoserver_cve_2024_36401_vuln
3+
author: Sankalp Bansal
4+
severity: 9.8
5+
description: >
6+
CVE-2024-36401 is a critical vulnerability in GeoServer, an opensource
7+
server that allows user to edit and share geospatial data. The Geoserver
8+
library API passes property names as common-jsxpath library which can
9+
execute arbitrary code when processing XPath expressions.
10+
reference:
11+
- https://nvd.nist.gov/vuln/detail/cve-2024-36401
12+
- https://github.com/Mr-xn/CVE-2024-36401
13+
- https://www.bitsight.com/blog/geoserver-cve-2024-36401-tailoring-public-poc-enable-high-confidence-detection
14+
profiles:
15+
- vuln
16+
- http
17+
- critical_severity
18+
- cve
19+
- cve_2024
20+
- geoserver
21+
- cisa_kev
22+
23+
payloads:
24+
- library: http
25+
steps:
26+
- method: get
27+
timeout: 3
28+
headers:
29+
User-Agent: "{user_agent}"
30+
ssl: false
31+
url:
32+
nettacker_fuzzer:
33+
input_format: "{{schema}}://{target}:{{ports}}/geoserver/wfs?service=wfs&request=DescribeFeatureType"
34+
prefix: ""
35+
suffix: ""
36+
interceptors:
37+
data:
38+
schema:
39+
- "http"
40+
ports:
41+
- 80
42+
response:
43+
save_to_temp_events_only: get_valid_namespace_1
44+
condition_type: and
45+
conditions:
46+
status_code:
47+
regex: "200"
48+
reverse: false
49+
content:
50+
regex: typeName=([A-Za-z_][A-Za-z0-9._-]*%3A[A-Za-z_][A-Za-z0-9._-]*)
51+
reverse: false
52+
53+
- method: get
54+
timeout: 3
55+
headers:
56+
User-Agent: "{user_agent}"
57+
ssl: false
58+
url:
59+
nettacker_fuzzer:
60+
input_format: "{{schema}}://{target}:{{ports}}/geoserver/wfs?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=dependent_on_temp_event[0]['content'][0]&valueReference=java.lang.Runtime.getRuntime%28%29"
61+
prefix: ""
62+
suffix: ""
63+
interceptors:
64+
data:
65+
schema:
66+
- "http"
67+
ports:
68+
- 80
69+
response:
70+
dependent_on_temp_event: get_valid_namespace_1
71+
condition_type: and
72+
conditions:
73+
status_code:
74+
regex: "400"
75+
reverse: false
76+
content:
77+
regex: "ClassCastException"
78+
reverse: false
79+
80+
- library: http
81+
steps:
82+
- method: get
83+
timeout: 3
84+
headers:
85+
User-Agent: "{user_agent}"
86+
ssl: false
87+
url:
88+
nettacker_fuzzer:
89+
input_format: "{{schema}}://{target}:{{ports}}/geoserver/wfs?service=wfs&request=DescribeFeatureType"
90+
prefix: ""
91+
suffix: ""
92+
interceptors:
93+
data:
94+
schema:
95+
- "https"
96+
ports:
97+
- 443
98+
response:
99+
save_to_temp_events_only: get_valid_namespace_2
100+
condition_type: and
101+
conditions:
102+
status_code:
103+
regex: "200"
104+
reverse: false
105+
content:
106+
regex: typeName=([A-Za-z_][A-Za-z0-9._-]*%3A[A-Za-z_][A-Za-z0-9._-]*)
107+
reverse: false
108+
109+
- method: get
110+
timeout: 3
111+
headers:
112+
User-Agent: "{user_agent}"
113+
ssl: false
114+
url:
115+
nettacker_fuzzer:
116+
input_format: "{{schema}}://{target}:{{ports}}/geoserver/wfs?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=dependent_on_temp_event[0]['content'][0]&valueReference=java.lang.Runtime.getRuntime%28%29"
117+
prefix: ""
118+
suffix: ""
119+
interceptors:
120+
data:
121+
schema:
122+
- "https"
123+
ports:
124+
- 443
125+
response:
126+
dependent_on_temp_event: get_valid_namespace_2
127+
condition_type: and
128+
conditions:
129+
status_code:
130+
regex: "400"
131+
reverse: false
132+
content:
133+
regex: "ClassCastException"
134+
reverse: false

0 commit comments

Comments
 (0)