Lucene search
+L

Nginx UI <= 2.3.7 - Unauthenticated Installer Exposure

🗓️ 08 Sep 2026 09:11:11Reported by ProjectDiscoveryType 
nuclei
 nuclei
🔗 github.com👁 1 Views

Unauthenticated Nginx UI /api/install lets attackers claim the initial admin account.

Related
Refs
Code
id: CVE-2026-42221

info:
  name: Nginx UI <= 2.3.7 - Unauthenticated Installer Exposure
  author: str4k3r
  severity: high
  description: |
    Nginx UI 2.0.0 to 2.3.8 contains an authentication bypass caused by unauthenticated access to /api/install during first-run setup, letting remote attackers claim the initial admin account, exploit requires attacker to access the service before legitimate operator.
  impact: |
    Remote attackers can permanently take over the initial administrator account, leading to full control of the instance.
  remediation: |
    Upgrade to version 2.3.8 or later.
  reference:
    - https://github.com/0xJacky/nginx-ui/security/advisories/GHSA-h27v-ph7w-m9fp
    - https://github.com/0xJacky/nginx-ui/releases/tag/v2.3.8
    - https://nvd.nist.gov/vuln/detail/CVE-2026-42221
  classification:
    cve-id: CVE-2026-42221
    epss-score: 0.00346
    epss-percentile: 0.27529
    cwe-id: CWE-306
    cvss-score: 8.1
    cvss-metrics: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
  metadata:
    verified: true
    max-request: 2
    vendor: 0xjacky
    product: nginx-ui
    shodan-query: http.title:"Nginx UI"
    fofa-query: app="Nginx-UI"
  tags: cve,cve2026,nginx-ui,unauth,takeover,cwe-306

flow: http(1) && http(2)

http:
  - raw:
      - |
        GET /api/install HTTP/1.1
        Host: {{Hostname}}
        Accept: application/json

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(body, "lock")'
        condition: and
        internal: true

    extractors:
      - type: regex
        part: body
        name: lock_state
        group: 1
        regex:
          - '("lock":\s*(?:true|false)(?:,\s*"timeout":\s*(?:true|false))?)'
        internal: true

  - raw:
      - |
        POST /api/install HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"encrypted_params":"aW52YWxpZA=="}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 400'
          - 'contains_all(body, "decryption failed", "40001")'
        condition: and
# digest: 4a0a00473045022100f935a4ab22e505a23c14571ecea663fac6bf7743bbf361aa97ca2bcccd6302d6022000fbd656d7f44593db5131410fb969a2ae7a233837225fb391f1ce6ac0cac41f:922c64590222798bb761d5b6d8e72950

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation