Сьогодні один перловщик запитав мене, чи не можна в PHP через suEXEC що-небудь і як-небудь запустити. Штудіювання мінлива показало, що ні, ніяк не можна. І це добре, мабуть… Однією діркою менше.
Зате в мануалі по PHP крім функцій exec system, про які я давно знав і начебто їх заборонив у себе на сервері, я знайшов ще функцію popen. Я насторожився, тому що точно пам’ятав — цієї функції я в налаштуваннях PHP не забороняв!
Тут же з мануала був скопійований і запущений приклад. Результат здивував…. Оголошень більшості папок сервера, вміст /etc/passwd, doc_root чужих віртуальних серверів… Все це постало перед моїм поглядом ?
Ось приклади:
Мені це не сподобалося і я поліз в конфіг Апача httpd.conf. У список disabled_functions я дописав popen, перезапустился… Нульовий результат. Спробував викликати функцію exec — викликається.
Шоковий стан…
Таким чином можна зробити?
Багато. Справа в тому, що PHP запускається з правами Апача. А тим часом, Апач має доступ до ВСІХ файлів ВСІХ віртуальних хостів. Така необхідність, інакше він не міг би їх відображати і віддавати клієнтам. Відповідно, їх можна видалити. Цього замало, щоб вважати цю дірку критичною?
Я не знаю, як справи йдуть у великих хостерів, але чомусь мені здається, що у 50% ця дірка є.
Як же все-таки заборонити користувачам віртуального хостингу через PHP робити гидоти, а саме:
A) Читати чужі файли з чужих папок
B) Викликати будь-які системні функції
Пункт A
За першим пунктом все виявилося просто. Не треба включати ніякої Safe Mode, заради бога. Це зло. Це дуже-дуже незручно і погано. Тим більше, є методи простіше.
Віртуальний хост в Апачі створюється директивою . Це природно, що для кожного віртуального хоста ви вказуєте DocumentRoot. Ну так давайте ж зробимо так, щоб скрипти, запущені з під цього віртуального хоста не могли читати файлу нізвідки, крім як з DocumentRoot’а. А ще, давайте зробимо так, щоб сесії для кожного віртуального хоста зберігалися в окремих папках. Це теж логічно, навіщо ж все перемішувати?
Додайте в секцію наступні рядки
php_admin_value open_basedir /home/username/
php_admin_value doc_root /home/username/html/
php_admin_value upload_tmp_dir /home/username/tmp/
php_admin_value session.save_path /home/username/tmp/
mod_php4.c замініть на mod_php5.c в залежності від версії PHP.
У цьому прикладі DocumentRoot цього віртуального хоста:
DocumentRoot “/home/username/html”
Таким чином, перша проблема вирішена. Спробуйте зробити fopen(“/home/anotheruser/html/hacked.txt”,”a”); — не вийде.
Пункт B
Переходимо до другого пункту.
В даному випадку я зробив дві помилки: директиву disable_functions я поставив там, де цього робити не варто; так і список заборонених функцій був ДАЛЕКО неповний.
Не повторюйте мою помилку, не намагайтеся задавати параметр disable_functions в httpd.conf окремо для кожного віртуального хосту. У ВАС НІЧОГО НЕ ВИЙДЕ! Це раніше можна було, напевно… тому що у мене саме так і було, а я про це десь якось прочитав.
disable_functions треба ставити в php.ini. Щоб дізнатися, який php.ini використовується у вас, виконайте в шелле наступну команду:
php -i | grep ini
І з великою ймовірністю ви побачите, де лежить ваш php.ini
У ньому, в районі 199 рядка є щось на кшталт:
; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
disable_functions =
Так ось. Список функцій, які ЖИТТЄВО ВАЖЛИВО НЕОБХІДНО ОБМЕЖИТИ на віртуальному хостингу:
disable_functions = “popen,dl,set_time_limit,passthru,system,exec,proc_open,shell_exec,proc_close”
Це мінімум. Я не впевнений, що це все. Я з 90% ймовірністю можу увтерждать, що ні один системний виклик на сервері не пройде. А ось яку-небудь гидоту напевно можна зробити.
![[:uk-ua]AT&T використовує технологію відеоігор для покращення покриття мережі[:] [:ru-ru]AT&T использует технологии видеоигр для улучшения покрытия сети[:] [:en]AT&T Uses Video Game Technology to Enhance Phone Coverage[:] [:pl]AT&T wykorzystuje technologię gier wideo do poprawy zasięgu sieci[:] [:cs]AT&T využívá technologii videoher ke zlepšení pokrytí sítě[:] [:es]AT&T utiliza tecnología de videojuegos para mejorar la cobertura telefónica[:] [:fr]AT&T utilise la technologie du jeu vidéo pour améliorer la couverture téléphonique[:] [:de]AT&T nutzt Videospieltechnologie, um die Telefonabdeckung zu verbessern[:] [:pt]AT&T usa tecnologia de videogame para aumentar a cobertura telefônica[:] [:it]AT&T utilizza la tecnologia dei videogiochi per migliorare la copertura telefonica[:] [:nl]AT&T gebruikt videogametechnologie om de telefoondekking te verbeteren[:] [:id]AT&T Menggunakan Teknologi Video Game untuk Meningkatkan Jangkauan Telepon[:]](https://estdomain.com.ua/wp-content/uploads/2025/11/0d0b3f71-f8e5-484b-b5a8-fd9fb3e97a5c-218x150.jpg)
![[:uk-ua]UFO 50: колекція з 50 ретро-ігор з’являється на Switch 2[:] [:ru-ru]UFO 50: Коллекция из 50 Ретро-Игр Появилась на Switch 2[:] [:en]UFO 50: A Collection of 50 Retro Games Lands on Switch 2[:] [:pl]UFO 50: Kolekcja 50 gier retro pojawia się na Switchu 2[:] [:cs]UFO 50: Kolekce 50 retro her se objeví na Switch 2[:] [:es]UFO 50: una colección de 50 juegos retro llega a Switch 2[:] [:fr]UFO 50 : Une collection de 50 jeux rétro débarque sur Switch 2[:] [:de]UFO 50: Eine Sammlung von 50 Retro-Spielen erscheint auf Switch 2[:] [:pt]UFO 50: uma coleção de 50 jogos retrô chega ao Switch 2[:] [:it]UFO 50: una raccolta di 50 giochi retrò sbarca su Switch 2[:] [:nl]UFO 50: een verzameling van 50 retrogames belandt op Switch 2[:] [:id]UFO 50: Koleksi 50 Game Retro Mendarat di Switch 2[:]](https://estdomain.com.ua/wp-content/uploads/2025/11/9cdf85fb-119c-4afd-beb0-64c31cef0a32-218x150.jpg)
![[:uk-ua]Програма Повідомлення на iPhone: прихований математичний інструмент і інструмент перетворення одиниць[:] [:ru-ru]Приложение «Сообщения» на iPhone: скрытый математический инструмент и средство преобразования единиц измерения[:] [:en]Your iPhone Messages App: A Secret Math and Conversion Tool[:] [:pl]Aplikacja Wiadomości na iPhonie: ukryte narzędzie matematyczne i narzędzie do konwersji jednostek[:] [:cs]Aplikace Zprávy na iPhone: Skrytý matematický nástroj a nástroj pro převod jednotek[:] [:es]La aplicación de mensajes de tu iPhone: una herramienta secreta de conversión y matemáticas[:] [:fr]Votre application de messages iPhone : un outil secret de mathématiques et de conversion[:] [:de]Ihre iPhone-Nachrichten-App: Ein geheimes Mathematik- und Konvertierungstool[:] [:pt]Seu aplicativo de mensagens para iPhone: uma ferramenta secreta de matemática e conversão[:] [:it]L’app Messaggi del tuo iPhone: uno strumento segreto di matematica e conversione[:] [:nl]Je iPhone-berichtenapp: een geheime wiskunde- en conversietool[:] [:id]Aplikasi Pesan iPhone Anda: Rahasia Matematika dan Alat Konversi[:]](https://estdomain.com.ua/wp-content/uploads/2025/11/9bd66581-f539-4a49-8ad4-a5eab212015a-218x150.jpg)
![[:uk-ua]Як дивитися ігри NFL Week 8 з будь-якого місця за допомогою VPN[:] [:ru-ru]Как смотреть игры NFL Week 8 из любой точки, используя VPN[:] [:en]How to Watch NFL Week 8 Games From Anywhere Using a VPN[:] [:pl]Jak oglądać mecze NFL Tydzień 8 z dowolnego miejsca za pomocą VPN[:] [:cs]Jak sledovat hry NFL Week 8 odkudkoli pomocí VPN[:] [:es]Cómo ver los juegos de la Semana 8 de la NFL desde cualquier lugar usando una VPN[:] [:fr]Comment regarder les matchs de la semaine 8 de la NFL depuis n’importe où à l’aide d’un VPN[:] [:de]So können Sie NFL-Spiele der 8. Woche von überall aus über ein VPN ansehen[:] [:pt]Como assistir aos jogos da semana 8 da NFL de qualquer lugar usando uma VPN[:] [:it]Come guardare le partite della settimana 8 della NFL da qualsiasi luogo utilizzando una VPN[:] [:nl]Hoe je NFL Week 8-games overal kunt bekijken met behulp van een VPN[:] [:id]Cara Menonton Pertandingan NFL Minggu 8 Dari Mana Saja Menggunakan VPN[:]](https://estdomain.com.ua/wp-content/uploads/2025/11/6316771c-91c6-4411-adab-9f5b1af6c57c-218x150.jpg)
![[:uk-ua]Як вирішити дратівливі проблеми з автоматичною яскравістю iPhone[:] [:ru-ru]Как исправить раздражающие проблемы с автоматической яркостью iPhone[:] [:en]How to Fix Your iPhone’s Auto-Brightness Annoyances[:] [:pl]Jak naprawić irytujące problemy z automatyczną jasnością iPhone’a[:] [:cs]Jak opravit nepříjemné problémy s automatickým jasem iPhone[:] [:es]Cómo solucionar las molestias del brillo automático de tu iPhone[:] [:fr]Comment résoudre les problèmes de luminosité automatique de votre iPhone[:] [:de]So beheben Sie die Probleme mit der automatischen Helligkeit Ihres iPhones[:] [:pt]Como corrigir os incômodos do brilho automático do seu iPhone[:] [:it]Come risolvere i problemi legati alla luminosità automatica del tuo iPhone[:] [:nl]Hoe u de automatische helderheidsirritaties van uw iPhone kunt oplossen[:] [:id]Cara Memperbaiki Gangguan Kecerahan Otomatis iPhone Anda[:]](https://estdomain.com.ua/wp-content/uploads/2025/11/348bbe66-65cb-4263-94d1-ad03e8c39b4a-218x150.jpg)







