NỘI DUNG
Một lỗ hổng nghiêm trọng trong Elementor Pro vừa được Wordfence công bố, cho phép attacker không cần đăng nhập có thể upload file tùy ý lên website WordPress trong một số điều kiện nhất định. Điểm nguy hiểm nằm ở chỗ file được upload có thể là file PHP, từ đó dẫn đến thực thi mã từ xa và chiếm quyền website.

Bài viết này được biên soạn lại theo hướng thực hành quản trị WordPress, dựa trên thông tin kỹ thuật từ Wordfence về CVE-2026-32475.
Mục lục
- Lỗ hổng Elementor Pro CVE-2026-32475 là gì?
- Website nào có nguy cơ bị khai thác?
- Nguyên nhân kỹ thuật của lỗi upload file
- Cách kiểm tra nhanh bằng WP-CLI
- Cách rà soát webshell trong uploads
- Khuyến nghị xử lý và hardening
- FAQ
Lỗ hổng Elementor Pro CVE-2026-32475 là gì?
CVE-2026-32475 là lỗ hổng Unauthenticated Arbitrary File Upload trong Elementor Pro. Theo Wordfence, lỗi ảnh hưởng đến các phiên bản Elementor Pro từ 4.2.1 trở xuống và đã được vá ở phiên bản 4.2.2. Mức độ CVSS được đánh giá là 9.8 Critical.
Nói ngắn gọn, attacker có thể lợi dụng form upload của Elementor Pro để đưa file không hợp lệ lên server. Nếu file đó là PHP và server cho phép thực thi PHP trong thư mục uploads, attacker có thể gọi trực tiếp file này qua trình duyệt và chạy mã độc trên website.
Đây là nhóm lỗi rất nguy hiểm với WordPress vì nó thường dẫn đến webshell, tạo admin ẩn, chèn mã độc chuyển hướng, spam SEO hoặc cài backdoor để quay lại sau khi website đã được dọn dẹp.
Thông tin nhanh về lỗ hổng
| Plugin ảnh hưởng | Elementor Website Builder Pro |
| Phiên bản lỗi | <= 4.2.1 |
| Phiên bản vá | 4.2.2 hoặc mới hơn |
| CVE | CVE-2026-32475 |
| CVSS | 9.8 Critical |
| Loại lỗi | Không cần đăng nhập vẫn upload được file tùy ý |
| Hậu quả | Upload PHP webshell, RCE, chiếm quyền website |
Website nào có nguy cơ bị khai thác?
Không phải mọi website cài Elementor Pro đều tự động bị khai thác. Theo phân tích của Wordfence, điều kiện quan trọng là website phải có trang public sử dụng Elementor Pro Form widget với trường File Upload không được đánh dấu bắt buộc.
- Website đang dùng Elementor Pro phiên bản 4.2.1 hoặc thấp hơn.
- Có form Elementor Pro hiển thị công khai cho khách truy cập.
- Form có trường File Upload.
- Trường File Upload đó không required.
- Server cho phép thực thi PHP trong thư mục uploads hoặc không có lớp chặn phù hợp.
Nếu website dùng Elementor Pro chỉ để dựng giao diện, không dùng Form widget hoặc không có trường upload file, bề mặt tấn công sẽ nhỏ hơn. Tuy nhiên, vẫn nên cập nhật ngay vì quản trị viên thường khó nhớ hết form nào đang tồn tại trên toàn bộ site, đặc biệt với các website có nhiều landing page cũ.

Nguyên nhân kỹ thuật
Lỗi nằm trong cách Elementor Pro validate mảng file upload. Khi trường upload không bắt buộc và phần tử đầu tiên trong mảng không có file, hàm validate gặp trạng thái UPLOAD_ERR_NO_FILE. Thay vì bỏ qua phần tử rỗng và tiếp tục kiểm tra file kế tiếp, logic xử lý lại dừng toàn bộ vòng lặp.
Về mặt ý tưởng, đoạn xử lý nên tiếp tục kiểm tra các file còn lại:
// Ý tưởng đúng: bỏ qua phần tử rỗng và kiểm tra tiếp file sau
if ( ! $field['required'] && UPLOAD_ERR_NO_FILE === $file['error'] ) {
continue;
}
Nhưng ở phiên bản lỗi, quá trình validate bị dừng sớm. Attacker có thể gửi upload field dạng mảng, trong đó phần tử đầu tiên rỗng để kích hoạt nhánh lỗi, còn phần tử tiếp theo là file PHP. File PHP này không đi qua bước kiểm tra extension và file type như mong muốn.
Sau đó, bước xử lý file vẫn chạy với phần tử thứ hai và ghi file xuống thư mục upload của Elementor Forms. Wordfence chỉ ra đường dẫn đáng chú ý là:
/wp-content/uploads/elementor/forms/
Nếu webserver cho phép chạy PHP trong đường dẫn này, attacker chỉ cần truy cập URL của file vừa upload là có thể thực thi payload.
Cách kiểm tra nhanh website có đang bị ảnh hưởng không
Nếu Anh quản trị server WordPress, có thể kiểm tra phiên bản Elementor Pro bằng WP-CLI. Lệnh này chỉ đọc thông tin, không thay đổi website:
cd /path/to/wordpress
wp plugin list --allow-root | grep -i elementor
Kết quả cần chú ý dòng elementor-pro. Nếu version là 4.2.1 hoặc thấp hơn, website cần được cập nhật ngay lên 4.2.2 hoặc mới hơn.
Có thể kiểm tra riêng plugin Elementor Pro như sau:
wp plugin get elementor-pro --fields=name,status,version,update_version --format=table --allow-root
Với hệ thống có nhiều website WordPress, nên ưu tiên các site có Elementor Pro, có form liên hệ/landing page cho phép upload file, hoặc các site từng mở tính năng upload CV, upload ảnh, upload tài liệu.
Cách rà soát dấu hiệu webshell
Sau khi cập nhật plugin, vẫn nên kiểm tra thư mục uploads của Elementor Forms. Việc cập nhật chỉ vá lỗ hổng, không tự động xóa file độc hại nếu website đã bị khai thác trước đó.
Lệnh kiểm tra file PHP trong thư mục upload của Elementor Forms:
cd /path/to/wordpress
find wp-content/uploads/elementor/forms/ -type f \( -name "*.php" -o -name "*.phtml" -o -name "*.phar" \) -print 2>/dev/null
Nếu có kết quả, không nên xóa ngay khi chưa kiểm tra. Trước tiên cần backup file, ghi nhận đường dẫn, thời gian chỉnh sửa và nội dung đáng ngờ. Một số bước đọc thông tin an toàn:
stat wp-content/uploads/elementor/forms/ten-file-nghi-ngo.php
file wp-content/uploads/elementor/forms/ten-file-nghi-ngo.php
php -l wp-content/uploads/elementor/forms/ten-file-nghi-ngo.php 2>/dev/null || true
Các chuỗi thường thấy trong webshell hoặc backdoor gồm eval, base64_decode, gzinflate, shell_exec, assert, FilesMan, WSO, c99, r57. Tuy nhiên, không nên kết luận chỉ dựa vào một từ khóa. Cần xem ngữ cảnh file, owner, timestamp và access log.
Kiểm tra log để biết có bị khai thác chưa
Nếu website có log webserver, hãy tìm các request đến thư mục uploads/elementor/forms, đặc biệt là request đến file PHP. Ví dụ với Apache/Nginx log thông thường:
grep -R "uploads/elementor/forms" /var/log/nginx/* /var/log/apache2/* 2>/dev/null | tail -100
grep -R "uploads/elementor/forms/.*\.php" /var/log/nginx/* /var/log/apache2/* 2>/dev/null | tail -100
Trên DirectAdmin hoặc hosting dùng log theo domain, đường dẫn log có thể khác, ví dụ /var/log/httpd/domains/domain.com.log. Trên OpenLiteSpeed, cần kiểm tra access log theo vhost hoặc log tổng của OpenLiteSpeed tùy cấu hình.
Nên xử lý thế nào?
Thứ tự xử lý an toàn nên là: backup, cập nhật, rà soát file lạ, kiểm tra log, sau đó mới cleanup. Với website production, không nên xóa file hoặc restart service nếu chưa có backup và chưa đánh giá tác động.
- Backup source và database trước khi can thiệp.
- Cập nhật Elementor Pro lên 4.2.2 hoặc mới hơn.
- Kiểm tra các form Elementor có File Upload field, đặc biệt field không required.
- Rà soát file PHP trong
wp-content/uploads/elementor/forms/. - Kiểm tra access log xem file PHP trong uploads đã từng bị gọi chưa.
- Bật chặn thực thi PHP trong thư mục uploads nếu môi trường hỗ trợ.
- Quét lại bằng Wordfence, Imunify360 hoặc công cụ malware scanner phù hợp.
- Nếu phát hiện webshell, cần điều tra thêm admin user, plugin/theme lạ, cron, wp_options và post_content.
Chặn thực thi PHP trong uploads
Một lớp phòng vệ quan trọng là không cho chạy PHP trong thư mục uploads. Với Apache hoặc LiteSpeed đọc .htaccess, có thể đặt rule trong thư mục uploads. Đây là thay đổi cấu hình có thể ảnh hưởng website nếu plugin nào đó đang làm sai chuẩn và đặt PHP trong uploads, vì vậy cần backup và test trước khi áp dụng trên production.
<FilesMatch "\.php$">
Require all denied
</FilesMatch>
Với Nginx, cách chặn nên đặt trong server block hoặc location phù hợp. Không nên copy máy móc nếu chưa biết cấu trúc vhost hiện tại, vì sai location có thể gây lỗi tải media hoặc ảnh hưởng nhiều site trên cùng server.
Nếu đang dùng Wordfence
Wordfence cho biết firewall của họ có lớp bảo vệ Malicious File Upload và có thể chặn nỗ lực upload file thực thi. Ngoài ra, tùy chọn Disable Code Execution for Uploads directory nên được bật nếu site dùng Wordfence. Dù vậy, firewall không thay thế cho việc cập nhật plugin. Cập nhật vẫn là bước bắt buộc.
Checklist nhanh cho quản trị viên
- Kiểm tra Elementor Pro version.
- Cập nhật lên 4.2.2 hoặc mới hơn.
- Tìm file PHP trong
uploads/elementor/forms. - Tìm request đáng ngờ trong access log.
- Kiểm tra tài khoản admin mới hoặc không rõ nguồn gốc.
- Kiểm tra plugin/theme lạ được cài gần thời điểm nghi vấn.
- Bật chặn thực thi PHP trong uploads.
- Xóa cache website/CDN sau khi xử lý.
- Theo dõi log thêm vài ngày sau khi cleanup.
Kết luận
Lỗ hổng Elementor Pro CVE-2026-32475 đáng chú ý vì hội đủ ba yếu tố nguy hiểm: không cần đăng nhập, có thể upload file tùy ý và có khả năng dẫn đến thực thi mã từ xa. Nếu website đang dùng Elementor Pro, đặc biệt là các site có form upload file, việc cập nhật lên bản 4.2.2 hoặc mới hơn nên được thực hiện ngay.
Sau khi cập nhật, đừng bỏ qua bước rà soát thư mục uploads và access log. Với nhóm lỗi arbitrary file upload, bản vá chỉ đóng cửa vào, còn file độc hại đã nằm trên server thì vẫn cần được kiểm tra và xử lý riêng.
Nguồn tham khảo: Wordfence – Critical Arbitrary File Upload Vulnerability Patched in Elementor Pro WordPress Plugin.
FAQ
Chỉ cài Elementor bản miễn phí thì có bị ảnh hưởng không?
Theo nội dung Wordfence công bố, lỗ hổng nằm trong Elementor Pro, cụ thể liên quan đến Form widget và File Upload field của bản Pro. Dù vậy, website vẫn nên cập nhật cả Elementor và Elementor Pro lên phiên bản mới nhất để tránh lỗi tương thích và các lỗ hổng khác.
Cập nhật Elementor Pro có xóa được webshell nếu đã bị hack không?
Không. Cập nhật plugin giúp vá đường khai thác, nhưng không đảm bảo xóa file độc hại đã được upload trước đó. Cần kiểm tra thư mục uploads, log, admin user, plugin/theme lạ và database.
Có nên xóa toàn bộ thư mục uploads/elementor/forms không?
Không nên xóa hàng loạt nếu chưa backup và chưa biết dữ liệu trong đó có đang được dùng hay không. Cần kiểm tra từng file đáng ngờ, sao lưu trước, sau đó mới xử lý.
Có Wordfence rồi thì có cần cập nhật Elementor Pro không?
Có. Firewall là lớp bảo vệ bổ sung, không thay thế bản vá từ nhà phát triển plugin. Cách xử lý đúng vẫn là cập nhật Elementor Pro lên bản đã vá và kiểm tra dấu hiệu khai thác.
Dấu hiệu nào cho thấy website đã bị khai thác?
Các dấu hiệu thường gặp gồm file PHP lạ trong uploads, request đến file PHP trong uploads/elementor/forms, admin user lạ, plugin lạ, cron lạ, chuyển hướng bất thường hoặc mã độc chèn vào bài viết/options. Cần đối chiếu log và timestamp để kết luận chính xác.
Với kinh nghiệm thực chiến từ việc tiếp xúc hàng ngày với vô vàn vấn đề về Website, Hosting, VPS, Server tại Phòng Kỹ thuật AZDIGI, mình luôn ấp ủ niềm đam mê chia sẻ kiến thức.
Mình xây dựng các blog không chỉ để tự trau dồi kỹ năng mà còn để cung cấp những tài liệu, hướng dẫn hữu ích nhất đến cộng đồng. Rất mong nhận được sự quan tâm của các bạn!
Để lại thông tin, mình sẽ phản hồi ngay.
