浅析包含漏洞


什么是文件包含(漏洞)

服务器在执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建所有网页引用的标准页眉或菜单文件。当页眉需要更新时,只需要更新一个包含文件即可。

文件包含漏洞:即File Include,是指当服务器开启allow_url_include选项时,就可以通过PHP某些特性函数如:include()、require()、include_once()、requir_once()利用URL去动态包含文件,此时如果没有对文件来源进行严格审核,就会导致任意文件读取或任意目录执行。文件包含漏洞分为本地文件包含漏洞和远程文件包含漏洞,远程文件包含漏洞是因为开启了PHP的allow_url_fopen选项,选项开启后,服务器将语序包含一个远程文件,服务器通过PHP特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而包含了一个恶意文件,而我们可以构造出这个恶意文件来达到自己的目的。

本地文件包含LFI(Local File Include):

当被包含的文件在服务器本地时,就形成本地文件包含

远程文件包含RFI(Remote File Include):

当被包含的文件在第三方服务器时,叫做远程文件包含

常见的文件包含函数

include(): 执行include时才包含文件,找不到被包含文件时只会产生警告

require(): 只要程序一运行就包含文件,找不到被包含的文件时会产生致命错误,并停止运行脚本

include_once()和require_once(): 若文件中代码被包含则不会再次包含。

漏洞产生原因

文件包含函数加载的参数没有经过过滤或者严格定义,可以被用户控制,包含其他恶意文件,导致了非预期的代码

  <?php
    $filename  = $_GET['filename'];
    include($filename);
?>

在上面的代码中$_GET['filename']参数开发者没有经过严格过滤,直接带入了include的函数,攻击者可以修改$_GET['filename']的值,执行非预期的操作

DVWA-文件包含

查看DVWA 文件包含漏洞的源代码,可以看出没有进行任何的过滤

<?php
// The page we wish to display
$file = $_GET[ 'page' ];
?>

构造Payload可以轻松的查看到passwd文件

常见的敏感信息路径

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系统

/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 配置文件

下方查看历史文章

【工具分享】AWVS 12 汉化破解版

P3P的那些事

Apache Tomcat文件包含漏洞复现

信息收集

awk对apache日志访问的处理

扫描二维码

获取更多精彩

NowSec

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值