安全矩阵

 找回密码
 立即注册
搜索
查看: 523|回复: 0

如何利用pear扩展实现rce

[复制链接]

36

主题

36

帖子

120

积分

注册会员

Rank: 2

积分
120
发表于 2024-6-12 19:25:36 | 显示全部楼层 |阅读模式

当遇到一个LFI漏洞时,如果想要进一步利用实现rce,那么就要结合其它的文件。网上看到了可以通过pearcmd.php文件来实现rce。本文就是记录一下这种方法。

利用条件

1)服务器上安装pear,也就是存在pearcmd.php。同时知道pearcmd.php的文件路径

2)web环境下在php.ini中register_argc_argv设置为On

3)存在文件包含,可以包含php文件并且没有open_basedir的限制

前置知识pearcmd.php简介

pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类库

如何安装安装pear

PHP版本在7.3及以前,pecl/pear是默认安装的

在7.4以后,需要我们在编译的时候指定--with-pear才会安装

网上说,在dokcer任意的版本镜像中,pcel/pear都会被默认安装,安装的路径在/usr/local/lib/php。(然而总会遇到特殊的情况,没有这个文件的存在)

当没有这个文件存在时,可以尝试使用yum install php-pear去安装。

安装成功以后,执行pear命令可以得到

而pearcmd.php文件所在的位置在/usr/share/pear/pearcmd.php(不同的系统可能位置也不同,一般就是在/usr/local/lib/php/pearcmd.php目录下)

register_argc_argv

register_argc_argv选项通俗的说就是控制是否可以通过$_SERVER[‘argv’]`获得命令行参数。为On则可以通过$_SERVER[‘argv’]获取命令行参数,反之则不可以。

如果存在php.ini的话,默认是Off。如果没有php.ini则默认是On。

如下所示,在cli中不受register_argc_argv参数的影响,在web页面要将该参数设置为On。

利用方式

通过前面一段时间报出来的thinkphp任意文件包含漏洞来进行利用。在靶机可出网的情况下,可以直接拉取外网的脚本,方式如下:

另外 也可以通过将要执行的语句写入一个文件。

然后直接包含该文件

在测试过程中遇到的问题,我使用的php版本为PHP 5.4.16,通过上述命令写入的文件如下:

直接包含发现并不能执行php命令。后来发现是由于php.ini中的short_open_tag选项导致的。将该选项改为On就可这场执行命令。

这里存在一个问题,在不修改此选项的情况下,是否可以写入<?php phpinfo();?>方法来执行命令。

总结

文件包含要找到适合包含的文件才能利用最大化,本文的方式只是一种,各位大佬是否还有其它的方式来达到rce的目标,可以来讨论。

来源:https://www.freebuf.com/





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-27 22:45 , Processed in 0.016126 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表