<aside> ????
文件包含产生原因
</aside>
1.web应用实现了动态包含:
**<?php
$path = "./inc.php";
include_once("./inc.php");
echo "<h1>This is include_once.php!</h1>";
include_once $path;
?>**
2.动态包含的文件路径参数,客户端可控:
**<?php
$path = $_GET['path'];
include_once("./inc.php");
echo "<h1>This is include once.php!</h1>";
include_once $path;
?>**
<aside> ????
本地文件包含
</aside>
(LIF):当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。
<aside> ????
远程文件包含
</aside>
(RLF):本地文件包含和远程文件包含造成漏洞的原因是一样的
**当php.ini 中的配置选项allow ur fopen和allow url include(默认是关闭的)为ON的话,则包含的文件可以是第三方服务器中的文件,这样就形成了远程文件包含漏洞。**
<aside> ????
PHP中常见的包含文件的函数
</aside>
include | 当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来发生错误时之给出一个警告,继续向下执行 |
---|---|
include once | 功能与lnclude()相同,区别在于当重复调用同一文件时,程序只调用一次 |
require | require()与include()的区别在于require( )执行如果发生错误,函数会输出错误信息 |
require once | 功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次 |
<aside> ????
敏感目录文件
</aside>
Unix/Linux 系统:
/etc/passwd
/usr/local/app/apache2/conf/httpd.conf
//apache2 默认配置文件/usr/local/app/php5/lib/php.ini
// PHP 相关设置/etc/my.cnf
// Mysql 配置文件
Windows 系统:
C:\\windows\\system32\\inetsrv\\MetaBase.xml
// IS 配置文件C:\\windows\\repair\\sam
// 存储 Windows 系统初始安装密码C:\\boot.ini
// 查看系统版本
/etc/passwd 账户信息 /etc/shadow 账户密码文件 /etc/my.cnf mysql配置文件 /root/.ssh/id_rsa ssh-rsa私钥 /etc/redhat-release 系统版本 /root/.bash_history 用户历史命令记录文件 /home/user/.bash_history 特定用户的历史命令记录文件 /root/.mysql_history mysql历史命令记录文件 /var/lib/mlocate/mlocate.db 全文件路径 /proc/net/fib_trie 内网IP /proc/self/environ 环境变量
/proc/1/environ 进程pid为1的 环境变量 /proc/self/loginuid 当前用户uid