php防御文件包含,文件包含漏洞的利用及防御方案

原标题:文件包含漏洞的利用及防御方案

01

漏洞介绍

文件包含漏洞是代码注入的一种。其原理就是注入一段用户能控制的脚本或代码,并让服务器端执行,代码注入的典型代表就是文件包含File inclusion。文件包含可能会出现在jsp、php、asp等语言中。服务器通过函数去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的。常见的文件包含的函数如下:

PHP:include() 、include_once( )、require( )、require_once( )、fopen( )、readfile( )

JSP/Servlet:ava.io.file( )、java.io.filereader( )

ASP:include file、include virtual

02

文件包含漏洞的分类

文件包含可以分为本地文件包含和远程文件包含两种。顾名思义,本地文件包含就是通过URL将服务器本地的其他文件include进来。远程文件包含就是将远程服务器的文件include进来。最主要的是,包含进来的文件都以当前脚本文件解析,比如,当前测试系统是Apache加php环境,那么被include进来的文件,不管是什么类型,比如说图片,文本文档,这些文件被包含以后,都会被当做php脚本来解析。

03

文件包含漏洞的危害

①执行任意代码

②读取文件源码或敏感信息。

③包含恶意文件控制网站,甚至控制服务器。

04

文件包含漏洞漏洞复现

利用DVWA靶场进行CSRF漏洞演练:

1. Low Security Level

查看源码:

0518e2603bc2b4135e0b0e2b3dc6d7c6.png

服务器获取 page 的值,没有进行任何过滤。因此直接读取C:\Users\dell\Desktop\1.txt文件。

de09daec01a35fdd54cdff272d4305a7.png

若文件中存在php代码,<?php phpinfo(); ?>,则会执行php代码并返回代码执行的结果。

e41f06d424362257fbeffcfcd89817d3.png

还可以进行远程文件包含,如下:

0c1c4fd2e6ba4ce58bc5e43bf6e773e8.png

2. Medium Security Level

查看源码:

5f96445620631fae687fba6d346f0c7b.png

Medium等级的代码将'http://', 'https://', '../', '..\'都替换为空,防御了简单的远程和本地包含。但是我们在后面加绝对路径一样可以执行。

d157f1c5e6e2fb2f8578c116512a19b0.png

并且,源码中使用的是 str_replace() 函数,可以使用重写的方式绕过。

htthttp://p:// -> http://

..././ -> ../

2b6e4165f45eecda8d4ad2227352f514.png

3. High Security Level

查看源码:

bb36ca542f4f85b2be2bc09a098bab6f.png

High等级的代码限制了page参数必须以file开头,或者page参数为include.php。

如果要以file开头,我们可以采用file协议来读取,即file:///C:/Users/dell/Desktop/1.txt

8d3195dce8fdd6731b2004997f4573c3.png

05

防御方案

①严格判断包含中的参数是否外部可控,因为文件包含漏洞利用成功与否的关键点就在于被包含的文件是否可被外部控制;

②路径限制:限制被包含的文件只能在某一文件内,一定要禁止目录跳转字符,如:“../”;

③包含文件验证:验证被包含的文件是否是白名单中的一员;

④尽量不要使用动态包含,可以在需要包含的页面固定写好,如:include('head.php')。返回搜狐,查看更多

责任编辑:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值