phar:// deserialization
Last updated
Last updated
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Порада для баг-баунті: зареєструйтесь на 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
, зловживаючи вразливим кодом за допомогою:
Bug bounty tip: зареєструйтесь на Intigriti, преміум платформі для винагород за вразливості, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні та почніть заробляти винагороди до $100,000!
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)