简单记录一些文件包含漏洞的常用方法

产生原因:

文件包含漏洞的产生原因是在通过引入文件时,由于传入的文件名没有经过合理的校验,或者校检被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

常见的导致文件包含的函数如下:
 
PHP: include(), include_once(), require(), require_once(), fopen(), readfile() ...
当使用前4个函数包含一个新的文件时,该文件将作为 php 代码执行,php 内核不会在意该被包含的文件是什么类型。

本地文件包含(LFI):

当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。我们可以通过该漏洞读取服务器文件,并执行包含php代码的文件。以DVWA为例:

我们成功读取了php探针文件。而本地文件包含在遇到过滤的情况下也需要一些绕过方法,比如%00截断,点号截断等。

%00截断:
`/etc/passwd%00`
(需要 magic_quotes_gpc=off,PHP小于5.3.4有效)

%00截断目录遍历:
`/var/www/%00`
(需要 magic_quotes_gpc=off,unix文件系统,比如FreeBSD,OpenBSD,NetBSD,Solaris)

路径长度截断:
`/etc/passwd/././././././.[…]/./././././.` 
(php版本小于5.2.8(?)可以成功,linux需要文件名长于4096,windows需要长于256)

点号截断: 
`/boot.ini/………[…]…………`
(php版本小于5.2.8(?)可以成功,只适用windows,点号需要长于256)

修复方案:

限制用户访问区域,并校验和过滤用户传入的参数。

远程文件包含(RFI):

这里注意一下,当我们远程服务器上的文件为xx.php与xx.txt时,存在远程文件包含漏洞的服务器在执行这两个文件时结果是不同的,以DVWA为例:

这是xx.txt文件执行phpinfo后所显示的ip。

这是xx.php执行phpinfo后的ip地址。

这说明远程文件包含漏洞所包含的文件为非php后缀才是正确的,因为当后缀名为php结尾的文件被执行时实在攻击者本机上执行的,而非php后缀的文件实在受害机上执行的。

PHP的部分常用伪协议:

* file 协议读取本地文件:`file=file://etc/passwd`  
(需要allow_url_fopen=On并且 allow_url_include=On)
 
* 利用php流input:`?file=php://input`
  (需要allow_url_include=On,详细→http://php.net/manual/en/wrappers.php.php)
   
* 利用php流filter:`?file=php://filter/convert.base64-encode/resource=index.php`
  (同上)
   
* 利用data URIs:`?file=data://text/plain;base64,SSBsb3ZlIFBIUAo=%00`
  (需要allow_url_include=On)

当网站存在本地文件包含漏洞和上传漏洞时我们可以配合两个漏洞GETSHELL。

任重而道远,共勉!

PHP:文件包含漏洞的更多相关文章

  1. PHP文件包含漏洞攻防实战(allow_url_fopen、open_basedir)

    摘要 PHP是一种非常流行的Web开发语言,互联网上的许多Web应用都是利用PHP开发的.而在利用PHP开发的Web应用中,PHP文件包含漏洞是一种常见的漏洞.利用PHP文件包含漏洞入侵网站也是主流的 ...

  2. phpmyadmin任意文件包含漏洞分析(含演示)

    0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: ...

  3. PHP文件包含漏洞剖析

    一. 什么才是”远程文件包含漏洞”?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. ...

  4. Nagios Looking Glass 本地文件包含漏洞

    漏洞名称: Nagios Looking Glass 本地文件包含漏洞 CNNVD编号: CNNVD-201310-682 发布时间: 2013-10-31 更新时间: 2013-10-31 危害等级 ...

  5. WP e-Commerce WordPress Payment Gateways Caller插件本地文件包含漏洞

    漏洞名称: WP e-Commerce WordPress Payment Gateways Caller插件本地文件包含漏洞 CNNVD编号: CNNVD-201310-642 发布时间: 2013 ...

  6. 百度杯”CTF比赛 2017 二月场 没错!就是文件包含漏洞。

    题目源码: 文件包含漏洞的话,看一下 你么可以使用php://input 伪协议,执行代码(参考了大佬WP)这里使用了POSTMAN, 目录下还有一个dle345aae.php文件,呢么用cat命令打 ...

  7. phpMyAdmin 4.8.x 本地文件包含漏洞利用

    phpMyAdmin 4.8.x 本地文件包含漏洞利用 今天ChaMd5安全团队公开了一个phpMyAdmin最新版中的本地文件包含漏洞:phpmyadmin4.8.1后台getshell.该漏洞利用 ...

  8. php安全开发(1)文件包含漏洞

    开发过程总结的漏洞: 一,,如何造成包含漏洞:在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶 ...

  9. 易酷 cms2.5 本地文件包含漏洞 getshell

    易酷 cms2.5  本地文件包含漏洞 getshell 首先下载源码安装(http://127.0.0.1/test/ekucms2.5/install.php) 安装成功直接进行复现吧 本地包含一 ...

  10. Kali学习笔记31:目录遍历漏洞、文件包含漏洞

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 目录遍历漏洞: 应用程序如果有操作文件的功能,限制不严 ...

随机推荐

  1. 洛谷T90444 密码 题解

    [问题描述] 假发通过了不懈的努力,得到了将军家门锁的密码(一串小写英文字母).但是假发被十四和猩猩他们盯上了,所以假发需要把密码传递出去.因为假发不想十四他们发现几松门前贴的小纸条就是将军家的密码, ...

  2. Mysql 如何实现全文检索,关键词跑分

    一.前言 今天一个同事问我,如何使用 Mysql 实现类似于 ElasticSearch 的全文检索功能,并且对检索关键词跑分?我当时脑子里立马产生了疑问?为啥不直接用es呢?简单好用还贼快.但是听他 ...

  3. url_for函数——快速寻找url

    我们已经知道,知道了url就可以找到对应的视图函数,那么现在问题来了,如果我们知道了视图函数,要怎么找到url呢?这时候我们就需要url_for函数了. # coding: utf-8from fla ...

  4. .net core学习笔记,组件篇:服务的注册与发现(Consul)初篇

    1.什么是服务注册中心? 在学习服务注册与发现时,我们要先搞明白到底什么是服务注册与发现. 在这里我举一个生活中非常普遍的例子——网购来简单说明,网购在我们日常生活中已经是非常普遍了,其实网购中的(商 ...

  5. Unity 深度冲突的解决方法

    Dillon|2014-02-12 10:00|5899次浏览|Unity(280)0 3d游戏中当2个片元距离近裁减平面 w  落在同一个区间的时候,他们的深度是相等的. 最终你所看到的结果,就是下 ...

  6. HDU - 4548-美素数 (欧拉素数筛+打表)

    小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识.  问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为"美素数&quo ...

  7. DIY申请达姆施塔特工业大学计算机专业(Informatik)硕士(Master)【附个人简历和动机信】

    1.个人概况 双非院校本科毕业两年,已来德国一年. APS绩点2.5,均分80.17. 2020.6月考出5443德福成绩,7月中下旬递交材料,9月初获得Zulassung(录取) PS:后来考出54 ...

  8. C# 发送邮件通知

    web.config <!-- 配置发邮件:邮件访问登录地址--> <add key="HttpsUrl" value="http://localhos ...

  9. Activiti7 任务人员动态分配(理论)

    之前一直用的流程模型都是,固态的,写死的 由于固定分配方式,任务只能一步一步执行,执行到每一个任务将按照bpmn的配置去分配任务负责人.这显然在实际开发中是不可能的 所以我们需要动态分配人员 表达式分 ...

  10. 非旋Treap——fhq treap

    https://www.luogu.org/problemnew/show/P3369 知识点:1.拆分split,合并merge 2.split,merge要点:通过传址调用来简便代码 3.记得ro ...