Table of Contents
Khi thực hiện upload file trên các hệ thống web, có nhiều lỗi bảo mật có thể xảy ra nếu không có các biện pháp bảo vệ thích hợp. Dưới đây là một số lỗi bảo mật phổ biến và phương pháp phòng chống:
Lỗi bảo mật phổ biến khi upload file
Upload file không kiểm tra định dạng
Hacker có thể upload các file có định dạng không mong muốn như .php, .jsp, .exe để thực hiện mã độc.
Upload file có kích thước quá lớn
Có thể gây quá tải cho hệ thống, dẫn đến từ chối dịch vụ (DoS).
Lưu trữ file ở vị trí không an toàn
Lưu trữ file ở các thư mục có thể truy cập công khai, tạo điều kiện cho hacker thực hiện tấn công.
Không kiểm tra nội dung file
File có thể chứa mã độc hoặc các nội dung không an toàn khác.
Đặt tên file không an toàn
Đặt tên file với các ký tự đặc biệt có thể dẫn đến tấn công Path Traversal hoặc Remote Code Execution.
Một số ví dụ bị hack khi upload file
Có nhiều trường hợp đã xảy ra khi hacker lợi dụng lỗ hổng bảo mật trong quá trình upload file để tấn công hệ thống. Dưới đây là một số ví dụ nổi bật:
WordPress Plugin Vulnerabilities
Nhiều plugin của WordPress đã từng bị phát hiện lỗ hổng liên quan đến việc upload file, như:
- TimThumb: Một plugin phổ biến bị lỗ hổng upload file từ xa, cho phép hacker upload và thực thi mã độc trên máy chủ.
- WP Statistics: Plugin này từng có lỗ hổng cho phép upload file với phần mở rộng .php, dẫn đến khả năng thực thi mã độc.
Vulnerability in Content Management Systems (CMS)
Drupal: Năm 2018, lỗ hổng trong hệ thống upload file của Drupal đã bị khai thác để upload và thực thi mã độc, từ đó chiếm quyền kiểm soát hệ thống.
Exploits in Online File Sharing Services
Dropbox: Năm 2011, lỗ hổng trong hệ thống của Dropbox cho phép hacker upload file với mã độc, gây nguy hại cho người dùng tải xuống.
Government Websites
US Voter Database: Năm 2017, một lỗ hổng upload file trong hệ thống đăng ký cử tri của một số bang ở Mỹ cho phép hacker upload mã độc để truy cập dữ liệu cá nhân của cử tri.
E-commerce Platforms
Magento: Năm 2016, lỗ hổng trong nền tảng e-commerce Magento cho phép hacker upload file mã độc, từ đó chiếm quyền kiểm soát cửa hàng trực tuyến.
Forum and Social Networking Sites
vBulletin: Năm 2019, lỗ hổng trong phần mềm forum vBulletin cho phép upload file mã độc, từ đó chiếm quyền kiểm soát diễn đàn.
Minh Họa - Khai Thác Lỗ Hổng Upload File
Bước 1: Tìm Lỗ Hổng
Hacker sẽ tìm kiếm các trang web hoặc ứng dụng web có chức năng upload file nhưng không có kiểm tra chặt chẽ về định dạng file, MIME type, hoặc phần mở rộng file.
Bước 2: Chuẩn Bị File Độc Hại
Hacker tạo một file chứa mã độc, ví dụ file .php với nội dung:
<?php // File độc hại PHP system($_GET['cmd']); ?>
Bước 3: Upload File Độc Hại
Hacker sử dụng chức năng upload file của trang web để upload file PHP độc hại này.
Bước 4: Thực Thi Mã Độc
Nếu file được upload thành công và lưu trữ tại vị trí có thể truy cập công khai, hacker sẽ truy cập vào file thông qua URL, ví dụ: http://example.com/uploads/malicious.php?cmd=whoami
Lệnh whoami sẽ được thực thi trên máy chủ, và kết quả sẽ được trả về cho hacker, cho phép họ biết được thông tin về hệ thống.
Phương pháp phòng chống
Kiểm tra định dạng file
Chỉ cho phép upload các định dạng file cần thiết và an toàn (ví dụ: .jpg, .png, .pdf).
Giới hạn kích thước file
Đặt giới hạn kích thước file tối đa mà hệ thống có thể chấp nhận để tránh quá tải.
Lưu trữ file ở vị trí an toàn
Lưu trữ file ở thư mục không công khai, có quyền truy cập hạn chế.
Kiểm tra nội dung file
Sử dụng các công cụ kiểm tra mã độc hoặc nội dung không an toàn trong file trước khi lưu trữ.
Đổi tên file upload
Đổi tên file trước khi lưu trữ để tránh các vấn đề liên quan đến ký tự đặc biệt và xung đột tên.
Sử dụng công cụ bảo mật
Sử dụng các công cụ bảo mật như tường lửa ứng dụng web (WAF) để giám sát và ngăn chặn các tấn công từ phía upload file.
Kiểm tra MIME type
Kiểm tra MIME type của file để đảm bảo file có định dạng hợp lệ trước khi cho phép upload.
Kiểm tra metadata
Loại bỏ các metadata không cần thiết hoặc nguy hiểm có thể có trong file.
Kiểm tra phần mở rộng kép
Phát hiện và ngăn chặn các file có phần mở rộng kép như file.php.jpg.
Hạn Chế Quyền Truy Cập
Hạn chế quyền truy cập của thư mục chứa file upload, chỉ cho phép quyền ghi (write) và không cho phép thực thi (execute).