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

bobby13689

VIP Members
27/04/2017
44
46 bài viết
Web Pentest - Bài 7: Tìm kiếm các lỗ hổng liên quan đến File Upload
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
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
  • Thích
Reactions: bobby13689
Comment
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
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
Comment
ở 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
  • Thích
Reactions: bobby13689
Comment
ở 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ỉ?
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
  • Thích
Reactions: tuantran
Comment
@bobby13689
Em hiện tại không gõ tiếng việt có dấu được trong Burp Suite như hình
B0wppCF.png

Nếu em copy =>paste vào thì được, nhưng khi chạy test thì respone lại vẫn bị lỗi font tiếng Việt. Em đã google đủ cách mà vẫn không tìm ra các khắc phục.
Anh có cách nào sử dụng được tiếng việt có dấu trong Burp Suite không anh?
 
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
Comment
@bobby13689
Em hiện tại không gõ tiếng việt có dấu được trong Burp Suite như hình
B0wppCF.png

Nếu em copy =>paste vào thì được, nhưng khi chạy test thì respone lại vẫn bị lỗi font tiếng Việt. Em đã google đủ cách mà vẫn không tìm ra các khắc phục.
Anh có cách nào sử dụng được tiếng việt có dấu trong Burp Suite không anh?
Những cấu hình của Burp Suite hiện tại chưa hỗ trợ tốt tiếng Việt đâu bạn.
Đối với các trường hợp này, mình thường dùng Regex match (nút tick ở trong hình của em), và để match là 1 regex string, ví dụ như sau:
Mã:
"msg":".*"
 
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
  • Thích
Reactions: pantigon
Comment
Những cấu hình của Burp Suite hiện tại chưa hỗ trợ tốt tiếng Việt đâu bạn.
Đối với các trường hợp này, mình thường dùng Regex match (nút tick ở trong hình của em), và để match là 1 regex string, ví dụ như sau:
Mã:
"msg":".*"
Dạ mục Match em dùng Regex thì được rồi, chỉ còn mục Replace là không thay thế tiếng Việt có dấu được.
Vậy là không có cách nào khác đúng không anh?
Em cảm ơn anh ạ.
 
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
Comment
Thẻ
pentest web zip
Bên trên