Skip to content
Open
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
0cc045d
Merge pull request #4 from OWASP/master
Aarush289 Jan 20, 2026
2a32fe2
Merge pull request #8 from OWASP/master
Aarush289 Feb 5, 2026
4090ae3
Merge pull request #9 from OWASP/master
Aarush289 Feb 8, 2026
2a0b83e
Add FortiWeb authentication bypass vulnerability check
Aarush289 Feb 10, 2026
b1ffe4e
Remove FortiWeb auth bypass vulnerability entry
Aarush289 Feb 10, 2026
6db5ee7
Fix vulnerability name in wp_plugin_cve_2021_38314.yaml
Aarush289 Feb 10, 2026
6fd226a
Rename CVE identifier from 39314 to 39320
Aarush289 Feb 10, 2026
03675d5
Merge pull request #10 from OWASP/master
Aarush289 Feb 12, 2026
0d3399e
Merge pull request #13 from OWASP/master
Aarush289 Feb 18, 2026
ace2db9
Merge pull request #14 from OWASP/master
Aarush289 Feb 23, 2026
0711d39
Merge pull request #16 from OWASP/master
Aarush289 Mar 3, 2026
0857127
Merge pull request #18 from OWASP/master
Aarush289 Mar 8, 2026
44a9ae6
Merge pull request #19 from OWASP/master
Aarush289 Mar 20, 2026
95ac772
Merge pull request #20 from OWASP/master
Aarush289 Apr 9, 2026
5d5201e
Merge remote-tracking branch 'upstream/master'
Aarush289 Apr 25, 2026
b03d8bc
Merge pull request #22 from OWASP/master
Aarush289 May 25, 2026
7f65c13
Merge pull request #23 from OWASP/master
Aarush289 Jun 6, 2026
0c9084d
new module added
Aarush289 Jul 4, 2026
e4372dc
fix severity
Aarush289 Jul 4, 2026
a7f4604
Merge branch 'master' into nginx_ui_cve_2026_33032_vuln
Aarush289 Jul 4, 2026
44b0b8e
Merge branch 'master' into nginx_ui_cve_2026_33032_vuln
securestep9 Jul 10, 2026
61a6de4
Merge branch 'master' into nginx_ui_cve_2026_33032_vuln
securestep9 Jul 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/Modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@ If you want to scan all ports please define -g 1-65535 range. Otherwise Nettacke
- '**msexchange_cve_2021_26855_vuln**' – check the target for MS Exchange SSRF CVE-2021-26855
- '**msexchange_cve_2021_34473_vuln**' – check the target for MS Exchange CVE-2021-34473 vulnerability
- '**novnc_cve_2021_3654_vuln**' – check the target for noVNC CVE-2021-3654 vulnerability
- '**nginx_ui_cve_2026_33032_vuln**' – check unauthenticated MCP endpoint exposure vulnerability CVE-2026-33032
- '**omigod_cve_2021_38647_vuln**' – check the target for OMIGOD CVE-2021-38647 vulnerability
- '**paloalto_globalprotect_cve_2025_0133_vuln**' – check the target for PaloAlto GlobalProtect CVE-2025-0133 XSS vulnerability
- '**paloalto_panos_cve_2025_0108_vuln**' – check the target for PaloAlto PAN-OS CVE-2025-0108 vulnerability
Expand Down
80 changes: 80 additions & 0 deletions nettacker/modules/vuln/nginx_ui_cve_2026_33032.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
info:
name: nginx_ui_cve_2026_33032_vuln
author: Nettacker Team
severity: 9.8
description: |
Detects a Broken Access Control vulnerability in Nginx UI versions prior
to 2.3.4. The `/mcp_message` endpoint processes unauthenticated JSON-RPC
requests and returns a JSON-RPC error indicating a missing session ID
instead of rejecting the request with an authentication error. Successful
detection indicates the endpoint is reachable without authentication and
is likely vulnerable to CVE-2026-33032.
references:
- https://github.com/0xJacky/nginx-ui/security/advisories/GHSA-h6c2-x2m2-mwhf
- https://github.com/0xJacky/nginx-ui/commit/413dc631
- https://nvd.nist.gov/vuln/detail/CVE-2026-33032
profiles:
- vuln
- http
- cve
- cve2026
- nginx_ui
- mcp
- unauth
- critical_severity

payloads:
- library: http
steps:
- method: post
timeout: 5
headers:
User-Agent: "{user_agent}"
Content-Type: "application/json"
ssl: false
allow_redirects: false
url:
nettacker_fuzzer:
input_format: "{{schema}}://{target}:{{ports}}/mcp_message"
prefix: ""
suffix: ""
interceptors:
data:
schema:
- "http"
- "https"
ports:
- 80
- 443
- 9000

data: |
{{
"jsonrpc":"2.0",
"method":"initialize",
"params":{{
"protocolVersion":"2024-11-05",
"capabilities":{{}},
"clientInfo":{{
"name":"nettacker",
"version":"1.0"
}}
}},
"id":1
}}

response:
condition_type: and
conditions:
status_code:
regex: "400"
reverse: false

headers:
Content-Type:
regex: "application/json"
reverse: false

content:
regex: '(?s)(?=.*"jsonrpc":)(?=.*"message")(?=.*"id").*'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require the missing-session error in the match

When any non-nginx-ui JSON-RPC/MCP service happens to expose /mcp_message and returns a normal 400 JSON-RPC error, this condition will still pass because it only requires jsonrpc, message, and id somewhere in the body. That can report CVE-2026-33032 for unrelated services; the probe description says it is looking for the missing-session response, so the content check should include that specific error text or another nginx-ui-specific fingerprint.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The probe already fingerprints the target using the specific /mcp_message endpoint and a valid MCP JSON-RPC request. Requiring an exact error string would lead to false negatives, as response messages may change across versions.

reverse: false
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Loading