File Inclusion và Arbitrary Code Execution: Tháng này, trang web bán vé máy bay xây trên WordPress bị hack, lộ dữ liệu cá nhân hàng trăm nghìn khách. Trong bài trước về lý do hacker hack, chúng ta đã thảo luận: cắp dữ liệu, gửi spam, dùng kỹ thuật SEO đen để đẩy sản phẩm riêng (đọc thêm – pharma hack), v.v.
Hiểu hacker hack như thế nào là chìa khóa phòng ngừa – vì vậy chúng ta đã liệt kê các cuộc tấn công phổ biến trên WordPress.
Khi nói tấn công phổ biến, bạn thường nghĩ brute-force. Nhưng bạn có biết File Inclusion và Arbitrary Code Execution cũng là tấn công hàng đầu trên WordPress? Bài này đi sâu vào hai kiểu tấn công này.
Để hiểu cách tấn công hoạt động, điều đầu tiên phải biết: nó liên quan đến file PHP. Tại sao? Vì cả File Inclusion và Arbitrary Code Execution đều dùng file PHP.
File PHP là gì? Hãy tưởng tượng tủ bếp. Bên trong có đường, muối, gia vị, dụng cụ... Mỗi thứ có công dụng. File PHP là cái tủ, mã code bên trong là các vật phẩm cho phép thực thi hàm mà hacker muốn. Do đó hacker thích tải file PHP lên hơn JPEG hay PDF. JPEG/PDF không thể thi hành – chỉ đọc/xem, không thể thay đổi trang web bị hack.
Hacker tải file PHP lên server của bạn có thể làm bất cứ điều gì trên trang web. Đó là lý do file PHP dùng cho File Inclusion và Arbitrary Code Execution.
Tấn Công File Inclusion Là Gì?
Cách tốt nhất hiểu tấn công phức tạp này là ví dụ thực tế. Giả sử bạn chạy trang web trường học: college.com. Cho vài học sinh truy cập đăng ảnh sự kiện. Ai đó lạm dụng quyền, tải file PHP độc hại (hack.php) lên web. Mục tiêu: kiểm soát trang web. Khi tải lên, file mặc định lưu trong thư mục Upload. Ai biết cấu trúc cơ bản WordPress đều biết file tải lên đi đâu.
File đóng vai trò "cánh cửa" cho hacker tương tác từ xa. Lưu ý: hacker chưa kiểm soát trang, chỉ có cửa sổ giao tiếp. Dễ hiểu: Người A muốn vào quốc gia bị cấm. Gửi người B làm đại diện. Người A = hacker, quốc gia = trang web trường, người B = hack.php.
File PHP tải lên trang web trường → File lưu trên server
Người B chỉ được train vài việc, làm được ít. Người A phải chỉ dẫn tiếp. Tương tự, file PHP tạo cửa sổ giao tiếp rồi chờ lệnh từ hacker.
Giả sử hack.php cho phép tải thêm file. Hacker tạo file control.php, dùng hack.php (đã trên server) tải control.php lên. File mới này cho hacker toàn quyền truy cập. Quá trình tải control.php dùng file hack.php đã có trên server gọi là Local File Inclusion (LFI).
Ví dụ điển hình LFI: lỗ hổng plugin Easy Forms for MailChimp (v6.0.5.5). Plugin cho thêm form vào WordPress. Lỗ hổng cho hacker tải file PHP lên server qua form MailChimp. File lưu trên server, hacker giao tiếp và thực thi mã để kiểm soát server hoặc phá hoại.
Giả sử trang web có tường lửa, hacker không tải được control.php. Nhưng hacker có thể "include" (nhúng) file – chèn file vào hack.php đã có trên server. Nếu tải được control.php, server đọc và thi hành mã cho hacker toàn quyền. Vì không tải được, hacker tìm cách khác: tạo đường dẫn (path) trực tuyến, server trang web đọc được. Hacker tạo path public, server đọc và thi hành mã từ path đó – mã cho hacker toàn quyền. Quá trình khiến server đọc file từ xa gọi là Remote File Inclusion (RFI).
Lỗ hổng TimThumb là ví dụ nổi tiếng của RFI. TimThumb plugin cho chỉnh sửa ảnh dễ dàng trên WordPress. Cho dùng ảnh từ imgur.com, flickr.com. TimThumb nhận imgur là trang hợp lệ (whitelist). Hacker tận dụng: tạo file với URL như https://www.imgur.com.badsite.com. Khi tải file độc hại với URL này, plugin bị lừa tưởng file từ trang hợp lệ. Cho tải file độc hại lên server. Toàn bộ quá trình nhúng file độc hại từ bên ngoài tận dụng lỗ hổng plugin = Remote File Inclusion. Sau khi file PHP độc hại lưu trên server, hacker giao tiếp để thực thi hành động mong muốn.
Tấn Công Arbitrary Code Execution Là Gì?
Đã hiểu Local/Remote File Inclusion, hãy hiểu Arbitrary Code Execution. File Inclusion và arbitrary code execution liên quan chặt chẽ. Mọi trường hợp File Inclusion, mục tiêu hacker là thực thi mã tùy ý trên trang web. Quay lại ví dụ LFI: hacker tải hack.php, rồi dùng nó tải control.php. Thuật ngữ Arbitrary Code Execution mô tả khả năng hacker thực thi bất kỳ lệnh nào theo ý muốn trên trang web bị hack. Khi file PHP (hack.php, control.php) đã lên server, hacker thực thi bất kỳ mã nào từ các file đó. Quá trình này gọi là Arbitrary Code Execution.
Hack phức tạp. Bài viết cố gắng giải thích đơn giản. Nếu phần nào chưa rõ, độc giả hãy liên hệ. Bài sau sẽ thảo luận tấn công phổ biến khác: Cross-Site Scripting (XSS). Đón đọc nhé!