Giới Thiệu
Chào các bạn!
Chúng ta tiếp tục đến với phần 3 của series về các lỗ hổng bảo mật trong WordPress plugin. Nếu bạn chưa đọc các phần 1 và 2, hãy xem các bài trước để có cái nhìn tổng quan hơn.
Lỗ Hổng Thực Thi Lệnh Qua Code & Command Injection
Trong PHP, có rất nhiều hàm có thể được sử dụng để thực thi các lệnh hệ thống. Chẳng hạn như: ls
để liệt kê thư mục, touch
để tạo file mới, hoặc mkdir
để tạo thư mục. Nhiều plugin và theme WordPress có thể sử dụng các hàm này mà không thực hiện kiểm soát input, điều này dẫn đến lỗ hổng Remote Code Execution (RCE).
Các hàm PHP cần được cảnh giác khi sử dụng bao gồm:
exec
passthru
system
shell_exec
` (backticks)
popen
proc_open
pcntl_exec
Ngoài ra, còn có những hàm khác có thể thực thi đoạn code PHP như: assert()
và create_function()
. Một đoạn mã nguy hiểm có thể là:
php
$_GET['func_name']($_GET['argument']);
Ví dụ, với func_name=shell_exec&argument=whoami
, mã này sẽ chuyển thành shell_exec('whoami');
.
Biện Pháp Phòng Ngừa RCE
Để ngăn chặn lỗ hổng RCE, bạn nên:
- Thực hiện lọc và làm sạch dữ liệu đầu vào từ người dùng.
- Phân quyền truy cập hợp lý cho các hàm nguy hiểm.
- Hạn chế sử dụng các hàm tiềm ẩn rủi ro.
Một Số Ví Dụ Cụ Thể
- CVE-2024-6386 - WPML Multilingual CMS: Khai thác lỗ hổng RCE thông qua kiểu template Twig.
- CVE-2024-5932 - GiveWP: Khai thác PHP Object Injection dẫn đến RCE.
- CVE-2023-6582 - ElementsKit Lite: Thông tin nhạy cảm bị lộ qua giá trị nonce.
Lộ Thông Tin Nhạy Cảm
Lỗi lộ thông tin nhạy cảm có thể xuất hiện qua việc tiết lộ đường dẫn file hoặc thông tin cá nhân từ cơ sở dữ liệu. Bạn nên chú ý đến các hàm thêm thông tin vào nội dung trang, đặc biệt trong khu vực /wp-admin
.
Biện Pháp Khắc Phục: Đảm bảo phân quyền truy cập hợp lý cho từng phần của trang.
Một Số Ví Dụ Cụ Thể
- CVE-2024-6551 - GiveWP: Lộ đường dẫn file do bật
display_errors
trong môi trường sản xuất. - CVE-2023-32243 - Essential Addons for Elementor: Lộ nonce ở những trang không yêu cầu đăng nhập.
Nhận Thức Về Tính Ngẫu Nhiên Thấp
Sự ngẫu nhiên kém có thể dẫn đến việc các giá trị như nonce trở nên dễ bị tấn công. Ví dụ, plugin Elementor có thể bị khai thác qua cách sinh tên thư mục tạm không an toàn.
Ví Dụ cụ thể
- CVE-2024-22144 - Lỗ hổng nghiêm trọng trong plugin chống malware có cách sinh số ngẫu nhiên không đảm bảo an toàn.
Kết Luận
Mặc dù ba phần bài viết này không thể đề cập đến tất cả lỗ hổng bảo mật, nhưng hy vọng đã giúp độc giả nhận diện những vấn đề phổ biến nhất. Kiến thức này rất cần thiết cho cả nhà phát triển và người tìm lỗi trên WordPress.
Tham Khảo
- Tài liệu hướng dẫn bảo mật WordPress
source: viblo