Hướng dẫn php filter convert base64 encode resource - bộ lọc php chuyển đổi tài nguyên mã hóa base64
Ảnh của Émile perron trên unsplash Bao gồm tệp cục bộ là gì? Show
Bao gồm tệp cục bộ (LFI) cho phép kẻ tấn công bao gồm các 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 vệ sinh chính xác đầu vào, cho phép kẻ tấn công thao tác đầu vào và bơm các ký tự đường dẫn và bao gồm các tệp khác từ máy chủ web. Xác định dễ bị tổn thương http://localhost/webhacking/PHP-LFI/index.php?page=page2.php
Ví dụ Mã dễ bị tổn thương if (isset($_GET[‘page’])) Loại trình bao bọc PHP
php://filter/convert.base64-encode/resource=index.php Bộ lọc PHP không có mã hóa Base64 php://filter/resource=flag.txt Lưu ý: Có thể trình bao bọc PHP có thể được chuỗi nhiều thời gian, ví dụ php://filter/convert.base64-encode|convert.base64-decode/resource=index.php
1. data:text/plain, Kỹ thuật null byte Lưu ý: Chỉ trong các phiên bản của PHP dưới 5.3.4, chúng ta có thể chấm dứt với một byte null ?page=../../../etc/passwd%00 bạn có thể dùng "?" Thay vào đó, null byte, điều này có thể thao tác với máy chủ web với việc thêm yêu cầu nhận ở cuối tải trọng Trong blog trước đây của tôi liên quan đến LFI, tôi đã thảo luận về một số bước cơ bản để đạt được LFI. Bây giờ trong blog này, tôi đang giải thích làm thế nào chúng ta có thể đạt được LFI là có bất kỳ sự lọc đầu vào nào ở phía máy chủ. AIM: Mục đích của chúng tôi là tìm mật khẩu tài khoản quản trị của trang web. Our aim is to find admin account password of the website. Có ba tab trong ứng dụng web. · Nhà · CV · Tiếp xúc Khi chúng tôi nhấp vào tab Home Home, biến Home Travel trong URL với tham số trang. Tương tự… Tệp cục bộ bao gồm (LFI) là một cách dễ dàng để kẻ tấn công xem các tệp trên máy chủ không có nghĩa là được xem hoặc truy xuất. Thông qua cài đặt được cấu hình sai trên mã máy chủ hoặc lập trình xấu, kẻ tấn công sẽ có khả năng xem các tệp hệ điều hành cục bộ trong trang web hiện tại. Trước đây chúng tôi đã bao gồm khai thác tệp địa phương bao gồm trở lại trong bài đăng trên blog 2018 của chúng tôi. Nhưng một trong những trường đại học của chúng tôi đã hỏi câu hỏi sau đây.
Chúng tôi đã không bao gồm các addon và chức năng PHP specfic có thể được sử dụng để tạo điều kiện cho LFI. Vì vậy, chúng tôi nghĩ rằng chúng tôi sẽ giải quyết câu trả lời cho câu hỏi ở đây. Bộ lọc PHPBộ lọc PHP là gì?Bộ lọc PHP được sử dụng chủ yếu cho:
Tiện ích mở rộng bộ lọc PHP có nhiều chức năng cần thiết để kiểm tra đầu vào của người dùng và được thiết kế để làm cho xác thực dữ liệu dễ dàng và nhanh hơn. Khai thác bộ lọc PHPMột ví dụ đơn giản là sử dụng chức năng PHP: //filter/convert.base64-Encode để mã hóa nội dung của một bộ mã nguồn trang. Ví dụ:php://filter/convert.base64-encode function to encode the contents of a page’s source-code. E.g:
Khi thành công, trình duyệt nên chứa một chuỗi được mã hóa base64 có thể dễ dàng được giải mã trên dòng lệnh hoặc thông qua cyberchef! Dưới đây anh ta có một ví dụ từ một trang web CTF có thể truy cập công khai: Ví dụ về bộ lọc PHP từ HackTheBox (HTB) không được giám sátTrong ví dụ này, chúng ta cần sửa đổi bộ lọc PHP một chút (PHP: // Filter/Read), vì mã nguồn PHP sẽ cố gắng thực thi mã PHP được bao gồm do câu lệnh bao gồm () trên dòng 97.
Output:
Sau đó, chúng tôi có thể giải mã điều này trên dòng lệnh bằng base64 hoặc bạn có thể sử dụng cyberchef:base64 or you could use Cyberchef:
Như bạn có thể thấy từ đầu ra được giải mã ở trên, lỗ hổng này cho phép chúng tôi truy cập mã nguồn của một trang và có khả năng bỏ qua bí mật của nó: liệu các lỗ hổng bổ sung của nó hoặc có thể là các khóa được mã hóa cứng. Bao bọc PHPMột luồng là một đối tượng tài nguyên thể hiện hành vi có thể truyền phát. Đó là, nó có thể được đọc từ hoặc viết thành một cách tuyến tính. Các nhà phát triển PHP sử dụng trình bao bọc khi ứng dụng của họ yêu cầu các tài nguyên cụ thể, chẳng hạn như hình ảnh hoặc tài liệu. Ví dụ về trình bao bọc luồng bao gồm: http: //, ftp: //, tệp: //, php: //, phar: //, zip: //.
Php Wrapper - Phar & ZipĐể hiểu rõ hơn về trình bao bọc luồng, hãy xem xét sau các dòng sau:
Sử dụng trình bao bọc, bạn có thể gọi cùng một chức năng (File_Get_Contents) để tìm nạp hình ảnh từ vị trí từ xa hoặc từ một thư mục được lưu trữ trên đĩa cục bộ. Cụ thể, Phar: // Wrapper được sử dụng để tương tác với các tệp Phar. Nó cho phép các hoạt động đọc/ghi khác nhau được thực hiện trên một kho lưu trữ và nó chỉ có thể hoạt động trên các tệp cục bộ. Khai thác thường yêu cầu chức năng tải lên tệp phải có trong ứng dụng. Nó có thể là một chủ đề phức tạp, và quá phức tạp cho bài đăng trên blog ngắn này. Nếu bạn muốn đọc thêm về khai thác tuần tự hóa Phar, chúng tôi khuyên bạn nên đọc bài thuyết trình Blackhat này từ năm 2018 bởi Sam Thomas:
Php Wrapper - mong đợiKỳ vọng: // Wrapper không được bật theo mặc định vì nó là một phần mở rộng từ gói PECL (xem xét nó được cài đặt ngay bây giờ). Cú pháp mà nó chấp nhận là: Hãy xem xét đoạn trích nhỏ này chạy trên phần phụ trợ:
Bây giờ chúng ta có thể chạy các lệnh Linux (mong đợi hợp lệ) khá nhiều thông qua lỗ hổng này. Ví dụ: URL này sẽ trả về người dùng đang chạy:
Nếu chúng tôi muốn sử dụng điều này trong bối cảnh LFI, URL sẽ trông tương tự như:
Phiên PHPMột phương pháp khác để khai thác LFI, trong PHP là tệp phiên PHP. Khi một ứng dụng không dễ bị tổn thương sau:
Nhưng phpsessid có mặt, ví dụ: Thường thì cookie được đặt thành cùng một giá trị trên hệ điều hành hệ điều hành, ví dụ: Khi nội dung của $ _Session có thể được giả mạo, đôi khi điều đó có nghĩa là một tệp có nội dung có thể kiểm soát có thể bị lạm dụng để tạo shell. Chúng tôi sẽ bao gồm điều này trong thời gian ngắn Sử dụng LFI Vulnablity so với tệp phiên, chúng ta thường thấy một cái gì đó giống như dữ liệu được tuần tự hóa sau php://filter/convert.base64-encode/resource=index.php 0Điều này thường tốt cho việc liệt kê và tùy thuộc vào mã ứng dụng, có thể khai thác thêm thông qua các cuộc tấn công dựa trên/tuần tự hóa. RCE bằng cách sử dụng các giá trị phiên PHPTừ ví dụ cuối cùng, tệp phiên có thể được sử dụng để thực hiện mã từ xa (RCE). Nếu ví dụ ở dạng đăng nhập nơi các tham số tên người dùng và mật khẩu được truyền. Đôi khi chúng ta có thể thử thủ thuật sau để gây ô nhiễm tệp phiên với đầu ra từ một lệnh như vậy: php://filter/convert.base64-encode/resource=index.php 1Điều này sẽ dẫn đến một giá trị tùy ý được đặt trong Chỉ thị Cookie Set (và do đó trong tệp phiên): php://filter/convert.base64-encode/resource=index.php 2Tệp phiên sau đó có thể chứa nội dung của LFI đi kèm. CẢNH BÁO: Bạn sẽ cần xóa cookie khỏi mọi yêu cầu tiếp theo, nếu không bạn có nguy cơ ghi đè lại tệp phiên với cookie hợp pháp!: You would need to remove the cookie from any subsequent requests, otherwise you risk overwritting the SESSION file again with the legitimate cookie! Một ví dụ phiên PHP khác từ HackTheBox (HTB) không được giám sátSử dụng hộp HTB không được giám sát, một lần nữa chúng ta có thể chứng minh lỗ hổng này php://filter/convert.base64-encode/resource=index.php 3Output: php://filter/convert.base64-encode/resource=index.php 4Có nghĩa là nếu chúng ta có thể mã hóa các lệnh vào tiêu đề cookie, chúng ta sẽ thấy đầu ra trong nguồn trang: php://filter/convert.base64-encode/resource=index.php 5trong đó nội dung của cookie.txt đã sửa đổi: php://filter/convert.base64-encode/resource=index.php 6Phản hồi phải tương tự như: php://filter/convert.base64-encode/resource=index.php 7Thành công này, có nghĩa là nó nên tầm thường để sinh ra một vỏ ngược! Chúng tôi để lại điều này như một bài tập cho người đọc. Hoặc đơn giản là đọc các hướng dẫn công khai HTB đã được xuất bản trên Internet. Chia sẻ: Bộ lọc PHP Chuyển đổi tài nguyên mã hóa Base64 là gì?m = php: //filter/convert.base64-encode/resource=index. Điều này buộc PHP đến Base64 mã hóa tệp trước khi nó được sử dụng trong câu lệnh yêu cầu. Từ thời điểm này, vấn đề sau đó giải mã chuỗi Base64 để có được mã nguồn cho các tệp PHP. Đơn giản nhưng hiệu quả ..forces PHP to base64 encode the file before it is used in the require statement. From this point its a matter of then decoding the base64 string to obtain the source code for the PHP files. Simple yet effective..
Môi trường LFI và RFI là gì?Bao gồm tệp từ xa (RFI) là một loại lỗ hổng thường thấy nhất trên các cổng web chạy PHP phù hợp có trên web và bao gồm tệp cục bộ (LFI) tương tự như RFI, sự khác biệt duy nhất là trong LFI, kẻ tấn công đã được Tải lên các loại kịch bản độc hại.
Lỗ hổng LFI là gì?Bao gồm tệp từ xa (RFI) và bao gồm tệp cục bộ (LFI) là các lỗ hổng thường được tìm thấy trong các ứng dụng web được viết kém.Các lỗ hổng này xảy ra khi một ứng dụng web cho phép người dùng gửi đầu vào vào các tệp hoặc tải lên các tệp lên máy chủ.vulnerabilities that are often found in poorly-written web applications. These vulnerabilities occur when a web application allows the user to submit input into files or upload files to the server.
Ví dụ LFI là gì?LFI xảy ra khi một ứng dụng bao gồm một tệp dưới dạng đầu vào của người dùng mà không xác thực đúng.Điều này cho phép kẻ tấn công bao gồm các tệp độc hại bằng cách thao tác đầu vào.Dưới đây là một ví dụ về mã PHP dễ bị tổn thương có thể dẫn đến LFI: https://example.com/?page=filename.php.https://example.com/?page=filename.php. |