文件包含漏洞介绍

本文详细介绍了PHP中的文件包含漏洞,包括本地和远程包含的区别,以及它们可能带来的安全风险,如读取文件、写文件和命令执行。讨论了PHP的四个文件包含函数,并列举了绕过方法和防御措施,强调了对包含参数的严格过滤和路径限制的重要性。
摘要由CSDN通过智能技术生成

包含操作,在大多数Web语言中都会提供的功能,但PHP对于包含文件所提供的功能太强大,太灵活,所以包含漏洞经常出现在PHP语言中,这也就导致了出现了一个错误现状,很多初学者认为包含漏洞只出现PHP语言之中,殊不知在其他语言中可能出现包含漏洞。这也应了一句老话:功能越强大,漏洞就越多。

包含原理:程序员开发的时候,未对包含的文件进行严格过滤,攻击者可构建自己的图片木马文件当做PHP执行。(都会被当做PHP执行)

PHP的四个文件包含函数:

include()     文件被多次包含时,会抛出错误,但不影响程序向下执行

include_once()   文件只能被包含一次,如果多次包含,则会抛出错误,但不影响程序的向                                 下执行。

require()   文件被多次包含时,会抛出致命性的错误,程序将终止向下执行。

require_once()   文件只能被包含一次,如果多次包含,则会抛出致命错误,程序将终止向                                下执行。

本地包含漏洞和远程包含漏洞的区别:

本地包含(LFI)攻击者上传的木马图片,是在同一台服务器上。只需找到上传点,把图片木马上传到对方服务器,通过本地包含漏洞直接包含木马脚本木马就可以运行webshell。

远程包含(RFI需要服务器,PHP关闭魔术符号,开启远程功能才行。

包含漏洞能做什么?

1.读文件;敏感信息泄露:有特殊字符一定要转化为base64编码

2.写文件;命令执行;注意:只有在allow _url_include为on的时候才可以使用,在C:\php\php-                     5.2.14-Win32下找到php.ini打开,查找disable_functions =proc-                                               open,oppen,exec,system…….删掉system重启apache

                http://192.168.1.55:8080/dvwa/vulnerabilities/fi/?page=php://input,并且提交post数                  据包为:<?php system('net user');?>

3.获取webshell

绕过方法

1.不同协议绕过:http、https、file 协议、PHP 协议、ssh2

2.阶段包含(%00)这种方法只适用于 magic_quotes_gpc=off 的时候,PHP 老版本中也存在 其他漏洞

3.包含日志文件:\log\.access.log

防御方法

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

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

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

4.尽量不要使用动态包含,可以在需要包含的页面固定写好,如:include('head.php')。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值