Web Pentest - Bài 7: Tìm kiếm các lỗ hổng liên quan đến File Upload

Thảo luận trong 'Web Security' bắt đầu bởi bobby13689, 10/09/21, 09:09 PM.

  1. bobby13689

    bobby13689 Moderator Thành viên BQT

    Tham gia: 27/04/17, 09:04 AM
    Bài viết: 36
    Đã được thích: 41
    Điểm thành tích:
    18
    Chào các bạn,

    Tiếp tục với chuỗi bài về Web pentest cho các bạn newbie, hôm nay mình sẽ giới thiệu một loại lỗ hổng bảo mật khác, mà khả năng cao trong thực tế, các bạn sẽ gặp khá nhiều, đó chính là lỗ hổng liên quan đến File Upload

    upload_2021-9-10_21-48-15.png

    Như thường lệ, chúng ta sẽ nói tới các trường hợp phổ biến chúng ta cần sử dụng tính năng này.

    • Bạn xây dựng một ứng dụng blog cá nhân, bạn muốn có tính năng export các post để backup, sau đó import lại các bài viết này bằng việc upload file đã export lúc trước.
    • Ứng dụng thống kê của bạn cần nhập thông tin từ nhiều khách hàng khác nhau để tổng hợp số liệu.
    • Bạn sao lưu các cấu hình của ứng dụng mình quản lý để có thể cài đặt ở một máy khác.
    • ...
    Có thể thấy, nhu cầu có tính năng file upload xuất hiện ở rất nhiều ứng dụng, như từ Facebook, Twitter, đến những ứng dụng chuyên môn hoá trong công việc hằng ngày của bạn, cũng như ứng dụng bạn tự phát triển,...

    Vậy thì, làm sao để xây dựng được một tính năng upload file an toàn? Chúng ta cùng điểm qua một số lỗ hổng chính liên quan đến file upload nhé.

    1. Lưu file không an toàn
      Lỗ hổng này xảy ra khi ứng dụng nhận file của bạn, dùng chính tên file mà người dùng gửi lên để lưu nó ở 1 folder trên server. Nghe bình thường đúng không nào?



      Xem ví dụ này nhé:

      upload_2021-9-10_21-50-6.png
      Bắt gói tin khi upload, nó sẽ như sau:
      upload_2021-9-10_21-49-40.png

      Chỉ cần sửa nội dung file là shell của bạn (ở đây mình dùng phpinfo để lấy thông tin cơ bản), thì đã có thể có lấy được reverse shell rồi.

      upload_2021-9-10_21-51-22.png


      upload_2021-9-10_21-52-9.png
      upload_2021-9-10_21-53-29.png

      Tất nhiên, điều kiện để khai thác được lỗi này và lấy được shell, file của bạn phải được lưu ở một folder có quyền thực thi file php, và bạn phải truy cập được file đó (tất nhiên rồi?).

      Kết quả là chúng ta có thể lấy được phpinfo, phần lấy reverse shell, mình dành lại cho bạn đọc tự tìm tòi nhé. Mình demo nhẹ thế này thôi :D
      upload_2021-9-10_21-52-0.png


    2. Xử lý file không an toàn
      Một lỗi khác liên quan đến file upload, liên quan đến việc xử lý file này sau khi được lưu trữ ở server.
      Ví dụ, ứng dụng của bạn nhận 1 file zip và giải nén file này sau khi upload, rất có thể nó sẽ bị Zip Boom attack.
      Để kiểm tra, bạn thử tạo 1 file zip bằng cách sau:
      Mã:
      dd if=/dev/zero bs=1m count=1024 | zip -9 > bomb.zip
      Sau đó upload bằng tính năng này, và kiểm tra xem ứng dụng cùa bạn có còn chạy hay không?
      May quá, ứng dụng của mình không dính lỗi này. :D


      Tuyên bố trách nhiệm: hướng dẫn này mang mục đích giới thiệu, training, không khuyến nghị sử dụng để tấn công các trang web bạn không có quyền làm việc đó.
    3. Cho phép các file không an toàn được upload
      Ngoài 2 lỗi phổ biến trên, một lỗi khác cũng ảnh hưởng rất lớn đến ứng dụng, đó là việc cho phép upload các file như HTML, SVG lên hệ thống và tái sử dụng những file này. Rủi ro dễ thấy là các file HTML sẽ được render như là một phần của ứng dụng, sẽ ra sao, nếu trang web của bạn có 1 đường dẫn nào đó chứa những hình ảnh phản cảm, và được chia sẻ lên các trang mạng?
      Lỗi này mình thường gặp rất nhiều ở các ứng dụng mà mình đã từng kiểm tra, do tính nhạy cảm của lỗi này, mình xin phép không hướng dẫn chi tiết, để tránh bị lạm dụng, xem như là một bài tập nhỏ cho các bạn muốn luyện tập nhé.

    Mình đã hoàn thành chia sẻ các lỗ hổng liên quan đến File Upload rồi, bạn nào có hứng thú, hãy để lại comment chia sẻ ý nghĩ của bạn về các lỗi này, kinh nghiệm của bạn là gì, hoặc theo bạn, cách giải quyết những lỗ hổng này là gì?...

    Cảm ơn các bạn đã đọc bài, hẹn gặp các bạn trong bài sau.

    Happy Hacking.
    M.
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  2. DDos

    DDos Administrators Thành viên BQT

    Tham gia: 22/10/13, 08:10 PM
    Bài viết: 2,016
    Đã được thích: 485
    Điểm thành tích:
    83
    Bổ sung thêm là thi thoảng đặt tên tệp để tải lên máy chủ có với một XSS payload thi thoảng cũng có thể tìm ra lỗ hổng XSS. :D
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    bobby13689 thích bài này.
  3. bobby13689

    bobby13689 Moderator Thành viên BQT

    Tham gia: 27/04/17, 09:04 AM
    Bài viết: 36
    Đã được thích: 41
    Điểm thành tích:
    18
    Chuẩn anh ah. Cảm ơn anh đã bổ sung ah. :D
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  4. tuantran

    tuantran Moderator Thành viên BQT

    Tham gia: 27/04/17, 09:04 AM
    Bài viết: 34
    Đã được thích: 18
    Điểm thành tích:
    8
    ở cái phần xử lý file ko an toàn thì nguyên nhân chính có phìa là do dùng thirt party outdated hay là do họ tự handle nhỉ?
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    bobby13689 thích bài này.
  5. bobby13689

    bobby13689 Moderator Thành viên BQT

    Tham gia: 27/04/17, 09:04 AM
    Bài viết: 36
    Đã được thích: 41
    Điểm thành tích:
    18
    Các app tôi review thì đa số dùng 3rd-party outdated lib, một số rất ít thì tự handle, với mục đích là xử lý các file chứa data đặc thù của ứng dụng ấy. Nhưng thường tự handle lại còn nhiều lỗi hơn cả dùng lib outdated nữa. :D
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    tuantran thích bài này.
  1. tuantran
  2. tuantran
  3. tuantran
  4. bobby13689
  5. bobby13689
Tags: