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
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.
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é.
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.
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
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.
- ...
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é.
- 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é:
Bắt gói tin khi upload, nó sẽ như sau:
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.
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
- 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.
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 đó. - 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.