توضیحات
آسیب پذیری بحرانی CVE-2026-32475 در پلاگین Elementor Pro وردپرس از نوع آپلود فایل دلخواه بدون احراز هویت است که میتواند در شرایط خاص منجر به اجرای کد از راه دور (RCE) شود.
این آسیب پذیری در دسته آپلود فایل با نوع غیرمجاز (Unrestricted Upload of File with Dangerous Type) مطابق با CWE-434 قرار میگیرد؛ این ضعف زمانی رخ میدهد که ساز و کار اعتبارسنجی نتواند از آپلود فایل هایی با پسوندهای غیرمجاز یا قابل اجرا در سمت سرور جلوگیری کند. Elementor Pro نسخه پولی ابزار ساخت صفحه Elementor است که قابلیت های پیشرفته ای از جمله ایجاد فرم های تماس، درخواست استخدام و پشتیبانی را در اختیار مدیران وب سایت قرار میدهد. یکی از امکانات ماژول Forms، فیلد آپلود فایل است که به بازدید کنندگان اجازه میدهد فایل های مورد نیاز را از طریق فرم های منتشرشده ارسال کنند. آسیب پذیری مذکور در نحوه اعتبارسنجی و پردازش فایل های ارسالی از طریق این فیلد وجود دارد و میتواند به مهاجم راه دور و بدون نیاز به احراز هویت اجازه دهد با دور زدن ساز و کار اعتبارسنجی، فایل های اجرایی، از جمله فایل های PHP را آپلود کند. در صورتی که پیکربندی سرور امکان اجرای این فایل ها را در مسیر ذخیره سازی فراهم کند، این ضعف میتواند منجر به اجرای کد از راه دور (RCE) شود.
ریشه این آسیب پذیری به ناهماهنگی میان دو لوپ(loop) مجزا در فایل modules/forms/fields/upload.php بازمیگردد. متد validation() وظیفه بررسی فایل های ارسالی و اعتبارسنجی پسوند آن ها را بر عهده دارد؛ در مقابل، متد process_field() فایل ها را پردازش کرده و آن ها را به مسیر ذخیره سازی منتقل میکند. پلاگین برای جلوگیری از آپلود فایل های دارای پسوند غیرمجاز، از تابع is_file_type_valid() استفاده میکند که پسوند فایل را با فهرست پسوندهای مجاز مقایسه کرده و هم زمان، از پذیرش فایل هایی با پسوندهای موجود در بلاک لیست جلوگیری میکند. این فهرست شامل پسوندهای اجرایی مانند php، php3، php4، php5 و phtml است؛ بنابراین، ساز و کار اعتبارسنجی پلاگین به طور معمول مانع آپلود مستقیم فایل هایی با پسوند .php میشود.
با این حال، مشکل اصلی در نحوه مدیریت بخش های فاقد فایل در درخواست آپلود چند بخشی (Multipart Request) رخ میدهد. منظور از بخش فاقد فایل، بخشی از درخواست است که برای آن فایلی انتخاب نشده و PHP وضعیت آن را با UPLOAD_ERR_NO_FILE مشخص میکند؛ این وضعیت با ارسال یک فایل واقعی اما فاقد محتوا تفاوت دارد. در متد validation()، در صورت اختیاری بودن فیلد آپلود و وجود بخشی فاقد فایل در درخواست، دستور بازگشت (return) کل متد را متوقف میکند؛ در نتیجه، بخش های بعدی درخواست اعتبارسنجی نمیشوند. در مقابل، متدprocess_field() در مواجهه با همین وضعیت از دستور عبور از بخش فعلی (continue) استفاده میکند. این دستور از پردازش بخش فعلی صرف نظر میکند و اجرای لوپ را برای رسیدگی به بخش های بعدی ادامه میدهد.
این تفاوت در عملکرد دو لوپ، امکان دور زدن اعتبارسنجی را فراهم میکند. مهاجم میتواند ابتدا بخشی فاقد فایل و سپس فایلی با پسوند .php را در همان درخواست آپلود ارسال کند. در این حالت، متد validation() با شناسایی بخش نخست و دریافت وضعیت UPLOAD_ERR_NO_FILE، پیش از بررسی فایل دوم متوقف میشود؛ اما متد process_field() از بخش نخست عبور کرده و فایل PHP را برای ذخیره سازی پردازش میکند. در نتیجه، فایل بدون اعتبارسنجی صحیح پسوند به مرحله ذخیره سازی میرسد. بنابراین، مشکل اصلی نبود بلاک لیست نیست، بلکه تفاوت در نحوه پردازش بخش های فاقد فایل در دو متد است که باعث میشود فایل های غیرمجاز از بررسی پسوند عبور کنند.
هنگام ذخیره سازی، پلاگین نام اصلی فایل را کنار میگذارد و با استفاده از تابع uniqid() نام جدیدی تولید میکند؛ سپس پسوند فایل را به آن اضافه کرده و با تابع wp_unique_filename از تکراری نبودن نام نهایی اطمینان حاصل میکند. فایل ها در مسیر عمومی wp-content/uploads/elementor/forms/ ذخیره میشوند. از این رو، اگر مهاجم با دور زدن اعتبارسنجی، فایل PHP مخربی را در این مسیر قرار دهد و سرور نیز اجازه اجرای PHP را در آن بدهد، دسترسی مستقیم به فایل میتواند منجر به اجرای کد از راه دور با سطح دسترسی پردازه وب سرور شود.
برای سوء استفاده از این آسیب پذیری، دست کم یک صفحه منتشرشده حاوی ویجت Form و فیلد File Upload لازم است. فرم از طریق درخواست AJAX با نام elementor_pro_forms_send_form ارسال میشود. اطلاعات لازم برای ساخت این درخواست، از جمله post_id، form_id و شناسه فیلد آپلود، در کد HTML صفحه عمومی قابل مشاهده است. طبق تحلیل Patchstack، این درخواست به نشست کاربری یا توکن nonce نیاز ندارد؛ بنابراین، مهاجم بدون احراز هویت میتواند آن را ارسال کند. همچنین، اختیاری بودن فیلد آپلود در این آسیب پذیری نقش مهمی دارد؛ زیرا اگر درخواست شامل بخشی بدون فایل باشد، اعتبارسنجی زودتر از موعد متوقف میشود و ممکن است فایل های بعدی بدون بررسی پسوند پردازش شوند.
تابع uniqid() برای تولید نام فایل از مقادیر مبتنی بر زمان استفاده میکند و برای تولید شناسه های امن و غیرقابل پیش بینی از نظر رمزنگاری طراحی نشده است. بنابراین، مهاجم ممکن است با استفاده از زمان تقریبی آپلود، نام فایل را حدس بزند. همچنین، اگر اعلان ایمیلی و پاسخ خودکار فرم فعال باشند، قالب [all-fields] ممکن است آدرس فایل آپلود شده را در متن ایمیل درج کند. در این صورت، مهاجم میتواند آدرس دقیق فایل را از طریق ایمیل به دست آورد. البته، امکان استفاده از این روش به تنظیمات فرم و نحوه ارسال ایمیل بستگی دارد.
سوء استفاده از این آسیب پذیری از طریق شبکه و بدون نیاز به احراز هویت یا تعامل کاربرامکان پذیر است. در صورت موفقیت حمله، محرمانگی (Confidentiality)، یکپارچگی (Integrity) و دسترس پذیری (Availability) سامانه میتوانند به شدت تحت تأثیر قرار گیرند. همچنین، دامنه تأثیر حمله میتواند از بخش آسیب پذیر فراتر رود.
این آسیب پذیری در نسخه 4.2.2 پلاگین Elementor Pro پچ شده است و کاربران برای رفع آن باید پلاگین را به این نسخه یا نسخه های جدیدتر بروزرسانی کنند.
CVSS
| Score | Severity | Version | Vector String |
| 9.0 | CRITICAL | 3.1 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H |

لیست محصولات آسیب پذیر
| Versions | Product |
| <= 4.2.1 | Elementor Pro |
لیست محصولات بروز شده
| Versions | Product |
| 4.2.2 or later | Elementor Pro |
استفاده محصول در ایران
در این جدول، تعداد صفحات ایندکس شده در گوگل با دامنه .ir که Elementor Pro را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.
| Approx. Usage in .ir Domain via Google (Total Pages) | Search Query (Dork) | Product |
| 126,000 | site:.ir “Elementor Pro” | Elementor Pro |
نتیجه گیری
این آسیب پذیری در پلاگین Elementor Pro وردپرس به مهاجم اجازه میدهد بدون نیاز به احراز هویت و با دور زدن ساز و کار اعتبارسنجی، فایل های دلخواه، از جمله فایل های PHP را روی سرور آپلود کند. در صورتی که سرور امکان اجرای فایل های PHP را در مسیر ذخیره سازی فراهم کرده باشد، سوء استفاده از این ضعف میتواند منجر به اجرای کد از راه دور (RCE) شود. با توجه به شدت بحرانی این آسیب پذیری و امکان سوء استفاده از آن بدون نیاز به احراز هویت، اقدامات زیر برای رفع آسیب پذیری و پیشگیری از حملات احتمالی توصیه میشود:
- بروزرسانی پلاگین Elementor Pro: پلاگین Elementor Pro به نسخه 2.2 یا جدیدتر بروزرسانی شود. در این نسخه، منطق پردازش ورودی های فاقد فایل در مراحل اعتبارسنجی و انتقال فایل اصلاح شده است. همچنین، پسوند فایل در تابع process_field() و پیش از انتقال آن به مسیر ذخیره سازی، مجدداً بررسی میشود تا از دور زدن اعتبارسنجی و آپلود فایل های غیرمجاز جلوگیری شود. بروزرسانی پلاگین به نسخه 4.2.2 یا جدیدتر، مهم ترین راهکار برای رفع این آسیب پذیری و جلوگیری از سوء استفاده از آن است.
- بررسی فایل های آپلود شده: مسیر wp-content/uploads/elementor/forms/ برای شناسایی فایل های ناشناس یا فایل هایی با پسوندهای غیرمجاز، به ویژه .php، بررسی شود. فایل های مشکوک باید از نظر ماهیت و عملکرد ارزیابی شوند و در صورت تأیید مخرب بودن، از سرور حذف گردند. این اقدام به شناسایی و پاک سازی فایل هایی کمک میکند که ممکن است مهاجم پیش از بروزرسانی پلاگین روی سرور آپلود کرده باشد.
- غیرفعال کردن موقت قابلیت آپلود فایل: تا زمان بروزرسانی پلاگین، قابلیت آپلود فایل در فرم های عمومی Elementor Pro غیرفعال شود. این اقدام از ارسال فایل از طریق فرم های آسیب پذیر جلوگیری کرده و احتمال سوء استفاده از آسیب پذیری کاهش میدهد.
- محدود سازی انواع فایل مجاز در فرم ها: فیلدهای آپلود به انواع فایل ضروری و موردنیاز، مانند تصاویر یا اسناد مشخص، محدود شوند. این اقدام سطح ریسک ناشی از دریافت فایل های غیرضروری را کاهش میدهد؛ با این حال، به دلیل وجود ضعف در ساز و کار اعتبارسنجی، این محدودیت به تنهایی برای رفع آسیب پذیری کافی نیست و باید در کنار بروزرسانی پلاگین اعمال شود.
اجرای این اقدامات در کنار بروزرسانی پلاگین و بررسی فایل های موجود، احتمال آپلود فایل های مخرب، اجرای کد از طریق فایل های PHP و تداوم سوء استفاده از آسیب پذیری را کاهش میدهد.
امکان استفاده در تاکتیک های MITRE ATT&CK (در زمان اجرای حمله)
Initial Access (TA0001)
مهاجم برای بهره برداری از این آسیب پذیری نیازی به هیچ گونه احراز هویت یا دسترسی قبلی ندارد و میتواند از طریق اینترنت به وب سایت هدف دسترسی پیدا کند. این نقص در دسته Exploit Public-Facing Application (T1190) قرار میگیرد، زیرا نقطه ورود، یک فرم آپلود فایل در یک صفحه عمومی Elementor Pro است که از طریق درخواست HTTP به آن دسترسی وجود دارد. شرط لازم برای آسیب پذیری این است که سایت حداقل یک صفحه منتشرشده با ویجت فرم Elementor Pro داشته باشد که دارای فیلد آپلود فایل باشد و آن فیلد به صورت اجباری (required) تنظیم نشده باشد.
Execution (TA0002)
هستهٔ اصلی آسیب پذیری در فاز اجرای کد قرار دارد و ناشی از ناهماهنگی منطقی بین دو حلقه در ماژول Forms است. تابع validation() برای بررسی پسوند فایل از یک حلقه استفاده میکند، در حالی که تابع process_field() برای جا به جایی فایل از حلقه ای جداگانه بهره میبرد. زمانی که مهاجم یک درخواست multipart با دو بخش فایل برای یک فیلد ارسال میکند، بخش اول خالی است (با خطای UPLOAD_ERR_NO_FILE) و بخش دوم حاوی فایل PHP. در این حالت، تابع validation() با دیدن بخش اول زودتر بازمیگردد و بخش دوم را هرگز بررسی نمیکند؛ اما تابع process_field() بخش خالی را نادیده میگیرد و بخش دوم (فایل PHP) را به پوشه عمومی منتقل میکند. سپس مهاجم با یک درخواست GET مستقیم به فایل آپلود شده، آن را اجرا کرده و به اجرای کد از راه دور (RCE) دست مییابد.
Persistence (TA0003)
خود آسیب پذیری یک مکانیسم ماندگاری نیست، اما فایل PHP آپلود شده (که اغلب به عنوان Web Shell طراحی میشود) به مهاجم اجازه میدهد تا حضور خود را در سرور تداوم بخشد. این نقص با تکنیک Server Software Component: Web Shell (T1505.003) مطابقت دارد. مهاجم میتواند از این Web Shell برای اجرای دستورات دلخواه، آپلود بک دورهای بیشتر، یا ایجاد کاربران مخفی در وردپرس استفاده کند. نکته مهم اینکه بروزرسانی افزونه، فایل های آلوده ای که قبلاً آپلود شده اند را حذف نمیکند و مدیران باید پوشه آپلود Elementor را به صورت دستی بررسی و پاکسازی کنند.
Impact (TA0040)
اجرای موفق کد روی سرور وردپرس میتواند محرمانگی، یکپارچگی و دسترس پذیری وب سایت را به خطر بیندازد. مهاجم ممکن است به داده های قابل دسترس برای پردازه وب سرور دسترسی پیدا کند، محتوای سایت را تغییر دهد، فایل های مخرب اضافه کند یا سرویس را مختل سازد. در صورت دستیابی به دسترسی مدیریتی وردپرس یا سطح دسترسی بالاتر روی سرور، دامنه خسارت میتواند فراتر از خود وب سایت گسترش یابد. گزارش های امنیتی، بهره برداری فعال از این نقص برای بارگذاری web shell و اجرای فرمان روی سرور را تأیید کردهاند.
منابع
- https://www.cve.org/CVERecord?id=CVE-2026-32475
- https://www.cvedetails.com/cve/CVE-2026-32475/
- https://patchstack.com/database/wordpress/plugin/elementor-pro/vulnerability/wordpress-elementor-pro-plugin-4-2-1-arbitrary-file-upload-vulnerability?_s_id=cve
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2026-32475
- https://vuldb.com/vuln/393249
- https://patchstack.com/articles/critical-unauthenticated-file-upload-to-rce-in-elementor-pro-plugin?_s_id=cve
- https://www.wordfence.com/blog/2026/09/attackers-actively-exploiting-critical-vulnerability-in-elementor-pro-plugin/
- https://nvd.nist.gov/vuln/detail/cve-2026-32475
- https://cwe.mitre.org/data/definitions/434.html
گزارش اثبات آسیبپذیری CVE-2026-32475
اطلاعات آسیبپذیری
عنوان: آپلود فایل دلخواه و اجرای کد از راه دور در افزونه وردپرس Elementor Pro از طریق دور زدن اعتبارسنجی فیلد آپلود فرم
شناسه: CVE-2026-32475
وضعیت مشاوره: Advisory / Actively Exploited / Patch Available
امتیاز: CVSS: 9.0 (CRITICAL)
محصول: Elementor Pro
محصول / نسخههای آسیبپذیر
در نسخههای زیر:
- Elementor Pro نسخه 4.2.1 و نسخه های قدیمیتر
محیطهای درگیر
- وب سایت های مبتنی بر WordPress با Elementor Pro آسیب پذیر
- فرم های عمومی Elementor Pro Forms که قابلیت آپلود فایل دارند
- سرورهای وب که فایل های آپلود شده در مسیر عمومی وب ذخیره میشوند
- محیط هایی که فایل PHP در مسیر آپلود امکان اجرا دارد
- سرورهایی که اجرای PHP در مسیر wp-content/uploads فعال است (مانند Apache + mod_php)
کامپوننتهای آسیبپذیر
- ماژول Forms پلاگین Elementor Pro
- فایل modules/forms/fields/upload.php
- تابع validation()، اعتبارسنجی ورودی های فرم
- تابع process_field()، پردازش نهایی فیلدهای فرم
ریشه مشکل (Root Cause Analysis)
ریشه اصلی این آسیب پذیری CWE-434 (Unrestricted Upload of File with Dangerous Type) ناشی از ناسازگاری دو حلقه جداگانه در پردازش آپلود است. در فایل modules/forms/fields/upload.php، حلقه validation() هنگام برخورد با ورودی خالی (UPLOAD_ERR_NO_FILE) با دستور return کل اعتبارسنجی فیلد را متوقف میکند، در حالی که حلقه process_field() همان ورودی خالی را با continue رد کرده و فایل بعدی (payload) را بدون بررسی پسوند یا نوع، به مسیر عمومی منتقل میکند. مهاجم با ارسال یک درخواست multipart شامل دو بخش برای همان فیلد، بخش اول خالی و بخش دوم فایل PHP باعث میشود بررسی نوع فایل اجرا نشود و فایل با پسوند .php در مسیر wp-content/uploads/elementor/forms/<uniqid()>.php ذخیره شود. نام فایل از uniqid() مشتق میشود و قابل حدس زدن است.
بخش آسیبپذیر
رفتار ناامن سیستم:
حلقه های اعتبارسنجی و پردازش فایل برای ورودی خالی رفتار متفاوتی دارند (return در مقابل continue). این ناسازگاری اجازه میدهد فایل مخرب بدون عبور از فیلتر پسوند، در مسیر قابل اجرا ذخیره شود.
نحوه سوءاستفاده مهاجم:
- مهاجم صفحه حاوی فرم Elementor با فیلد File Upload را پیدا میکند
- درخواست multipart بدون احراز هویت به admin-ajax.php ارسال میکند (بخش اول خالی، بخش دوم webshell.php)
- validation() زودتر خارج میشود و process_field() فایل PHP را ذخیره میکند
- با حدس زدن نام مبتنی بر uniqid()، webshell فراخوانی شده و کد با سطح دسترسی کاربر وب سرور اجرا میشود
نقش این آسیبپذیری در زنجیره حمله
این آسیب پذیری یک نقطه ورود اولیه (Initial Access) بسیار قدرتمند و یک ابزار اجرای کد از راه دور (Remote Code Execution) در زنجیره حمله محسوب میشود و در صورت موفقیت حمله، محرمانگی (Confidentiality)، یکپارچگی (Integrity) و دسترس پذیری (Availability) سامانه میتوانند به شدت تحت تأثیر قرار گیرند.
پیشنیازهای بهرهبرداری (Prerequisites)
- نصب نسخه آسیب پذیر Elementor Pro
- دسترسی شبکه ای به صفحه دارای فرم آسیب پذیر
- دسترسی شبکه ای به صفحه دارای فرم آسیب پذیر
- امکان ارسال درخواست فرم بدون احراز هویت
- تحقق شرایطی که باعث اختلاف رفتار validation() و process_field() میشود
- برای دستیابی به RCE، ذخیره فایل اجرایی و امکان اجرای آن توسط وب سرور
- عدم اعمال پچ امنیتی
رفتار مورد انتظار در حالت امن (Expected Secure Behavior)
- یکسان سازی منطق حلقه های validation و process (مثلاً استفاده از continue به جای return در validation)
- اعمال بررسی پسوند و نوع روی تمام بخش های فایل قبل از ذخیره سازی
- ورودی خالی باید به صورت مستقل نادیده گرفته شود یا به عنوان ورودی نامعتبر رد شود و نباید باعث خروج زود هنگام از اعتبارسنجی کل فهرست شود
- هر فایل واقعی باید جداگانه بررسی شود
- اعتبارسنجی و پردازش باید از منطق یکسان و قابل اتکا استفاده کنند
- پسوند فایل به تنهایی نباید مبنای اعتماد باشد، نوع محتوا، محدودیت های فرم و سیاست مجاز بودن فایل باید بررسی شوند
- فایل های آپلود شده نباید از مسیر عمومی قابل اجرای PHP باشند
- مسدود کردن اجرای PHP در مسیر uploads در سطح وب سرور
- پاسخ موفق فرم نباید صرفاً نشان دهد که درخواست دریافت شده است باید با موفقیت واقعی و امن عملیات سازگار باشد
راهکارها و کاهش ریسک (Mitigation / Patch Guidance)
اقدامات فوری برای کاهش ریسک:
- بروزرسانی فوری Elementor Pro
- حذف یا غیرفعال کردن فیلدهای File Upload از فرم های عمومی
- مسدود سازی اجرای PHP در دایرکتوری uploads در سطح وب سرور
اقدامات کوتاه مدت / میان مدت برای کاهش ریسک:
- شناسایی فرم های منتشر شده و محدود کردن انواع فایل مجاز در فیلدهای آپلود
- حذف فیلدهای آپلود بلا استفاده از فرم ها
- مسدود کردن اجرای PHP در wp-content/uploads
- استفاده از WAF برای محدود کردن درخواست های elementor_pro_forms_send_form
- اسکن مسیر wp-content/uploads/elementor/forms/ برای فایل های .php
اقدامات بلندمدت برای کاهش ریسک:
- سیاست بروزرسانی منظم پلاگین های وردپرس
- محدود کردن نوع فایل های مجاز در فرم ها
- پیاده سازی اصل کمترین دسترسی برای کاربر وب سرور (غیر root، با حداقل دسترسی به فایل ها)
- فعال سازی DISALLOW_FILE_EDIT در wp-config.php برای جلوگیری از ویرایش فایل از پنل مدیریت
- پیاده سازی فرآیندهای منظم تست نفوذ (Penetration Testing) و ارزیابی امنیتی برای کشف زود هنگام آسیب پذیری های مشابه در زیرساخت
تشخیص و مانیتورینگ (Detection & Monitoring)
نشانههای تلاش برای سوءاستفاده:
- وجود فایل های .php، .phtml، .phar، یا .hta در wp-content/uploads/elementor/forms/
- درخواست های POST به admin-ajax.php با action elementor_pro_forms_send_form و بدنه حاوی دو بخش فایل (یکی خالی)
- درخواست های GET به مسیرهای /wp-content/uploads/elementor/forms/ با پارامترهای ?vapcom= یا ?c=
- ایجاد کاربران مدیر جدید یا تغییرات غیرمجاز در mu-plugins، فایل های core یا theme
- رویدادهای WP-Cron غیرعادی
- تغییرات غیرمجاز در فایل های وردپرس
منابع پیشنهادی برای مانیتورینگ و پایش:
- لاگ های دسترسی وب سرور و WAF
- سیستم های SIEM برای جمع آوری و تحلیل مرکزی لاگ ها
- راهکارهای WAF (مانند Wordfence، Cloudflare، Sucuri) با قوانین اختصاصی برای این آسیب پذیری
- ابزارهای اسکن بد افزار وردپرس (مانند Wordfence، Sucuri Scanner، Patchstack)
- ابزارهای FIM برای شناسایی تغییرات غیرمجاز در فایل های وردپرس
- ابزارهای اسکن آسیب پذیری مانند Nessus، Qualys، WPScan با پلاگین های بروز
واکنش به حادثه (Incident Response)
- ایزوله سازی فوری وب سایت
- اعمال فوری بروزرسانی
- حذف فایل های PHP مشکوک از مسیر forms
- تغییر تمام رمزهای ادمین و بررسی backdoor ها
- تغییر تمام رمزهای عبور و کلیدهای مرتبط
- نصب فوری وصله امنیتی و بروزرسانی فوری
- مستندسازی کامل حادثه (زمان وقوع، نشانهها، اقدامات انجامشده، درسآموختهها) و گزارش به مدیریت ارشد و تیم واکنش سریع (CSIRT)
جریان حمله (Attack Flow)
در نمودار زیر (شکل ۱)، مهاجم با ارسال یک درخواست آپلود دو بخشی (خالی + payload)، از نقص منطقی در اعتبارسنجی Elementor Pro برای آپلود و اجرای webshell استفاده میکند.

اثبات مفهوم (PoC) — کاملاً غیرمخرب
آزمایشگاه تخصصی Vulnerbyte، این آسیب پذیری را در محیط ایزوله و کنترل شده با استفاده از نسخه آسیب پذیر بررسی و اجرا کرده است
- این آزمایشگاه شامل نسخه آسیب پذیر پلاگین elementor pro است
- اجرای PoC در محیط آزمایشگاهی منجر به آپلود web shell و سپس اجرای دستور از راه دور شد
- این اثبات مفهوم صرفاً توصیفی و آموزشی بوده و شامل تغییرات مخرب نمیشود

رفع مسئولیت
این گزارش صرفاً با هدف آموزش، تحلیل فنی و ارتقای امنیت سازمانی تهیه شده است. هرگونه استفاده مخرب یا خارج از چارچوبهای قانونی از محتوای آن ممنوع است.
منابع
https://www.cve.org/CVERecord?id=CVE-2026-32475
https://nvd.nist.gov/vuln/detail/cve-2026-32475
https://cwe.mitre.org/data/definitions/434.html
https://github.com/4minx/CVE-2026-32475
https://github.com/0xBlackash/CVE-2026-32475
https://patchstack.com/articles/critical-unauthenticated-file-upload-to-rce-in-elementor-pro-plugin/
Elementor Pro
CVE-2026-32475 – Unauthenticated Arbitrary File Upload Leading to Remote Code Execution
Affects
- Elementor Pro (commercial WordPress page builder plugin)
- Versions:
- All versions up to and including 4.2.1
- Components:
- Forms Module – File Upload field
- Files:
modules/forms/fields/upload.php
- Functions:
validation()process_field()
NOT VULNERABLE:
- Elementor Pro version 4.2.2 and later (released August 19, 2026)
Description
CVE-2026-32475 is a critical unauthenticated arbitrary file upload vulnerability in Elementor Pro’s Forms module, discovered by researcher Tin Pham (TF1T) via the Patchstack Bug Bounty Program .
The vulnerability resides in modules/forms/fields/upload.php, where the plugin processes uploaded files in two separate loops with inconsistent semantics :
validation()– When encountering an empty file entry (UPLOAD_ERR_NO_FILE), the function executesreturn, aborting validation for all remaining files in the same upload field .process_field()– When encountering the same empty entry, the function executescontinue, skipping only that entry and still moving subsequent files to the upload directory .
By submitting two file parts for the same upload field—an empty first part followed by a PHP payload—the attacker triggers the early return in validation(), meaning the PHP file is never checked against the extension blocklist. Meanwhile, process_field() skips the empty entry and moves the PHP payload to wp-content/uploads/elementor/forms/<uniqid>.php, a publicly accessible web directory .
The attack is fully unauthenticated—the handler is registered via wp_ajax_nopriv_elementor_pro_forms_send_form, requiring no authentication and no nonce . The only precondition is a published page containing an Elementor Form widget with a File Upload field that is not marked as Required (the default state) and without CAPTCHA protection .
Key technical characteristics:
- CWE: CWE-434 – Unrestricted Upload of File with Dangerous Type
- CVSS v3.1 Score: 9.0 (Critical)
- Attack Vector: Network
- Authentication Required: None
- User Interaction: None
- Public PoC: Yes – multiple repositories available
- Active Exploitation: Confirmed – 190,000+ exploitation attempts blocked within days of disclosure
Attack Vector
Primary Attack Vector:
Remote / Unauthenticated (Network Access to WordPress Site)
Attack Scenario :
- The attacker identifies a WordPress site running Elementor Pro ≤ 4.2.1 with a published page containing a Form widget with a File Upload field.
- The attacker scrapes the page HTML to extract
post_id,form_id, and the upload field name (all visible in the public page source). - The attacker sends a crafted
multipart/form-dataPOST request to/wp-admin/admin-ajax.phpwithaction=elementor_pro_forms_send_form. - The request contains two file parts for the same upload field: an empty first part (filename=””) followed by a
.phppayload. validation()encounters the empty part and returns early, bypassing the extension blocklist for the second file.process_field()skips the empty part and moves the PHP payload towp-content/uploads/elementor/forms/<uniqid>.php.- The attacker requests the newly created PHP file directly via HTTP GET, executing arbitrary commands on the server.
Key Characteristics:
| Attribute | Details |
|---|---|
| Attack Vector | NETWORK |
| Attack Complexity | LOW |
| Privileges Required | NONE |
| User Interaction | NONE |
| Scope | CHANGED |
| Confidentiality Impact | HIGH |
| Integrity Impact | HIGH |
| Availability Impact | HIGH |
| Exploit Availability | Yes – public PoC on GitHub |
| Active Exploitation | Confirmed |
Conditions Affecting Risk :
- Elementor Pro ≤ 4.2.1 installed
- At least one published page with an Elementor Form widget containing a File Upload field
- The upload field is not marked as Required (the default)
- No CAPTCHA (reCAPTCHA/Turnstile) on the form
- The uploads directory executes PHP (default on most Apache/cPanel hosting)
Impact
Successful exploitation allows an unauthenticated remote attacker to:
- Execute arbitrary code on the underlying web server
- Upload PHP webshells for persistent remote access
- Fully compromise the WordPress site – install backdoors, exfiltrate data, modify content
- Pivot into the internal network from the compromised web server
- Access sensitive data stored in the WordPress database and filesystem
| Impact Area | Level | Description |
|---|---|---|
| Confidentiality | HIGH | Full access to site data and server files |
| Integrity | HIGH | Complete control over site content and server state |
| Availability | HIGH | Potential to disrupt or destroy the site |
Important: The vulnerability is particularly dangerous due to Elementor Pro’s 6+ million active installations and the commonality of forms with file upload fields (job applications, support tickets, photo uploads) .
Observed Exploitation & Threat Activity
- Discovery: Tin Pham (TF1T) via Patchstack Bug Bounty Program
- Reported to Vendor: July 16, 2026
- Public Disclosure: August 19, 2026
- Patch Availability: Elementor Pro 4.2.2 (released August 19, 2026)
- Public PoC: Multiple repositories available
- In-the-Wild Exploitation: Confirmed – Wordfence blocked 190,000+ exploitation attempts between August 19 and August 23, 2026
- CISA KEV Catalog: Not listed as of publication
- EPSS Score: 2.37%
Disclosure Timeline :
| Date | Event |
|---|---|
| July 16, 2026 | Vulnerability reported to Elementor |
| August 3, 2026 | Patchstack verifies Elementor’s fix |
| August 19, 2026 | Elementor Pro 4.2.2 released; public disclosure |
| August 19, 2026 | Active exploitation begins same day |
| August 23, 2026 | 190,000+ exploitation attempts blocked |
| August 25, 2026 | Nuclei PoC template published |
Threat Actor Activity: Attackers are deploying PHP webshells capable of executing arbitrary commands . Wordfence has published a list of attacking IP addresses for blocklisting .
Severity & Metrics
- CVSS v3.1: Critical (9.0)
- Attack Vector: NETWORK
- Attack Complexity: LOW
- Privileges Required: NONE
- User Interaction: NONE
- Scope: CHANGED
- Confidentiality Impact: HIGH
- Integrity Impact: HIGH
- Availability Impact: HIGH
Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Relevant CWE:
- CWE-434 – Unrestricted Upload of File with Dangerous Type
Patch & Vendor Status
- Official Patch Available: Yes – Elementor Pro 4.2.2 (released August 19, 2026)
- Vendor: Elementor (Elementor Ltd.)
- Fix Details: The patch aligns the validation and processing loops so empty entries no longer terminate validation early, and adds an extension check before moving uploaded files
Fixed Versions:
| Version | Status |
|---|---|
| 4.2.2 and later | Fixed |
| 4.2.1 and earlier | Vulnerable |
Update Methods:
| Action | Method |
|---|---|
| Update via WordPress Dashboard | Plugins → Installed Plugins → Elementor Pro → Update |
| Verify version | Check Elementor Pro version is 4.2.2 or later |
| Manual update | Download from Elementor account and upload via FTP/plugin installer |
Mitigation & Remediation
Immediate Actions
| Action | Method |
|---|---|
| Update Elementor Pro to 4.2.2 | Apply the patch immediately |
| Audit for existing webshells | Check wp-content/uploads/elementor/forms/ for unauthorized .php files |
| Review web server logs | Search for POST requests to admin-ajax.php with elementor_pro_forms_send_form |
| Check for post-exploitation | Audit admin users, cron jobs, and WordPress core checksums |
Critical Warning: Patching does not remove files already uploaded through exploitation . If your site was vulnerable during the exploitation window (August 19 onward), you must actively hunt for webshells.
Webshell Hunt Commands :
# Find PHP files in uploads directory (should be empty on healthy sites)
find /var/www/html/wp-content/uploads -type f \( -iname "*.php" -o -iname "*.phtml" -o -iname "*.phar" \) -ls
# Find files written since the day before patch
find /var/www/html/wp-content/uploads -type f -newermt "2026-08-18" | less
Log Analysis :
# Identify IPs that POSTed to the form handler
grep "elementor_pro_forms_send_form" /var/log/apache2/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20
# Find GET requests to suspicious PHP files in forms directory
grep -E "GET /wp-content/uploads/elementor/forms/[^ ]*\.ph" /var/log/apache2/access.log
Short-Term Defensive Measures
If patching cannot be applied immediately :
- Disable Elementor Pro Forms with File Upload fields if not required
- Disable Multiple File Upload functionality on forms that don’t need it
- Restrict write permissions to the WordPress uploads directory
- Configure the web server to deny PHP execution in the uploads directory
- Deploy WAF rules to detect and block malicious multipart requests
Long-Term Hardening :
Never allow PHP execution in the uploads directory. On Apache 2.4 with PHP-FPM:
<FilesMatch "\.ph(p|tml|ar)$">
Require all denied
</FilesMatch>
For Nginx:
location ~* /wp-content/uploads/.*\.ph(p|tml|ar)$ {
deny all;
}
Detection & Monitoring
Recommended Detection Sources:
| Source | Purpose |
|---|---|
| File Integrity Monitoring (FIM) | Detect creation of .php files in wp-content/uploads/elementor/forms/ |
| Web server access logs | Identify POST requests to admin-ajax.php with elementor_pro_forms_send_form followed by GET requests to uploaded .php files |
| SIEM / EDR | Correlate upload and execution activity |
| WAF logs | Detect blocked exploitation attempts |
Indicators of Attempted Exploitation :
- Unexpected
.phpfiles inwp-content/uploads/elementor/forms/ - POST requests to
/wp-admin/admin-ajax.phpcontainingaction=elementor_pro_forms_send_formwith multipart data - GET requests to
/wp-content/uploads/elementor/forms/<uniqid>.phpfollowed by command output - Suspicious files containing
eval,base64_decode,shell_exec, or$_REQUESTgates
Sigma Rule (conceptual) :
title: CVE-2026-32475 Exploitation - PHP File Upload in Elementor Forms
id: cve-2026-32475-elementor-webshell
status: experimental
logsource:
category: file_event
product: linux
detection:
selection:
TargetFilename|contains: '/wp-content/uploads/elementor/forms/'
TargetFilename|endswith: '.php'
condition: selection
level: critical
tags:
- attack.t1190
- cve.2026.32475
Post-Incident Response
If exploitation is suspected or confirmed :
- Preserve evidence – Copy any suspicious files to a safe location and record timestamps before deleting
- Block the webshell URL at the web server level
- Rotate all credentials – Database credentials in
wp-config.php, admin passwords, API keys - Regenerate WordPress salts – Invalidates active sessions
- Audit for persistence:
wp user list --role=administrator wp cron event list wp core verify-checksums - Check for backdoors in themes, plugins, and core files
- Restore from clean backup if the webshell was accessible for more than a day or two – cleaning a site an attacker has dwelled on is unreliable
- Document and report findings to internal security teams
For Enterprise Environments:
- Apply patches through enterprise deployment tools immediately
- Scan all WordPress sites for vulnerable Elementor Pro versions
- Deploy WAF rules to block known exploitation patterns
- Monitor for other compromised sites in the network
References
بررسی آماری آسیب پذیری CVE-2026-32475 در کشور ایران
محصول آسیب پذیر: elementor pro
میزان استفاده در ایران بر اساس سایت های آمار مرتبط با محصول
وردپرس به عنوان محبوب ترین سیستم مدیریت محتوا در جهان، سهم قابل توجهی از وب سایت های ایرانی را به خود اختصاص داده است. بر اساس گزارش پلتفرم ژاکت (از فعالان بازار محصولات وردپرسی ایران)، از میان بیش از یک میلیون سایت ایرانی، حدود 572 هزار سایت از وردپرس استفاده میکنند . همچنین داده های BuiltWith نشان میدهد که در ایران حدود 155,260 مورد استفاده از سیستم های مدیریت محتوا شناسایی شده که وردپرس در صدر آنها قرار دارد در میان افزونه های وردپرس، Elementor یکی از محبوب ترین صفحه سازها در ایران است. داده های Ful.io نشان میدهد که 20,100 سایت در ایران از Elementor استفاده میکنند. در سطح جهانی نیز، طبق آمار W3Techs، سهم Elementor از وب سایت های وردپرسی تا آگوست 2026 به 29.8% رسیده است. این افزونه به دلیل رابط کاربری کشیدن و رها کردن (Drag & Drop) و قابلیت های طراحی پیشرفته، در میان وب مستران و طراحان سایت ایرانی استقبال گسترده ای داشته است. اگرچه آمار دقیقی از تعداد نصب این افزونه در ایران منتشر نشده است، اما با توجه به محبوبیت بالای Elementor در میان کاربران فارسی زبان و حضور پررنگ آن در وب سایت های ایرانی، میتوان گفت هزاران وب سایت در کشور از این افزونه استفاده میکنند.
میزان استفاده در ایران بر اساس موتورهای جستجو (بر اساس ایندکس های گوگل در بخش tools)
تعداد در زمان نگارش گزارش
| موتور جستجو | Dork | تعداد |
| site:.ir “Elementor Pro” | 127,000 | |
| “Elementor” “فرم تماس” site:.ir | 7,100 | |
| “elementor-pro” “wp-content” site:.ir | 32,600 |
وجود نمایندگی در ایران
شرکت Elementor (توسعه دهنده این افزونه) هیچ دفتر رسمی یا نمایندگی در ایران ندارد. کاربران ایرانی برای دریافت بروزرسانی های امنیتی باید از طریق پنل مدیریت وردپرس یا وب سایت رسمی Elementor اقدام کنند. هیچ گونه پشتیبانی رسمی از طرف شرکت سازنده در کشور وجود ندارد.
میزان استفاده بر اساس گزارشات تحقیقات بازار برای این محصول در ایران
اگرچه آمار رسمی و دقیقی از تعداد سیستمهای آسیبپذیر در ایران وجود ندارد، اما شواهد زیر نشاندهنده سطح قابل توجه ریسک است.
- محبوبیت Elementor در ایران: Elementor به عنوان یکی از محبوب ترین صفحه سازهای وردپرس در ایران شناخته میشود. بسیاری از قالب های وردپرسی فارسی و آموزش های طراحی سایت در ایران بر پایه این افزونه ارائه میشوند. داده های io نشان میدهد که ایران یکی از بازارهایی است که Elementor در آن سهم بالایی دارد. با توجه به اینکه حدود 20,100 سایت ایرانی از Elementor استفاده میکنند و بخش قابل توجهی از آنها احتمالاً نسخه Pro را نیز نصب کرده اند این یعنی طیف گسترده ای از وب سایت های ایرانی (شامل فروشگاه های اینترنتی، وب سایت های شرکتی و وبلاگ های شخصی) از Elementor Pro استفاده میکنند
- تخمین میزان استفاده: با ترکیب داده های io (20,100 سایت ایرانی با Elementor) و آمار W3Techs (حدود 29.8% نصب Elementor روی وردپرس) ، و با فرض اینکه بخشی از این سایت ها از نسخه Pro با فرم های دارای فیلد آپلود استفاده میکنند، میتوان تخمین زد که هزاران وب سایت ایرانی به طور بالقوه در معرض این آسیب پذیری قرار دارند. این عدد شامل فروشگاه های اینترنتی، وب سایت های شرکتی و سازمانی میشود که از فرم های Elementor برای دریافت فایل استفاده میکنند
منابع
https://www.eghtesadonline.com/fa/news/2056437/وردپرس-در-ایران-ترکیب-سلطه-عددی-و-واقعیتهای-پنهان
https://trends.builtwith.com/cms/crowd-funding/country/Iran
https://mosawar.ir/گزارش-ژاکت-تحلیل-وضعیت-وردپرس-در-ایران/
https://w3techs.com/technologies/details/cm-wordpress


