php本地文件包含漏洞,本地文件包含漏洞详解---LFI

本文详细介绍了PHP的本地文件包含(LFI)漏洞,包括其概念、利用方式,如通过包含环境变量文件、web服务器日志文件、FTP日志文件等实现代码执行。此外,还探讨了结合phpinfo找到上传的临时文件路径进行利用的技巧,以及在实际利用中需要注意的问题。
摘要由CSDN通过智能技术生成

1 概述

文件包含(Local File Include)是php脚本的一大特色,程序员们为了开发的方便,常常会用到包含。比如把一系列功能函数都写进fuction.php中,之后当某个文件需要调用的时候就直接在文件头中写上一句<?php include fuction.php?>就可以调用内部定义的函数。

本地包含漏洞是PHP中一种典型的高危漏洞。由于程序员未对用户可控的变量进行输入检查,导致用户可以控制被包含的文件,成功利用时可以使web server会将特定文件当成php执行,从而导致用户可获取一定的服务器权限。

2 利用LFI执行PHP代码

2.1本地包含漏洞实例展示:

演示脚本文件test.php代码如下:

if( !ini_get('display_errors') ) {

ini_set('display_errors', 'On');

}

error_reporting(E_ALL);

$f = $_GET["file"];

if ($f){

require "".$f.".php";

}else{

print("No File Included");

}

?>

在正常使用过程中,可能是这样子:http://www.xxx.com/test.php?f=fuction,这样子 就包含了function这个文件,但是由于file参数没有过滤,我们可以自己提交参数内容,这个时候就导致了包含漏洞的出现。比如提交 :

http://www.xxx.com/index.php?f=shell.txt%00,shell.txt的内容为我们的webshell,由于前面的是 index.php,所以会把shell.txt当成是木马执行。

在虚拟机搭建实例环境,

直接访问,不赋值file参数:

0818b9ca8b590ca3270a3433284dd417.png

图1.不提交任何参数时的test.php

赋值file参数为/etc/passwd

0818b9ca8b590ca3270a3433284dd417.png

图2.包含/etc/passwd文件

成功包含。

2.2自己上传文件并实现包含

这里主要是结合服务器一些文件上传点,比如头像上传、相册照片上传等,而后结合php的%00截断特性成功利用包含漏洞(php5.4之后已修复截断特性,本例中不再结合%00,其他请自己测试)。

假设我们可以自定义上传头像,头像文件在网站根目录的photo下,具体目录可以传上去之后查看图片Url信息。

首先,我们只做包含恶意代码的图片文件:

在windows下利用copy命令,shell.php为一句话木马(这里为了方便演示,我们用phpinfo

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值