Bao gồm tệp PHP là gì?

Bao gồm tệp cục bộ [LFI] được giải thích bằng các ví dụ và tìm hiểu cách thực hiện kiểm tra bảo mật cho các lỗ hổng LFI

Giới thiệu

Mục đích của tài liệu này là hỗ trợ các cam kết đánh giá bảo mật ứng dụng web bằng cách hợp nhất nghiên cứu về các kỹ thuật kiểm tra LFI. Các lỗ hổng LFI thường được phát hiện trong quá trình đánh giá ứng dụng hoặc kiểm tra thâm nhập bằng các kỹ thuật có trong tài liệu này

Lỗ hổng bao gồm tệp cục bộ [LFI] là gì?

Bao gồm tệp cục bộ [LFI] cho phép kẻ tấn công bao gồm tệp trên máy chủ thông qua trình duyệt web. Lỗ hổng này tồn tại khi một ứng dụng web bao gồm một tệp mà không làm sạch chính xác đầu vào, cho phép kẻ tấn công thao túng đầu vào và chèn các ký tự duyệt đường dẫn cũng như bao gồm các tệp khác từ máy chủ web

Sau đây là một ví dụ về mã PHP dễ bị bao gồm tệp cục bộ

Xác định các lỗ hổng LFI

Các lỗ hổng LFI thường dễ xác định và khai thác. Ví dụ: bất kỳ tập lệnh nào bao gồm tệp từ máy chủ web đều là ứng cử viên sáng giá để thử nghiệm LFI tiếp theo

/script.php?page=index.html 

Một nhà tư vấn bảo mật sẽ cố gắng khai thác lỗ hổng này bằng cách thao túng tham số vị trí tệp, chẳng hạn như

/script.php?page=../../../../../../../../etc/passwd

Trên đây là một nỗ lực để hiển thị nội dung của tệp /etc/passwd trên hệ thống dựa trên UNIX/Linux

Dưới đây là ví dụ khai thác thành công lỗ hổng LFI trên ứng dụng web

Trình bao bọc PHP

PHP có một số trình bao bọc thường có thể bị lạm dụng để bỏ qua các bộ lọc đầu vào khác nhau

Trình bao bọc mong đợi PHP

PHP expect:// cho phép thực thi các lệnh hệ thống, tiếc là mô-đun mong đợi PHP không được bật theo mặc định

php?page=expect://ls

Tải trọng được gửi trong một yêu cầu POST tới máy chủ, chẳng hạn như

/fi/?page=php://input&cmd=ls

Ví dụ sử dụng php. // đầu vào chống lại DVWA

Lời yêu cầu

Mô tả hình ảnh. POST yêu cầu sử dụng php. //đầu vào

Phản ứng

Mô tả hình ảnh. Đầu ra từ lệnh “ls” được hiển thị phía trên biểu ngữ DVWA

PHP php. //lọc

/script.php?page=index.html 
0 cho phép bút kiểm tra bao gồm các tệp cục bộ và mã hóa base64 đầu ra. Do đó, mọi đầu ra base64 sẽ cần được giải mã để hiển thị nội dung

Một ví dụ sử dụng DVWA

vuln.php?page=php://filter/convert.base64-encode/resource=/etc/passwd  

Mô tả hình ảnh. Hình ảnh hiển thị văn bản được mã hóa base64 ở đầu trang được hiển thị

Giải mã Base64 chuỗi cung cấp tệp /etc/passwd

Mô tả hình ảnh. Hình ảnh hiển thị đầu ra được giải mã base64 từ /etc/passwd trên hệ thống UNIX/Linux

/script.php?page=index.html 
0 cũng có thể được sử dụng mà không cần mã hóa đầu ra base64 bằng cách sử dụng

________số 8_______

Mô tả hình ảnh. Hình ảnh hiển thị đầu ra từ /etc/passwd trên hệ thống UNIX/Linux sử dụng php. //lọc

Trình bao bọc ZIP PHP LFI

Quá trình trình bao bọc zip được tải lên. phía máy chủ tệp zip cho phép tải tệp zip lên bằng cách khai thác chức năng tệp dễ bị tổn thương của bộ lọc zip thông qua LFI để thực thi. Một ví dụ tấn công điển hình sẽ giống như

  1. Tạo một shell đảo ngược PHP
  2. Nén thành một. tập tin nén
  3. Tải trọng tải shell đã nén lên máy chủ
  4. Sử dụng trình bao bọc zip để giải nén tải trọng bằng cách sử dụng. php?page=zip. //đường dẫn/đến/tệp. zip%23vỏ
  5. Ở trên sẽ giải nén tệp zip vào shell, nếu máy chủ không nối thêm. php đổi tên nó thành shell. thay vào đó là php

Nếu chức năng tải tệp lên không cho phép tải tệp zip lên, bạn có thể thử bỏ qua chức năng tải tệp lên [xem. Tài liệu thử nghiệm tải lên tệp OWASP]

Các ứng dụng web của bạn đã được đánh giá gần đây chưa?

LFI qua /proc/self/environ

Nếu có thể bao gồm /proc/self/environ thông qua lỗ hổng bao gồm tệp cục bộ, thì việc giới thiệu mã nguồn qua tiêu đề Tác nhân người dùng là một vectơ có thể. Khi mã đã được đưa vào tiêu đề Tác nhân người dùng, lỗ hổng bao gồm tệp cục bộ có thể được tận dụng để thực thi

/script.php?page=index.html 
2 và tải lại các biến môi trường, thực thi trình bao đảo ngược của bạn

vỏ hữu ích

Các cửa sau PHP nhỏ hữu ích cho các kỹ thuật trên

Kỹ thuật Null Byte

Null byte injection bỏ qua việc lọc ứng dụng trong các ứng dụng web bằng cách thêm URL được mã hóa “Null bytes” chẳng hạn như %00. Thông thường, điều này bỏ qua các bộ lọc danh sách đen cơ bản bằng cách thêm các ký tự null bổ sung mà sau đó được cho phép hoặc không được xử lý bởi chương trình phụ trợ

Một số ví dụ thực tế về chèn byte rỗng cho LFI

vuln.php?page=/etc/passwd%00
vuln.php?page=/etc/passwd%2500

Cắt ngắn là một kỹ thuật bỏ qua danh sách đen khác. Bằng cách đưa tham số dài vào cơ chế bao gồm tệp dễ bị tổn thương có thể cắt bớt [cắt bỏ] tham số đầu vào, có thể bỏ qua bộ lọc đầu vào

Ô nhiễm tệp nhật ký

Ô nhiễm tệp nhật ký là quá trình đưa mã nguồn vào tệp nhật ký trên hệ thống đích. Điều này đạt được bằng cách giới thiệu mã nguồn thông qua các dịch vụ được hiển thị khác trên hệ thống đích mà hệ điều hành/dịch vụ đích sẽ lưu trữ trong các tệp nhật ký. Ví dụ: đưa mã shell ngược PHP vào một URL, khiến nhật ký hệ thống tạo một mục trong nhật ký truy cập apache cho mục không tìm thấy trang 404. Sau đó, tệp nhật ký apache sẽ được phân tích cú pháp bằng cách sử dụng lỗ hổng bao gồm tệp được phát hiện trước đó, thực thi trình bao đảo ngược PHP được chèn

Sau khi đưa mã nguồn vào [các] tệp nhật ký hệ thống đích, bước tiếp theo là xác định vị trí của tệp nhật ký. Trong giai đoạn điều tra và khám phá của một cuộc đánh giá bảo mật, hệ điều hành và máy chủ web mục tiêu sẽ được xác định, điểm khởi đầu tốt là tìm kiếm các đường dẫn nhật ký mặc định cho hệ điều hành và máy chủ web đã xác định [nếu chúng chưa được biết bởi . Danh sách tải trọng Burp LFI của FuzzDB có thể được sử dụng cùng với kẻ xâm nhập Burp để nhanh chóng xác định vị trí tệp nhật ký hợp lệ trên hệ thống đích

Một số dịch vụ thường được hiển thị trên hệ thống Linux/UNIX được liệt kê bên dưới

Apache / Nginx

Tiêm mã vào truy cập máy chủ web hoặc nhật ký lỗi bằng netcat, sau khi tiêm thành công, hãy phân tích vị trí tệp nhật ký máy chủ bằng cách khai thác lỗ hổng LFI đã phát hiện trước đó. Nếu nhật ký lỗi/truy cập máy chủ web dài, có thể mất một chút thời gian để thực thi mã được chèn của bạn

Email một Reverse Shell

Nếu máy mục tiêu chuyển tiếp thư trực tiếp hoặc qua một máy khác trên mạng và lưu trữ thư cho dữ liệu www của người dùng [hoặc người dùng apache] trên hệ thống thì có thể gửi email trình bao ngược tới mục tiêu. Nếu không có bản ghi MX nào tồn tại cho miền nhưng SMTP bị lộ thì có thể kết nối với máy chủ thư mục tiêu và gửi thư tới người dùng www-data / apache. Thư được gửi đến người dùng đang chạy apache, chẳng hạn như dữ liệu www để đảm bảo quyền của hệ thống tệp sẽ cho phép truy cập đọc tệp /var/spool/mail/www-data chứa mã trình bao đảo ngược PHP được chèn

Đầu tiên liệt kê hệ thống đích sử dụng danh sách tên tài khoản UNIX/Linux đã biết

Mô tả hình ảnh. Hình ảnh trên cho thấy trình bao đảo ngược PHP được gửi qua email kết nối với trình nghe netcat

Bao gồm PHP là gì?

Câu lệnh bao gồm [hoặc yêu cầu ] lấy tất cả văn bản/mã/đánh dấu tồn tại trong tệp đã chỉ định và sao chép nó vào tệp sử dụng câu lệnh bao gồm. Including files is very useful when you want to include the same PHP, HTML, or text on multiple pages of a website.

bao gồm tập tin giải thích với ví dụ là gì?

Cuộc tấn công bao gồm tệp cục bộ được dùng để lừa ứng dụng hiển thị hoặc chạy tệp trên máy chủ . Chúng cho phép kẻ tấn công thực thi các lệnh tùy ý hoặc nếu máy chủ bị định cấu hình sai và chạy với đặc quyền cao, để có quyền truy cập vào dữ liệu nhạy cảm.

Làm thế nào để bao gồm tập tin làm việc?

Bao gồm tệp cục bộ là kỹ thuật tấn công trong đó những kẻ tấn công lừa ứng dụng web chạy hoặc hiển thị tệp trên máy chủ web . Các cuộc tấn công LFI có thể làm lộ thông tin nhạy cảm và trong trường hợp nghiêm trọng, chúng có thể dẫn đến kịch bản chéo trang [XSS] và thực thi mã từ xa.

Bao gồm tập tin độc hại là gì?

Tương tự như RFI, bao gồm tệp cục bộ [LFI] là một vectơ liên quan đến việc tải các tệp độc hại lên máy chủ thông qua trình duyệt web . Hai vectơ thường được tham chiếu cùng nhau trong ngữ cảnh của các cuộc tấn công bao gồm tệp. Trong cả hai trường hợp, một cuộc tấn công thành công dẫn đến phần mềm độc hại được tải lên máy chủ được nhắm mục tiêu.

Chủ Đề