Bảo mật Ckeditor, Ckfinder khỏi bị tấn công
Trần Thị Vân
- 4197
- 09/06/2023
CKEditor và CKFinder là hai công cụ được sử dụng rất phổ biến trong các website quản trị nội dung. Chúng giúp biên tập văn bản, tải lên hình ảnh, quản lý tập tin và nâng cao trải nghiệm của người dùng. Tuy nhiên, cũng chính vì mức độ phổ biến đó mà đây trở thành mục tiêu thường xuyên của các cuộc tấn công tự động trên Internet.
Nhiều quản trị viên chỉ quan tâm đến việc cài đặt để sử dụng mà bỏ qua các bước bảo mật. Kết quả là website bị tải lên mã độc, chèn shell, thay đổi nội dung, phát tán spam hoặc bị chiếm quyền điều khiển máy chủ. Trên thực tế, phần lớn các sự cố không đến từ CKEditor hay CKFinder mà đến từ việc cấu hình không đúng hoặc sử dụng phiên bản đã tồn tại lỗ hổng.
Bài viết này của Web Mới sẽ hướng dẫn cách xây dựng một hệ thống CKEditor và CKFinder an toàn ngay từ đầu, giúp giảm thiểu tối đa nguy cơ bị khai thác.

Vì sao CKEditor và CKFinder thường bị hacker nhắm tới?
Đây là hai thành phần xuất hiện trên hàng triệu website. Khi một lỗ hổng được công bố, các công cụ quét tự động sẽ rà soát hàng loạt tên miền để tìm đúng phiên bản dễ bị khai thác.
Đối tượng tấn công thường không quan tâm website lớn hay nhỏ. Chỉ cần phát hiện được điểm yếu, hệ thống sẽ tự động thực hiện các bước khai thác.
- Tải lên webshell.
- Đưa mã JavaScript độc hại vào nội dung.
- Chèn liên kết SEO bẩn.
- Tải tập tin thực thi.
- Đọc hoặc ghi tập tin trái phép.
- Chiếm quyền quản trị website.
Nếu chỉ cài đặt mặc định và không cấu hình thêm, website sẽ tồn tại rất nhiều rủi ro.
Luôn sử dụng phiên bản mới nhất
Đây là nguyên tắc quan trọng nhất nhưng lại thường bị bỏ qua.
Nhiều website vẫn sử dụng CKEditor hoặc CKFinder đã tồn tại nhiều năm vì ngại cập nhật. Điều này khiến hacker chỉ cần xác định phiên bản là có thể áp dụng các phương thức khai thác đã được công khai.
Khi triển khai:
- Không sử dụng bản quá cũ.
- Theo dõi thông báo bảo mật của nhà phát triển.
- Kiểm tra changelog trước khi nâng cấp.
- Thử nghiệm trên môi trường test trước khi cập nhật lên website chính.
Không cho phép truy cập CKFinder công khai
Một lỗi rất phổ biến là để mọi người đều có thể truy cập trực tiếp vào trình quản lý tập tin.
Nếu người dùng chưa đăng nhập vẫn mở được CKFinder thì nguy cơ bị khai thác gần như chắc chắn sẽ xảy ra trong tương lai.
Nguyên tắc đúng là:
- Chỉ người đã xác thực mới được sử dụng.
- Kiểm tra quyền trước khi khởi tạo CKFinder.
- Không dựa vào việc ẩn đường dẫn.
- Luôn xác thực phía máy chủ.
Chỉ cấp quyền cho đúng đối tượng
Không phải tài khoản nào cũng cần được tải tập tin.
Hãy phân quyền rõ ràng:
| Nhóm người dùng | Quyền nên cấp |
|---|---|
| Quản trị viên | Đầy đủ |
| Biên tập viên | Tải hình ảnh và tài liệu |
| Cộng tác viên | Không cho quản lý tập tin hệ thống |
| Khách | Không được truy cập CKFinder |
Nguyên tắc cấp quyền tối thiểu luôn giúp giảm thiểu rủi ro nếu tài khoản bị đánh cắp.
Không cho phép tải lên các tập tin nguy hiểm
Đây là nguyên nhân phổ biến nhất khiến website bị cài webshell.
Nếu hệ thống cho phép tải lên tập tin PHP hoặc các định dạng có thể thực thi thì hacker chỉ cần tải lên một tập tin độc hại là có thể điều khiển máy chủ.
Nên chỉ cho phép các định dạng thật sự cần thiết.
- jpg
- jpeg
- png
- gif
- webp
- docx
- xlsx
- zip nếu thật sự cần
Không nên cho phép:
- php
- php3
- php4
- php5
- phtml
- phar
- cgi
- pl
- asp
- aspx
- jsp
- exe
- bat
- cmd
- com
- dll
Kiểm tra MIME Type thay vì chỉ kiểm tra phần mở rộng
Nhiều website chỉ kiểm tra đuôi tập tin.
Ví dụ tập tin có tên:
hinhanh.jpg
Nhưng thực chất bên trong lại là mã PHP.
Máy chủ cần kiểm tra đồng thời:
- Phần mở rộng.
- MIME Type.
- Nội dung thực tế của tập tin.
- Kích thước.
Không nên chỉ tin vào tên tập tin do trình duyệt gửi lên.
Đổi tên tập tin sau khi tải lên
Không nên lưu nguyên tên do người dùng cung cấp.
Ví dụ:
avatar.php.jpg
hoặc
../../../image.png
Thay vào đó nên tạo tên mới ngẫu nhiên.
Ví dụ:
7c5b18df4d7b.webp
Điều này giúp:
- Tránh ghi đè tập tin.
- Hạn chế đoán tên.
- Ngăn Path Traversal.
Không lưu thư mục upload ở nơi có thể thực thi mã
Ngay cả khi đã kiểm tra phần mở rộng, vẫn nên cấu hình máy chủ để thư mục upload không thực thi PHP.
Ví dụ với Apache có thể sử dụng:
php_flag engine off
Options -ExecCGI
RemoveHandler .php .phtml .php3 .php4 .php5
RemoveType .php .phtml .php3 .php4 .php5
Nếu có điều kiện, hãy lưu toàn bộ tập tin upload bên ngoài thư mục chứa mã nguồn website.
Giới hạn kích thước tập tin
Nếu không giới hạn dung lượng, hacker có thể tải lên các tập tin rất lớn nhằm làm đầy ổ cứng hoặc gây quá tải máy chủ.
Nên quy định giới hạn theo nhu cầu thực tế.
- Ảnh đại diện.
- Ảnh bài viết.
- Tài liệu.
- Video nếu có.
Không nên để giới hạn quá lớn chỉ vì "phòng khi cần".
Kiểm tra nội dung hình ảnh
Một số tập tin có thể chứa mã độc nhưng vẫn mang phần mở rộng hình ảnh.
Nên sử dụng thư viện xử lý ảnh để mở và tạo lại hình trước khi lưu.
Việc tạo lại ảnh sẽ loại bỏ nhiều dữ liệu không cần thiết và giảm nguy cơ khai thác.
Ẩn đường dẫn nội bộ của máy chủ
Không nên để hệ thống trả về lỗi chứa:
- Đường dẫn vật lý.
- Tên thư mục.
- Tên tài khoản hệ điều hành.
- Cấu trúc máy chủ.
Những thông tin này giúp hacker hiểu rõ hơn về môi trường triển khai.
Ghi nhật ký toàn bộ hoạt động tải tập tin
Website nên lưu lại:
- Người tải lên.
- Thời gian.
- Địa chỉ IP.
- Tên tập tin.
- Kích thước.
- Kết quả.
Khi xảy ra sự cố, nhật ký sẽ giúp xác định nguyên nhân nhanh hơn.
Quét virus đối với tập tin tải lên
Đối với website doanh nghiệp hoặc hệ thống có nhiều người dùng, nên tích hợp phần mềm quét mã độc ngay sau khi tải tập tin.
Nếu phát hiện dấu hiệu bất thường, tập tin cần được từ chối hoặc chuyển sang khu vực cách ly.
Bảo vệ khu vực quản trị
Ngay cả khi CKFinder được cấu hình đúng, nếu tài khoản quản trị bị lộ thì toàn bộ hệ thống vẫn có nguy cơ bị chiếm quyền.
Nên kết hợp:
- Mật khẩu mạnh.
- Xác thực hai lớp.
- Giới hạn số lần đăng nhập.
- Tự động khóa khi đăng nhập sai nhiều lần.
- Đăng xuất sau thời gian không hoạt động.
Thường xuyên kiểm tra bảo mật
Bảo mật không phải là công việc chỉ thực hiện một lần.
Định kỳ nên:
- Kiểm tra quyền thư mục.
- Rà soát tập tin mới xuất hiện.
- Kiểm tra nhật ký hệ thống.
- Cập nhật phiên bản.
- Xóa tài khoản không còn sử dụng.
- Đánh giá lại cấu hình upload.
Kết luận
CKEditor và CKFinder là những công cụ mạnh mẽ nhưng chỉ thực sự an toàn khi được triển khai đúng cách. Việc cập nhật phiên bản, kiểm soát quyền truy cập, giới hạn định dạng tập tin, vô hiệu hóa thực thi trong thư mục upload, kiểm tra MIME Type, đổi tên tập tin và giám sát hoạt động tải lên sẽ tạo thành nhiều lớp bảo vệ giúp website giảm đáng kể nguy cơ bị tấn công.
Đối với mọi dự án do Web Mới phát triển, bảo mật luôn cần được xem là một phần của quá trình thiết kế hệ thống thay vì chỉ bổ sung sau khi website đi vào hoạt động. Một cấu hình an toàn ngay từ đầu sẽ giúp tiết kiệm rất nhiều thời gian, chi phí và hạn chế những rủi ro nghiêm trọng trong tương lai.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *