Lỗ hổng File upload trong thiết kế website

09.11.2020

5.0/5 (1 Reviews)

Lỗ hổng File upload trong thiết kế website, nguy hiểm ai cũng cần phải biết, nhận diện và phòng tránh.

    Giới thiệu

    Khỏi dài dòng, trong bài viết này mình sẽ giới thiệu rủi do về bảo mật đối với upload file. Chẳng hạn với chức năng upload avatar, thông thường user sẽ upload file ảnh lên server, okay, sẽ không có vấn đề gì cả nếu nó thực sự là một file ảnh, nhưng chiện zề sẽ xảy ra nếu như validate chỉ chạy ở phía frontend mà backend thì lại k kiểm tra chặt ?

    Lỗ hổng File upload trong thiết kế website

    Attacker có thể lợi dụng sơ hở này và tiến hành inject mã độc.

    Cách thức hoạt động

    Chức năng upload file là mục tiêu yêu thích của hackers vì nó cho phép lượng lớn dữ liệu và ghi vào disk. Điều này cho kẻ tấn công cơ hội smuggle mã độc lên server của bạn. Nếu chúng có thể tìm và thực thi đoạn mã độc đó, chúng có thể 'do something' với hệ thống thân yêu của bạn)

    Cùng xem nó hoạt động như thế nào nhé 

    Nhân vật quen thuộc trong của mình là Mal lần này sẽ demo cách hoạt động của lỗ hổng này. Hắn vào trang chỉnh sửa profile và tiến hành nghịch chức năng upload avatar

    Đầu tiên, file đã upload không hề được đổi đuôi file trong quá trình xử lý, file name xuất hiện trên URL của ảnh profile khi nó published. Thứ hai, đã kiểm tra file-type ở JS, nhưng Mal không bỏ cuộc, hắn viết thử một đoạn script gọi tới hack.php:

    <?php
      if(isset($_REQUEST['cmd'])) {
        $cmd = ($_REQUEST['cmd']);
        system($cmd);
      } else {
        echo "What is your bidding?";
      }
    ?>
    

    Khi mà web shell thực thi bởi PHP, nó sẽ chạy bất kỳ command nào được truyền qua tham số cmd. Hắn tắt JS ở phía trình duyệt và upload file hack.php lên với chức năng upload avatar - vốn không phải để upload thứ gì khác ngoài ảnh) . Và yep, JS bị tắt, kiểm tra đuôi file đã bị loại bỏ.

    Bây giờ ảnh đại diện của hắn sẽ trông như thế này:

    Đó là bởi vì nó không thể hiện được file không phải là ảnh, do hắn đã upload file hack.php thay vì ảnh mà) Chắc có lẽ đoạn script đã tồn tại trên server ha)

    Hắn lấy URL được truyền trên thẻ img của avatar và dán lên trình duyệt:

    Ờm, file hack.php của hắn kia rồi, bạn cũng thấy đoạn text What is your bidding? đã xuất hiện, như vậy là file hack.php đã chạy theo ý hắn.

    Giờ truyền thêm param vào URL thì chúng cũng sẽ được thực thi, thêm param vào đường dẫn ...1a2fe/hack.php?cmd=locate+my.cnf (locate my.cnf) để tìm đường dẫn đến file config database ha. trình duyệt trả ra nội dung như sau :/etc/mysql/my.cnf. Tương tự, bây giờ truyền thử lệnh cat /etc/mysql/my.cnf ha:

    Đọc sương sương thì cũng hiểu sơ sơ đấy nhờ, nội dung khá nhạy cảm, không dành cho trẻ em và phụ nữ có thai hoặc đang cho con bú ) Thông tin quan trọng về database bị lộ.

    Phòng chống

    Nhìn chung thì đây là lỗi cũng khá dễ khai thác, cũng có hại, và cũng thường gặp, dễ để kẻ tấn công có thể inject mã độc vào ứng dụng của bạn. Mọi thứ được người dùng gửi lên đều cần phải xem xét kỹ lưỡng, đảm bảo an toàn, nếu không kẻ tấn công có thể nhúng bất kỳ loại mã độc nào lên hệ thống. Có một vài cách bảo vệ sau đây hy vọng sẽ hữu ích cho bạn:

    1. Cách ly các file được upload.
    2. Chắc chắn rằng file không thể execute.
    3. Sửa lại tên file khi upload.
    4. validate file formats và extensions.
    5. validate content-type header.
    6. Sử dụng quét virus.
    7. Kiểm tra file size.
    8. Sanitize filename.
    9. Xử lý kỹ với file nén.

    Tổng kết

    Bài viết được chia sẻ và bổ sung lại từ nhiều nguồn trên internet, mong bạn đọc gói ý thêm, cùng chia sẻ những kiến thức hay đến mọi người.

    CÓ THỂ BẠN QUAN TÂM

    Bài Viết Cùng Chuyên Mục

    XEM THÊM
    thumbnail

    LPStack Server: Giải pháp thay thế XAMPP và MAMP năm 2026

    10.03.2026

    Bạn đã chán ngấy XAMPP hay MAMP chậm chạp? Khám phá LPStack Server – Môi trường Local Development siêu nhẹ của người Việt với Auto Vhost, Public Tunnel, chuyển đổi PHP 1-click và quản lý Database Native chuyên nghiệp

    thumbnail

    Hướng Dẫn Tạo Trò Chơi Cờ Caro Nâng Cao bằng HTML

    19.03.2025

    Chào các bạn! Trong bài viết này, chúng ta sẽ cùng nhau xây dựng một trò chơi Cờ Caro đơn giản nhưng có nhiều tính năng thú vị như giới hạn nước đi, pháo hoa khi chiến thắng, chọn chế độ chơi và đếm thời gian.

    thumbnail

    Grok AI: Giới thiệu chi tiết về chatbot của Elon Musk

    04.03.2025

    Grok là một chatbot AI tiên tiến, được phát triển bởi xAI, công ty do Elon Musk sáng lập. Ra mắt lần đầu vào tháng 11/2023, Grok được thiết kế để cạnh tranh với các mô hình AI nổi tiếng như ChatGPT

    thumbnail

    Hướng dẫn tạo Livechat trả lời bằng AI Grok của X

    04.03.2025

    Hướng dẫn kỹ thuật tạo Livechat AI bằng HTML, CSS, JavaScript và PHP Dưới đây là hướng dẫn từng bước để xây dựng một ứng dụng livechat AI đơn giản. Chúng ta sẽ có giao diện frontend (HTML, CSS, JS) và backend (PHP) xử lý tin nhắn.

    thumbnail

    Dịch vụ xử lý mã độc virus cá độ chèn liên kết ẩn trên website

    28.07.2024

    Gần đây nhiều website chính phủ, doanh nghiệp bị các đối tượng SEO mũ đen chèn các liên kết ẩn, chuyển hướng đến các website cá độ, cờ bạc, sex và nhiều nội dung nhạy cảm khác.