一、文件包含漏洞原理解析
因为PHP语言所提供的文件包含功能包含功能太强大,太灵活,所以大部分文件包含的漏洞都出现在PHP的程序中
当被包含的文件在服务器本地时,就形成的本地文件包含漏洞
当包含的文件在远程服务器时,就形成远程文件包含漏洞
文件包含这个点在php中涉及是个函数
require()
require_once()
include()
include_once()
其设计初衷是方便程序员通过调用其他页面的函数所以include这个文件。就可以将这个文件解析到b页面
二、文件包漏洞中常用的伪协议
php://输入输出流
PHP提供了一些杂项输出流,允许访问PHP的输入输出流。标准输入输出和错误描述,内存中。磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。
php://filter(本都磁盘文件进行读取)
用法:>filter=php://filter/cinvert.base64-encode/recource=xxx.php
条件:只是读取开始allow_url_fopen,不需要开始allow_url_include;
phar://伪协议
这个就是php解压缩报的一个函数,不管后缀是什么,都会当做压缩包来解压,用法:?file=phar://压缩包/内部文件 phar://xxx.png/shell.php 注意 PHP>=5.3.0压缩包需要是zip协议压缩,rar不行,将木马文件压缩后,改为其他任意格式的文件都可以正常使用。步骤:写一个一句话木马shell。php,然后用zip协议解压缩为shell.zip。然后将后缀改为png等其他格式
找个靶场练一下
这里我们直接看看他tips访问include.php
关键点看源码正则匹配到上面关键字(preg_match(‘/http|test1|ftp|input|%00/i’, f i l e ) ∣ ∣ s t r s t r ( file) || strstr( file)∣∣strstr(file,“…”) !== FALSE || strlen($file)>=70) 其中一条都返回error
而且我们发现file参数可控但是有一点就是无论后面传参后面都会给你拼接一个.php
直接访问新资产upload.php显然想让我们先传马
尝试尝试上传一个一句话木马,思路:
1,写一个一句话木马1.php
2 把一句话木马压缩成1.zip
3.把压缩包后缀改名为1.jpg发现上传成功。
再结合上面介绍的phar://伪协议进行解压木马
木马成功被解析链接放到蚁剑中成功过getshell(ps:注意因为链接后面会给你强制拼接一个.php后缀所以后面就不用加后缀了)
总结
phar://伪协议
这个就是php解压缩报的一个函数,不管后缀是什么,都会当做压缩包来解压,用法:?file=phar://压缩包/内部文件 phar://xxx.png/shell.php 注意 PHP>=5.3.0压缩包需要是zip协议压缩,rar不行,将木马文件压缩后,改为其他任意格式的文件都可以正常使用。步骤:写一个一句话木马shell。php,然后用zip协议解压缩为shell.zip。然后将后缀改为png等其他格式
来源地址:https://blog.csdn.net/abc18964814133/article/details/124664538