Bộ lọc PHP LFI
Une faille de type Local File Include (LFI) bao gồm việc bao gồm một fichier local thành partir d'une entrée utilisateur. Những điều chắc chắn về việc ceci permet d'accesser à des fichiers non situé dans le webroot voire d'executer du code Show
PHPTrình bao bọc PHPIl y a plusieurs “Wrappers” en PHP qui peuvent être utilisés pour mininger des LFI
LinuxQuelques fichiers utiles à inclure
thợ lặnIl est có thể bao gồm một số fichiers qui peuvent contenir des entrées utilisers si on veut thực thi mã (ví dụ:. Tác nhân người dùng, v.v. ) Bao gồm tệp cục bộ (LFI) là một lỗ hổng web cho phép tin tặc độc hại truy cập, xem và/hoặc bao gồm các tệp nằm trong hệ thống tệp của máy chủ web trong thư mục gốc của tài liệu Mức độ nghiêm trọng. Tỷ lệ nghiêm trọng. hiếm khi được phát hiện. chỉ xuất hiện trong phần mềm liên quan đến web Tác động kỹ thuật. truy cập vào thông tin nhạy cảm Hậu quả trường hợp xấu nhất. thực thi mã từ xa Khắc phục nhanh. không sử dụng tên tệp từ đầu vào của người dùng Bao gồm tệp cục bộ hoạt động như thế nào?Khi viết các ứng dụng web, các nhà phát triển thường cần truy cập các tệp phía máy chủ bổ sung nằm trong thư mục ứng dụng hoặc thư mục con của nó. Ví dụ: các nhà phát triển có thể muốn bao gồm các tệp cấu hình và mô-đun ứng dụng hoặc để truy cập và hiển thị các tệp do người dùng tải lên, chẳng hạn như tệp hình ảnh hoặc văn bản Để truy cập các tệp không tĩnh, nhà phát triển thường chuyển tên tệp qua tham số đầu vào của người dùng. Ví dụ: nếu ứng dụng hiển thị hình ảnh do người dùng tải lên, tác giả của ứng dụng có thể quyết định cho phép đặt tên tùy ý cho những hình ảnh này. Trong trường hợp các ngôn ngữ kịch bản như PHP, các nhà phát triển cũng có thể cần thêm động các tệp chứa mã nguồn Lỗ hổng bao gồm tệp cục bộ xảy ra khi người dùng độc hại có thể bao gồm tên tệp hoặc đường dẫn tùy ý trong đầu vào của người dùng. Ví dụ: nếu một ứng dụng được thiết kế để hiển thị một hình ảnh tùy ý dựa trên tham số URL, nhưng kẻ tấn công có thể sử dụng chức năng này để hiển thị mã nguồn ứng dụng, thì ứng dụng đó có lỗ hổng LFI. Lưu ý rằng nếu kẻ tấn công có thể bao gồm một tệp độc hại từ một vị trí từ xa, thì chúng ta đang nói về lỗ hổng bao gồm tệp từ xa (RFI) Bao gồm tệp cục bộ so với. duyệt thư mụcCác lỗ hổng bao gồm tệp cục bộ thường bị nhầm lẫn với truyền tải thư mục (path traversal), tương tự nhưng không đồng nghĩa
Hai lỗ hổng này thường bị nhầm lẫn vì chúng thường xảy ra cùng nhau và có cùng nguyên nhân gốc rễ. nhà phát triển cho phép chuyển đường dẫn đến các tệp cục bộ như một phần của đầu vào của người dùng (CWE-73) ghi chú. Một số định nghĩa coi việc bao gồm tệp cục bộ bị giới hạn trong các trường hợp tệp được bao gồm chứa mã nguồn và cũng được thực thi. Ví dụ: trong chỉ mục CWE, định nghĩa bao gồm tệp cục bộ là CWE-98. Kiểm soát tên tệp không đúng cách cho câu lệnh bao gồm/yêu cầu trong chương trình PHP Ví dụ về các cuộc tấn công bao gồm tệp cục bộDưới đây là các ví dụ về mã PHP có lỗ hổng bao gồm tệp cục bộ, cũng như các vectơ tấn công LFI khác nhau trên các ứng dụng bao gồm mã này LFI dẫn đến tiết lộ thông tin nhạy cảmNhà phát triển ứng dụng PHP muốn người dùng có thể đọc các bài thơ được lưu trữ trong tệp văn bản trên máy chủ web. Những bài thơ này được ghi vào các tệp văn bản, được tải lên bởi những người dùng khác và được lưu trữ trong một thư mục thơ tương đối. Sau đó, các bài thơ được hiển thị trong trình duyệt web như một phần của trang HTML. Sau đây là một đoạn mã từ các bài thơ/hiển thị. tập tin php
Như bạn có thể thấy, tên tệp được lấy trực tiếp từ tiêu đề yêu cầu HTTP. Do đó, bạn có thể truy cập và hiển thị một bài thơ có tên là bài thơ. txt bằng URL sau
Vectơ tấn côngKẻ tấn công lạm dụng tập lệnh này bằng cách thao túng yêu cầu GET bằng tải trọng sau
Màn hình hiển thị. tập lệnh php điều hướng lên thư mục gốc của tài liệu rồi xuống thư mục con /config/. Ở đó, nó bao gồm tệp cấu hình cơ sở dữ liệu cơ sở dữ liệu. php, chứa tên người dùng và mật khẩu được sử dụng để kết nối với cơ sở dữ liệu. Dữ liệu bị lộ dưới dạng một phần của mã HTML và kẻ tấn công chỉ cần kiểm tra mã nguồn của trang để tìm hiểu cách truy cập trực tiếp vào cơ sở dữ liệu LFI dẫn đến kịch bản chéo trangNhững kẻ tấn công cũng có thể sử dụng mã ở trên để nâng cấp cuộc tấn công lên tập lệnh chéo trang được lưu trữ (XSS) Vectơ tấn côngTrước tiên, kẻ tấn công sử dụng chức năng tải lên tệp thơ để tải "bài thơ" sau đây dưới dạng tệp văn bản có tên là thơ42. txt ________số 8Sau đó, kẻ tấn công gửi yêu cầu đưa bài thơ vào
Vì nội dung của bài thơ được dự định sẽ được hiển thị trực tiếp như một phần của mã HTML, mã trang hiện bao gồm một lỗ hổng tập lệnh chéo trang được lưu trữ. Kẻ tấn công có thể gửi liên kết này tới bất kỳ số lượng nạn nhân nào và bất kỳ ai mở nó sẽ nhận cookie phiên của họ được gửi đến kẻ tấn công do kẻ tấn công kiểm soát. trang web ví dụ LFI dẫn đến thực thi mã từ xaNhà phát triển của cùng một ứng dụng PHP cũng muốn có thể bao gồm các mô-đun một cách linh hoạt. Sau đây là một đoạn mã từ chỉ mục. tập tin php 0Một lần nữa, tên tệp được lấy trực tiếp từ yêu cầu GET HTTP. Do đó, bạn có thể bao gồm mô-đun chào mừng. php như sau 1Vectơ tấn côngĐầu tiên, kẻ tấn công sử dụng chức năng tải lên bài thơ để tải lên bài thơ42. txt, chứa mã nguồn PHP của pentest Monkey Reverse Shell Sau đó, kẻ tấn công thao túng yêu cầu GET để lập chỉ mục. php để bao gồm bài thơ thay vì một mô-đun 2Do đó, ứng dụng chạy mã của trình bao ngược (thực thi mã từ xa), cấp cho kẻ tấn công quyền truy cập từ xa vào dòng lệnh của máy chủ Hậu quả tiềm ẩn của một cuộc tấn công bao gồm tập tin cục bộNhư bạn có thể thấy từ các ví dụ trên, các lỗ hổng bao gồm tệp cục bộ có thể gây ra nhiều hậu quả, tùy thuộc vào chức năng của ứng dụng dễ bị tấn công. Dưới đây là một số ví dụ
Ví dụ về các lỗ hổng bao gồm tệp cục bộ nổi tiếng
Làm cách nào để phát hiện các lỗ hổng bao gồm tệp cục bộ?Cách tốt nhất để phát hiện các lỗ hổng bao gồm tệp cục bộ phụ thuộc vào việc chúng đã được biết hay chưa
Làm cách nào để ngăn chặn các lỗ hổng bao gồm tệp cục bộ trong các ứng dụng web?Có một số phương pháp cho phép bạn ngăn chặn các lỗ hổng bao gồm tệp cục bộ trong mã của mình
Các phương pháp trên có sẵn trong mọi ngôn ngữ lập trình và do đó mọi nhà phát triển có thể dễ dàng ngăn chặn các lỗ hổng bao gồm tệp cục bộ bằng cách sử dụng các kỹ thuật mã hóa an toàn. Không có lý do gì để đưa tệp cục bộ vào mã của bạn ghi chú. Không dựa vào danh sách đen, mã hóa hoặc các phương pháp xác thực/khử trùng đầu vào, chẳng hạn như lọc để ngăn việc đưa vào tệp cục bộ. Ví dụ: đừng cố giới hạn hoặc thực thi các phần mở rộng tệp hoặc chặn các chuỗi ký tự đặc biệt vì đây là biện pháp bảo vệ duy nhất của bạn khỏi LFI. Những kẻ tấn công có thể vượt qua các bộ lọc như vậy bằng cách sử dụng một số phương pháp khác nhau như mã hóa URL và các trình bao bọc như php. //lọc Làm cách nào để giảm thiểu các cuộc tấn công bao gồm tệp cục bộ?Các phương pháp giảm thiểu các cuộc tấn công bao gồm tệp cục bộ sẽ khác nhau tùy thuộc vào loại phần mềm
Trong trường hợp bao gồm tệp cục bộ zero-day trong phần mềm của bên thứ ba, bạn có thể áp dụng các quy tắc WAF (tường lửa ứng dụng web) tạm thời để giảm thiểu. Tuy nhiên, điều này chỉ làm cho việc bao gồm tệp cục bộ khó khai thác hơn và không loại bỏ được sự cố Các câu hỏi thường gặpBao gồm tệp cục bộ (LFI) là gì?Bao gồm tệp cục bộ (LFI) là một lỗ hổng web cho phép tin tặc độc hại truy cập, xem và/hoặc bao gồm các tệp nằm trong hệ thống tệp của máy chủ web trong thư mục gốc của tài liệu. Nó tương tự như bao gồm tập tin từ xa
Đọc về bao gồm tập tin từ xa (RFI) LFI nguy hiểm như thế nào?Các lỗ hổng bao gồm tệp cục bộ có thể gây ra nhiều hậu quả, tùy thuộc vào chức năng của ứng dụng dễ bị tấn công và thậm chí có thể dẫn đến sự xâm phạm toàn bộ hệ thống. Chúng thường xuất hiện cùng với các lỗ hổng duyệt thư mục
Tìm hiểu về duyệt thư mục Làm thế nào để tránh LFI?Để tránh LFI và nhiều lỗ hổng khác, hãy làm theo thói quen lập trình an toàn và không bao giờ tin vào thông tin đầu vào của người dùng. Nếu bạn cần bao gồm các tệp cục bộ, hãy sử dụng danh sách trắng các tên và vị trí tệp được phép |