如何利用pear扩展实现rce

admin 2024年6月7日09:05:32评论13 views字数 1178阅读3分55秒阅读模式

当遇到一个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命令可以得到

如何利用pear扩展实现rce

而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。

如何利用pear扩展实现rce

利用方式

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

如何利用pear扩展实现rce

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

如何利用pear扩展实现rce

然后直接包含该文件

如何利用pear扩展实现rce

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

如何利用pear扩展实现rce

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

如何利用pear扩展实现rce

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

总结

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

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

原文始发于微信公众号(船山信安):如何利用pear扩展实现rce

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月7日09:05:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何利用pear扩展实现rcehttps://cn-sec.com/archives/2825232.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息