Mặc dù không nằm trong danh sách Top 10 lỗ hổng bảo mật web theo công bố OWASP 2020 nhưng File Upload vẫn là một lỗ hổng cực kỳ nguy hiểm mà bạn nên cẩn thận. File Upload là mục tiêu ưa thích của tin tặc, vì nó yêu cầu trang web của bạn tải lên một lượng lớn dữ liệu và ghi vào đĩa.
Điều này tạo cơ hội cho những kẻ tấn công tiêm các tập lệnh độc hại vào máy chủ của bạn. Nếu tin tặc có thể tìm ra cách thực thi các tập lệnh đó, chúng có thể làm tổn hại đến toàn bộ hệ thống của bạn.
Vậy nên, trong bài viết này, mình sẽ cho các bạn xem cách hoạt động của lỗ hổng File Upload thông qua ví dụ thực tế nhé.
Cách lỗ hổng File Upload hoạt động
Ellyx13 là tin tặc đã đăng ký một trang web chạy trên hệ thống quản lý nội dung phổ biến (như WordPress chẳng hạn).
Ellyx13 đã nhận ra một vài điều khá thú vị về chức năng upload ảnh avatar của trang web.
Thứ nhất, các tệp đã tải lên không được đổi tên như một phần của quá trình upload. Tên tệp nguyên gốc xuất hiện trong URL của avatar profile. Thứ hai, trang web kiểm tra định dạng file bằng javascript.
Ellyx13 viết một script đơn giản có tên là hack.php. Khi trang web thực thi script PHP này , nó sẽ chạy bất kỳ lệnh nào được truyền trong tham số “cmd”.
Ellyx13 vô hiệu hóa JavaScript trong trình duyệt của mình và upload file hack.php làm avatar profile của mình. Vì JavaScript bị tắt nên định dạng tệp sẽ không được kiểm tra.
Không có gì ngạc nhiên khi avatar profile của Ellyx13 không hiển thị được, bởi vì tập tin mà mình tải lên không phải là file hình ảnh hợp lệ. Tuy nhiên, script hack.php hiện đang tồn tại trên máy chủ.
Bây giờ, bạn chỉ cần thay đổi URL của avatar profile trong thanh địa chỉ trình duyệt một chút thôi sẽ khiến script hack.php được thực thi.
Trên thực tế, bất kỳ lệnh nào được truyền trong tham số “cmd” sẽ được thực thi trên máy chủ. File upload của Ellyx13 đã tạo ra một lỗ hổng thực thi lệnh.
Bây giờ Ellyx13 đã có quyền thực thi lệnh trên máy chủ web. Lúc này, mình có quyền thực thi các lệnh cmd để truy cập vào dữ liệu nhạy cảm như định vị file my.cnf để tìm tệp cấu hình cơ sở dữ liệu chẳng hạn. Bằng cách nhập lệnh đường dẫn: https://ift.tt/2WeemE6
Mình đã có được đường đẫn file cấu hình cơ sở dữ liệu rồi thì sẽ làm gì tiếp theo đây? Đương nhiên là dùng lệnh cat /etc/mysql/my.cnf
để đọc nội dung file và tìm tài khoản mật khẩu web chứ còn gì nữa.
Rất nguy hiểm đúng không? Bây giờ chúng ta đã thấy cách tấn công File Upload có thể khiến trang web của bạn dễ bị tấn công như nào rồi chứ, bây giờ chúng ta sẽ tìm hiểu cách bảo mật tính năng File Upload nhé.
Cách bảo mật File Upload
File Upload là cách khá dễ để kẻ tấn công tiêm mã độc vào web của bạn. Bạn cần đảm bảo các tệp đã tải lên được cách ly cho đến khi chúng được bảo mật hoàn toàn, nếu không, bạn có thể sẽ tạo ra một con đường dễ dàng để hệ thống của bạn bị tấn công đó.
Rủi ro
Các tin tặc thông mình thường khai thác kết hợp các lỗ hổng khi tấn công trang web của bạn – upload mã độc lên máy chủ là bước đầu tiên trong quy trình tấn công. Bước tiếp theo là tìm cách thực thi mã độc.
Ngay cả các công ty lớn cũng mắc phải lỗ hổng này, đặc biệt là nếu họ đang chạy các cơ sở code phức tạp, có tính kế thừa.
Bảo vệ
Bất kỳ đầu vào nào đến từ người dùng đều phải được xử lý một cách cẩn thận cho đến khi nó được đảm bảo là an toàn. Điều này đặc biệt đúng với các tệp được tải lên, bởi vì ban đầu ứng dụng của bạn thường coi chúng như một khối dữ liệu vô hại, cho phép kẻ tấn công tiêm bất kỳ loại mã độc hại nào mà chúng muốn vào hệ thống của bạn.
Tách nội dung tải lên
Các tệp tải lên thường ít được xử lý. Trừ khi bạn đang xây dựng một trang web xử lý hình ảnh, video hoặc tài liệu. Nếu đúng như vậy, việc đảm bảo các tệp đã tải lên được giữ riêng biệt với code hệ thống là yếu tố quan trọng nhất.
Bạn có thể sử dụng các dịch vụ lưu trữ đám mây hoặc hệ thống quản lý nội dung để lưu trữ các tệp đã tải lên. Ngoài ra, nếu bạn muốn thì có thể ghi các tệp đã tải lên vào cơ sở dữ liệu của mình. Cả hai cách tiếp cận này đều ngăn chặn việc thực thi ngẫu nhiên script.
Ngay cả việc lưu trữ các tệp đã tải lên trên một máy chủ tệp hoặc trong một phân vùng đĩa riêng biệt cũng có ích, cô lập thiệt hại tiềm ẩn mà một tệp độc hại có thể gây ra.
Đảm bảo không thể thực thi tệp tải lên
Tuy nhiên, nếu tệp tải lên được ghi vào đĩa, hãy đảm bảo chúng không được hệ điều hành coi như tệp thực thi. Máy chủ web của bạn phải có quyền đọc và ghi trên các thư mục được sử dụng để lưu trữ nội dung đã tải lên, nhưng không thể thực thi bất kỳ tệp nào ở đó. Nếu bạn đang sử dụng hệ điều hành dựa trên Unix, hãy đảm bảo rằng các tệp đã tải lên không có quyền “executable”.
Đổi tên tệp tải lên
Viết lại hoặc làm xáo trộn tên tệp sẽ khiến kẻ tấn công khó xác định được tệp độc hại sau khi chúng được tải lên. Lúc này, tin tặc sẽ không thể xác định tên tệp để thực thi file tải lên được.
Xác thực định dạng tệp và tiện ích mở rộng
Đảm bảo rằng bạn kiểm tra phần mở rộng tệp của file được tải lên nằm trong danh sách các loại tệp được phép. Thực hiện việc này ở phía máy chủ, vì các kiểm tra phía máy khách có thể bị vô hiệu hóa.
Xác thực Content-Type
Các tệp được tải lên từ trình duyệt sẽ được kèm theo tiêu đề Content-Type. Đảm bảo nó thuộc danh sách trắng các loại tệp được phép. (Tuy nhiên, hãy lưu ý rằng các tập lệnh hoặc proxy đơn giản có thể giả mạo loại tệp, do đó, biện pháp bảo vệ này, mặc dù hữu ích, nhưng không đủ để ngăn cản kẻ tấn công.)
Sử dụng trình quét vi-rút
Các trình quét vi-rút rất hữu ích trong việc phát hiện các tệp độc hại giả dạng một loại tệp khác, vì vậy nếu bạn đang sử dụng tính năng File Upload, thì bạn nên chạy tính năng quét vi-rút.
Ngoài ra còn có các biện pháp bảo mật File Upload khác như kiểm tra kích thước file, zip bomb,….
Các bạn muốn mình làm về lỗ hổng nào tiếp thì comment bên dưới nhé. Đừng quên tham gia Server Discord của Anonyviet tại đây.
Xem Them Chi Tiet
Nhung Mon Do Cong Nghe Duoc Yeu Thich
Do Cong Nghe Phu Kien
Xem Them Chi Tiet
Phu nu phai dep dan ong moi yeu! Sam ngay bo vay dam sieu dep
Thanh xuan nhu mot tach trá Khong mua do hot phi hoai thanh xuan
Xem Them Chi Tiet
Nhung Mon Do Cong Nghe Duoc Yeu Thich
Do Cong Nghe Phu Kien
0 nhận xét:
Đăng nhận xét