PHP та CGI
Випадки досвіду розробки різних WEB проектів. Цікаві факти, статті, враження. Програмування та все про нього у сфері WEB.
PHP та CGI. Обхід обмежень безпеки

Загалом мало чи багато хто знає, що при підключенні php до апачу через cgi є можливість конфігурувати чи не кожен скрипт окремо. А якщо конкретно, то для кожної папки з php скриптами може бути створений свій файл php.ini зі своїми налаштуваннями, які перезапишуть глобальні налаштування.
Сьогодні мені подумалося, що цю фішку можна використовувати з корисливою метою. Наприклад, у php є кілька різних опцій налаштувань, таких як сейфмод або опенбейсдир… Догадуєтесь до чого я хилю? Дада, їх у зв'язці php + cgi можна легко оминути!
Обходимо сейфмод
За допомогою створення свого php.ini можна обійти купу налаштувань безпеки, таких як:
- safe_mode
- open_basedir
- disable_functions
- memory_limit
- max_execution_time
І якщо за допомогою останніх двох можна трохи покращити умови дешевого хостингу, то за допомогою перших трьох можна обійти обмеження безпеки і можливо зламати весь сервер.
; Обхід сейфмоду: safe_mode = Off
; Обхід опен бесдира open_basedir =
; Включаємо усі функції disable_functions=
; Відключаємо обмеження споживання пам'яті memory_limit = -1
; І прибираємо обмеження вермені виконання кожного скрипту max_execution_time = 0
Впринципі можна вписати будь-які інші налаштування, які вам захочеться, тобто повністю конфігурувати PHP під ваші потреби)
UPD: до речі, крім зазначеного способу використання цієї вразливості, її можна використовувати при завантаженні файлів і при вдалому збігу обставин це може призвести до виконання коду, див. мою статтю: Безпечне завантаження файлів на сервер
Взагалі ця фіча (або баг, я навіть не знаю як правильно назвати) дуже небезпечна на хостингах, де захист користувачів один від одного і всього сервера ґрунтується на сейфмоді та опенбейсдирі (дада, і такі бувають).
І найсмішніше те, що єдиний (принаймні мені відомий) спосіб захиститися від цього – це не використовувати PHP у зв'язці з CGI. Тобто php слід підключати лише через mod_php. UPD: Рішення знайдено: Вирішуємо проблему CGI та PHP.ini!
PHP та CGI. Обхід обмежень безпеки
Дивіться також
Опис можливих даних, що передаються від користувача в PHP скрипт. Загальна інформація щодо правильної фільтрації параметрів.
«Не довіряйте своїм користувачам. Вони можуть зашкодити Вам.» Дейв Чайлд Дейв Чайлд (Dave Child) стоїть за нещодавно перейменованим Added Bytes.
Правильне проведення атаки php including при додаванні слішів до кінця. Альтернатива нулл байту. Чому не працюють слеши при php інклудингу.
Крім програмування, я захоплююсь дослідженнями в галузі безпеки веб-додатків. Займаюся аудитом на замовлення і таке інше. І ось на.
Відключення php.ini користувача при cgi або fastcgi. Усунення вразливості mod_cgi. Способи підключення php.ini
Згадуємо статтю PHP та CGI. Обхід обмежень безпеки. Основна думка: Загалом мало чи багато хто знає, що під час підключення.
Реалізація безпечного завантаження файлів на сервер. Опис можливих способів захисту завантаження файлів.
«…або чому фільтрація почорному списку це погано? Уявімо звичайне завантаження файлів за допомогою php. Я думаю все це.
Хм, цікава можливість налаштувати папку заливки файлів на сайтах з php+cgi) Якщо заливати php.ini, може проканати де?
Справа в тому, що конфігурується тільки папка в якій цей php.ini і лежить. Тобто треба зуміти залити і php.ini і який-небудь php скрипт, до якого і будуть застосовуватися налаштування, взагалі особливого сенсу в цьому немає (тоді вже простіше відразу шелл залити).
АЛЕ! Ти підштовхнув мене до цікавої думки. Дуже часто в папках куди завантажуються файли є індексний файл (ну типу, щоб не було видно лістингу дір), і якщо він раптом називається index.php (тобто з розширенням php), то якщо вийде в цю папку залити свій php.ini то…
Мабуть, я напишу ще одну статейку на цю тему.
php_value auto_prepend_file prepend.php і немає проблем :D
Я про це саме спеціально окремим розділом написав тут ;)
А так проблема в тому, що в директорії куди ллється php.ini повинен бути вже хоча б один php скрипт.
Я звичайний веб-розробник. Пишу тут про те, що мені цікаво, із чим я змушений стикатися у сфері WEB, свої думки, міркування, розміщую власні статті.
Не забувайте підписуватись: