Symfony — свободный каркас, написанный на PHP5, который использует паттерн Model-View-Controller (MVC). По-моему личному впечатлению, да и, думаю, впечатлению многих проект очень удачный, поэтому он широко используется при создании сайтов. Именно поэтому стоит уделять особое внимание возможным уязвимостям. В данной статье пойдёт речь о одной из таких уъязвимостей — о разработчике.
В свободное от работы время люблю позаниматься своими проектами, которые написаны с использованием php, различных свободных CMS и фреймворков. Один из таких проектов использует symfony в качестве основы.
Как и большинство начинающих изучать symfony, начал я с примера, в котором создавались два приложения – frontend и backend. Frontend отображается пользователю, а backend используется для администрирования сайта. Symfony генерирует для этих приложений четыре файла:
index.php, frontend_dev.php, backend.php, backend_dev.php
- index.php, backend.php – это production версии скриптов.
- frontend_dev.php, backend_dev.php – это dev версия скриптов.
if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1'))) { die('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); }Зная данную информацию, напрашивается вопрос, как часто разработчики используют стандартные названия и поддаются соблазну удалённой отладки. Для поиска ответов на эти вопросы лучше всего обратиться к google. Первый же запрос “inurl:frontend_dev.php” выдаёт 495 000 результатов. Не все из результатов относятся к symfony, но цифра 495 000 впечатляет. Теперь, немного модифицируя запрос, можно найти много чего интересного. К примеру: “app_facebook_secret_key inurl:frontend_dev.php”. Более детальный анализ есть тут.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.