文件包含漏洞浅析
来源:互联网 发布:ci 源码质量 thinkphp 编辑:程序博客网 时间:2024/04/29 02:01
正如我一如既往的习惯,进行漏洞测试前先研究下漏洞产生原理。今天我们从理论上研究下文件包含漏洞,大多数web语言都可以使用文件包含操作,其中php提供文件包含操作太强大,太灵活,所以文件包含通常出现在php语言中。这是一个错误的认知,在其它语言中也可能出现文件包含漏洞。
今天我们就php语言为例讲一下。
Php包含
Php提供了四个文件包含的函数,分别是include(),include_once( ),require( )和require_once( )。
Php文件包含分为两种,一种是本地文件包含,一种是远程文件包含。
在以下代码测试中服务器环境为
Php 5.2.14
MySQL 5.1
Apache 2.0.63
1.本地文件包含 Local File Include(LFI)
ArrayUtil.php文件提供了字符串操作函数,代码如下:
<?php function PrintArr ( $arr, $sp=”-->”,$lin=”<br />”){ foreach( )($arr as $key => $value){ echo “$key $sp $value $lin”;}}......?>
Index.php对ArrayUtil.php进行包含,并且使用PrintArr函数,代码如下
include(“ArrayUtil.php”); //对ArrayUtil.php进行包含$arr = array(“张三”,“李四”,“王五”);PrintArr($arr,”==>”);//使用PrintArr函数
index.php执行后结果如图:
接下来看另一个例子,phpinto.txt是一个正常的文本文件,但内容却是符合php语法的
<?php phpinto();?>
在Index.php中包含phpinto.txt,代码如下:
<? phpinclude(“phpinto.txt”);?>
访问index.php,执行结果如图:
接下来将phpinto.txt的后缀改成“jpg”,“rar”,”doc”等都可以正常执行,这证明了无论文件的后缀是什么,只要内容符合php语法,任何扩展名都可以被php解析。
如果不符合php语法会发生什么呢?比如是数据库的配置文件db.Properies。
db.dbName=Myschooldb.username=rootdb.password=rootdb.port=3306
在index.php中包含db.Properies,代码如下:
<?phpInclude(“db.Properies”);?>
执行结果如图:
由此可知,如果不符合php语法则会暴露其源码。
2.远程文件包含 Remote File include (RFI)
如果要使用远程包含功能,首先要确定php远程包含功能选项是否开启(默认关闭),开启需要在php的配置文件里php.ini配置文件中修改,修改后需要重启web容器服务使其生效,选项如下:
allow_url_include=off //把off改为on
下面是远程php文件包含例子:
http://www.2cto.com/根目录下包含php.txt文件,源码如下:
<?phpecho “Hello World”;?>
Index.php的源码如下:
<?phpInclude($_GET[‘page’]);?>
访问
(http://www.xxxser.com/index.php?page=http://www.2cto.com/php.txt)
执行结果如图:
远程包含和本地包含没有区别,只要符合php语法就可以被解析。
基本知识暂时只叙述这些,至于漏洞利用会结合漏洞测试进行讨论,总之文件包含漏洞危害巨大,在某些情况下,我们甚至能够获取管理员的密码信息。
- 文件包含漏洞浅析
- 文件包含漏洞浅析
- 包含文件漏洞详解
- 包含文件漏洞详解
- 文件包含漏洞
- 文件包含漏洞
- 文件包含漏洞详解
- 文件包含漏洞
- 任意文件包含漏洞
- 文件包含漏洞
- 文件包含漏洞
- PHP文件包含漏洞
- 文件包含漏洞示例
- 文件包含漏洞利用
- 文件包含漏洞 TIPS
- php远程文件包含漏洞
- PHP文件包含漏洞利用
- 文件包含漏洞的利用
- 动态加载学习笔记
- elasticsearch-sql5.2.0.0 + centos6.5安装教程
- LSP分片扩展— 虚拟系统mode1
- Executors与ThreadPoolExecutor(阿里发布的 Java开发手册中强制线程池不允许使用 Executors 去创建)
- <<跟着老男孩学linux运维>>第二章总结
- 文件包含漏洞浅析
- c#读取xml
- [codevs2245] 股票趋势 二维线段树
- 数据可视化难在哪里?该如何入门
- MXNet官方文档中文版教程(1):教程(Tutorials)
- git 基础命令02
- AJAX调用C#后台方法(带参数)
- MySQL题目(一)
- 达内课程-求第n个丑数