tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Важлива примітка:
dl
- це функція PHP, яка може бути використана для завантаження розширень PHP. Якщо функція не вимкнена, її можна зловживати для обходу disable_functions
та виконання довільних команд.
Однак, вона має деякі суворі обмеження:
- Функція
dl
повинна бути присутня в середовищі та не вимкнена - Розширення PHP повинно бути скомпільоване з тією ж основною версією (версія API PHP), яку використовує сервер (цю інформацію можна побачити в результатах phpinfo)
- Розширення PHP повинно бути розташоване в каталозі, який визначений директивою
extension_dir
(це можна побачити в результатах phpinfo). Дуже малоймовірно, що зловмисник, який намагається зловживати сервером, матиме доступ на запис до цього каталогу, тому ця вимога, ймовірно, завадить вам зловживати цією технікою).
Якщо ви відповідаєте цим вимогам, продовжуйте читати пост https://antichat.com/threads/70763/ щоб дізнатися, як обійти disable_functions. Ось короткий виклад:
Функція dl використовується для динамічного завантаження розширень PHP під час виконання скрипта. Розширення PHP, зазвичай написані на C/C++, розширюють функціональність PHP. Зловмисник, помітивши, що функція dl
не вимкнена, вирішує створити власне розширення PHP для виконання системних команд.
Кроки, які вживає зловмисник:
- Ідентифікація версії PHP:
- Зловмисник визначає версію PHP за допомогою скрипта (
<?php echo 'PHP Version is '.PHP_VERSION; ?>
).
- Отримання вихідного коду PHP:
- Налаштування локального PHP:
- Розпаковує та встановлює конкретну версію PHP на своєму комп'ютері.
- Створення розширення:
- Вивчає створення розширень PHP та перевіряє вихідний код PHP.
- Зосереджується на дублюванні функціональності функції exec, розташованої в
ext/standard/exec.c
.
Примітки для компіляції власного розширення:
- ZEND_MODULE_API_NO:
ZEND_MODULE_API_NO
уbypass.c
повинен відповідати поточній збірці Zend Extension, яку можна отримати за допомогою:
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
- Модифікація PHP_FUNCTION:
- Для останніх версій PHP (5, 7, 8) може знадобитися коригування
PHP_FUNCTION(bypass_exec)
. Надано фрагмент коду, що детально описує цю модифікацію.
Файли власного розширення:
- bypass.c:
- Реалізує основну функціональність власного розширення.
- php_bypass.h:
- Заголовний файл, що визначає властивості розширення.
- config.m4:
- Використовується
phpize
для налаштування середовища збірки для власного розширення.
Побудова розширення:
- Команди компіляції:
- Використовує
phpize
,./configure
таmake
для компіляції розширення. - Результуючий
bypass.so
потім розташовується в підкаталозі модулів.
- Очищення:
- Виконує
make clean
таphpize --clean
після компіляції.
Завантаження та виконання на хості жертви:
- Сумісність версій:
- Переконується, що версії API PHP збігаються між системами зловмисника та жертви.
- Завантаження розширення:
- Використовує функцію
dl
, обходячи обмеження, використовуючи відносні шляхи або скрипт для автоматизації процесу.
- Виконання скрипта:
- Зловмисник завантажує
bypass.so
та PHP-скрипт на сервер жертви. - Скрипт використовує функцію
dl_local
для динамічного завантаженняbypass.so
, а потім викликаєbypass_exec
з командою, переданою через параметр запитуcmd
.
Виконання команд:
- Тепер зловмисник може виконувати команди, отримуючи доступ до:
http://www.example.com/script.php?cmd=<command>
Цей детальний посібник описує процес створення та розгортання розширення PHP для виконання системних команд, експлуатуючи функцію dl
, яка, в ідеалі, повинна бути вимкнена для запобігання таких порушень безпеки.
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.