【文件包含】任意文件包含的理解

谈谈任意文件包含的理解

1.漏洞描述

  • 攻击者可以利用任意文件包含漏洞,读取文件,执行代码,对服务器造成危害。
  • 程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成“封装”。在使用某个功能的时候,直接调用此文件,无需再次编写,提高代码重用性,减少代码量。这种调用文件的过程通常称为包含。
  • 程序开发人员都希望代码更加灵活,所以会把被包含的文件的路径设置为变量,来进行动态调用(包含),但正是由于这种灵活性,如果被包含文件的路径客户端可控,造成任意文件包含漏洞。
  • 几乎所有的脚本都会提供文件包含的功能,文件包含漏洞在PHP 的Web 应用中居多,在JSP/ASP/ASP.NET 程序中比较少。

2.漏洞原理

        PHP 文件包含是程序设计的基础功能之一,能够减少代码量,提高开发效率。但是使用文件包含功能时,实现了动态包含,就有产生文件包含漏洞的风险。如果实现动态包含的参数,Web 应用没有进行严格的校验,浏览器客户端用户可以影响控制被包含文件的路径,就会产生任意文件包含漏洞。

  • 动态包含
  • 被包含文件路径可控

特点:

  • 读取文件
  • 执行代码

3.漏洞场景

  • 类似于metinfo_5.0.4 实现了动态包含,有存在文件包含漏洞的风险。
  • 类似于文件读取的URL,可能存在文件包含。

4.漏洞评级

⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐        高危

5.漏洞危害

攻击者利用文件包含漏洞,可以:

  • 读取文件
  • 执行PHP 代码
  • 直接获取网站后门
  • 控制网站
  • 控制服务器

6.漏洞验证

?filepath=./a.jpg

7.漏洞利用

  • 包含图片木马

        菜刀直接链接。

  • 读取敏感文件

利用文件包含漏洞,也可以读取敏感文件。
前提条件:
目标文件存在(已知目标文件路径);
具有文件可读权限。

  • 读取 PHP 源码

利用php://fileter 读取。

  • 执行 PHP 命令

利用条件:

  • 利用 php://input 执行PHP 命令;
  • 远程文件包含开启。
  • 包含图片马写 shell

条件:

  • 确定文件包含漏洞存在;
  • 菜刀不能直接连接。

写Shell:

  • 包含日志

Apache 日志:

  • 访问日志
  • 错误日志

Nginx 日志:

  • 访问日志
  • 错误日志

SSH 日志
邮件日志

8.防御方案

  • 尽量少的使用动态包含。
  • 严格过滤被包含文件的路径。
  • 将参数 allow_url_include 设置为 Off。
  • 使用参数 open_basedir 限定文件访问范围。
  • open_basedir = c:\phpstudy_2016\www\

9.典型案例

metinfo_5.0.4_file-include

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值