浅谈文件包含漏洞的利用与防御

本文探讨了文件包含漏洞的产生原因,特别是PHP中的文件包含语句,如include和require等。介绍了漏洞特点,包括无视文件扩展名读取和无条件执行PHP代码。接着讨论了漏洞利用方式,如远程包含、关键词过滤绕过和图片木马,以及防御措施,如避免动态包含、严格过滤路径、关闭URL包含和限制文件访问范围。
摘要由CSDN通过智能技术生成

#本篇文章会从文件包含漏洞的原理开始,大概描述这个漏洞的利用和防御#

文件包含漏洞产生的原因。

程序开发人员通常会把可重复使用的函数或者语句写道单个文件中,他们都希望代码更加灵活,所以会把包含文件的路径设置成变量,来进行动态调用,如果被包含文件的路径客户端可控制,就造成了文件包含漏洞。
文件包含漏洞在php的web应用中居多,在jsp/asp/asp.net程序中比较少。

PHP中的文件包含语句。

include():多次包含,包含失败后产生警告并继续运行。
include_once():一次包含,包含失败后产生警告并继续运行。
require():多次包含,包含失败后产生警告并结束运行。
require_once():一次包含,包含失败后产生警告并结束运行。

文件包含是php的基本功能之一,由本地文件包含与远程文件包含之分。

可以通过php.ini中的选项进行配置:

allow_url_fopen = On/Off  # http://|ftp:// 访问远程文件
allow_url_include = On/Off  #require|include 访问本地文件

漏洞特点

1.无视文件扩展名读取文件。
可以直接读取图片,pdf等文件的源代码。
2.无条件解析PHP代码
当读取到被包含文件的源码,如果遇到符合php代码规范的内容,就会无条件执行。这也为图片木马提供了出路。

漏洞利用与防御

毫无防御的源代码

$file =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值