phar:// deserialization
Підказка щодо багів у винагороду: зареєструйтеся на Intigriti, преміальній платформі для пошуку багів, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні, і почніть заробляти винагороди до $100,000!
Файли Phar (PHP Archive) містять метадані у серіалізованому форматі, тому, при розборі, ці метадані десеріалізуються, і ви можете спробувати використати уразливість десеріалізації всередині коду PHP.
Найкраще в тому, що ця характеристика полягає в тому, що ця десеріалізація відбудеться навіть при використанні функцій PHP, які не виконують PHP-код, таких як file_get_contents(), fopen(), file() або file_exists(), md5_file(), filemtime() або filesize().
Тож уявіть ситуацію, де ви можете зробити PHP-веб-сайт отримати розмір довільного файлу за допомогою протоколу phar://
, і всередині коду ви знаходите клас, схожий на наступний:
Ви можете створити файл phar, який при завантаженні буде зловживати цим класом для виконання довільних команд таким чином:
Зверніть увагу, як магічні байти JPG (\xff\xd8\xff
) додаються на початку файлу phar для обхіду можливих обмежень на завантаження файлів.
Скомпілюйте файл test.phar
за допомогою:
І виконати команду whoami
, зловживаючи вразливим кодом за допомогою:
Посилання
Підказка з баг-баунті: підпишіться на Intigriti, преміальну платформу для баг-баунті, створену хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні, і почніть заробляти винагороди до $100,000!
Last updated