H
Hackers Academy
Original poster
Web-shell без JavaScript с файл-менеджером на борту
Всем привет!
В начале этого года мною был написан с небольшим набором функций. Данный шелл был заточен под невидимость для антивирусов и другого специализированного ПО.
Но вот мне захотелось написать уже вариант имеющий в арсенале файл-менеджер с разными плюшками. Так как писать много раз написанное не всегда интересно, то я поставил себе более сложную задачу – написать такой шелл без единой строчки кода JavaScript. Дело в том, что большинство элементов, которые требуют действия пользователей - разные клики и т.д и т.п, пишутся именно с применением JS. Это разумно, так как у JavaScript имеется огромный арсенал обработки событий, который позволяет значительно облегчить жизнь программисту. А использование фреймворка jquery делает это ещё проще.
Однако здесь кроется подводный камень – требуется подключение jquery, а значит нужно ссылаться на удалённый ресурс с ним. Кроме этого, некоторые пользователи предпочитают отключать JS в браузере, а значит код работать не будет. В общем пришлось изрядно повозиться, чтобы создать web-shell без JavaScript, используя только HTML5 + CSS3 + PHP. Спросите а зачем так мучиться? А я отвечу – люблю сложные задачи ) Мне было интересно это сделать. На написание шелла ушло более месяца, код вырос почти до 700 строк. Несмотря на приличный объём, антивирусы его не палят.
И вот теперь с чувством выполненного долга, представляю обзор нового веб-шелла exp_door v2.0.
Остановлюсь на минутку для того чтобы пояснить, для тех кто не знает, что такое web-shell. Веб-шелл, он же бэкдор - это программа которую заливают на уязвимый ресурс с целью управления этим ресурсом. То есть, допустим вы взломали админку сайта, или получили доступ к БД с возможностью заливки файлов. Далее заливаете шелл, и потом в браузере выполняете произвольный код, а также имеете другие широкие возможности.
Для того чтобы протестировать шелл на локалке, скопируйте код (в конце статьи выложен), и вставьте в php-файл с любым названием. У меня это например. Файл лучше всего положить в корень сайта, то есть в директорию /var/www/html/ Далее выполните в терминале команду для запуска сервисов MySql и PHP.
Теперь открываете браузер, вводите адрес локального сайта с шеллом - и открывается окно авторизации.
Креды по-умолчанию: логин – admin, пароль – testpass. Сменить данные для авторизации можно в исходном коде (33 строка). При авторизации данные записываются в куки, и при последующих заходах вводить данные не понадобится.
После успешной авторизации, вы увидите панель веб-шелла. Панель состоит из нескольких частей:
В шапке сразу отображается ряд уже выполненных важных команд автоматически. Вы видите под каким юзером вы находитесь, и к какой группе принадлежите. Также навиду данные об операционной системе сервера – название, релиз. Присутствует местонахождение временной папки и права на неё. Далее мы видим версию PHP, адрес сервера, и что в данном случае, сервер крутится на апаче.
Если вы выходите через VPN, то IP-адрес клиента (ваш), не должен быть реальным, если это не так, значит VPN отвалился. Кроме айпишника показываются языки, которые поддерживаются вашим браузером. Если вы не хотите палить что вы, например, русский, то заход в панель, нужно делать через браузер с поддержкой, например, только английского языка.
Ниже текущая дата сервера, время, и отличие его от GMT. В завершении свободный и общий объём диска, а также текущее местонахождение (директория где находится шелл) и права на неё. С выходом всё понятно – при нажатии на кнопку EXIT, происходит разлогинивание, удаляются куки, и при следующем посещении, необходимо заново будет ввести данные для входа в панель.
Рассмотрим файл-менеджер:
В верхней части мы видим также текущее месторасположение на сервере, которое мы можем сменить разными способами:
1. Ввести путь вручную и нажать Go dir для перехода в соответствующую директорию.
2. Нажать на Up one level для перехода на один уровень выше. Так можно щёлкать до самой корневой папки.
Стрелочка зелёного цвета возвращает в предыдущую директорию, и папка с изображением домика, соответственно в домашнюю папку, коей будет являться директория в которой лежит шелл. В основной части файл-менеджера показываются в отсортированном по-алфавиту порядке сначала папки, потом файлы, и последними симлинки. Папки, а также симлинки, указывающие на папки, выделены зелёным цветом. У папок присутствует значок папки, у файлов значок листка с завёрнутым уголком, и у линка стрелочка.
После названия, в колонке Action, есть ряд действий которые рассмотрим чуть позже. В таблице выводятся права, причём это сделано сразу в двух вариантах – как цифровом, так и в символьном, чтобы проще было ориентироваться. Как говорится, кому как удобнее, кто как привык. Если есть возможность писать в папку, права выделяются зелёным цветом, а если она выделена красным, то нет прав даже на просмотр содержимого, и при попытке открытия получите следующее сообщение:
Далее присутствует юзер и группа, к которым принадлежит файл/папка/линк, дата модификации, и размеры файлов. При нажатии на папку происходит переход в неё, и соответственно уже отображается всё то что в ней находится. При наведении мышки на любую строку происходит подсветка этой строки белым цветом, чтобы проще было ориентироваться. Также, если щёлкнуть мышкой в любом месте строки, то она выделяется зелёным цветом.
При нажатии на файл, происходит его открытие в модальном окне, причём для файлов PHP, я сделал подсветку синтаксиса.
Если файл не удаётся открыть, то увидите соответствующее сообщение:
А если файл пустой, то выведется это окно:
Теперь рассмотрим колонку Action. При наведении мышки каждый пункт подсвечивается, и появляется подсказка.
D – Delete (удалить)
R – Rename (переименовать)
T – Touch (изменить дату модификации)
U – Upload (загрузить в папку)
E – Edit (отредактировать)
Стрелка вниз – Download (скачать)
Нужно отметить, что данные действия вы не всегда сможете выполнить из-за нехватки прав на тот или иной объект. В этом случае, вы получите соответствующее сообщение:
Все вышеописанные действия сработают только при отмеченном чекбоксе, в противном случае, ничего не произойдёт. При выборе соответствующего действия, всё интуитивно понятно, например, отмечаем чекбокс и жмём на стрелку Download – появляется окно, в котором есть возможность сохранить файл.
Подробно каждый пункт рассматривать не будем, там всё просто, и перейдём во вкладку с инструментами, которая появится при нажатии на кнопку Tools.
Здесь отличия от первой версии шелла несущественные – скачивание и загрузка были перенесены в действия, соответственно стало проще – не нужно прописывать пути к файлам. Изменения коснулись дампа базы данных – добавил поле Port. Стандартный порт для базы данных - 3306, и если это так, то порт НЕ обязательно писать, дамп сработает при остальных правильно заполненных полях. Но если порт сменён на нестандартный, тогда разумеется его вписывать нужно.
Также изменил бэкконнект – ранее порт был фиксированный, теперь можно ввести любой через вертикальную черту. Например запустим слушателя на машине с портом 12345.
Так как мы проверяем на локалке, то наш IP-адрес будет 127.0.0.1, и через вертикальную черту пишем порт 12345.
Жмём Reverse, и обратная оболочка готова, можно вводить команды на удалённом компьютере. Для завершения сеанса ввести команду exit.
Остальное осталось в неизменном виде – несколько ходовых вариантов кодирования/декодирования, показ phpinfo, потенциально опасных функций включённых на сервере, и список имеющихся загрузчиков. Ну и конечно самое главное возможность вставлять произвольный код. Например вбив в CMD команду cat /etc/shells мы получим на выходе все присутствующие на сервере оболочки:
Чтобы перейти обратно к файл-менеджеру, нажмите на ссылку Hide tools.
Ну что же друзья, обзор закончен, делюсь . Если вы знаете PHP и HTML, то можете видоизменять код, и добавлять плюшки на своё усмотрение. Учите программирование, и сможете написать себе любой софт )
С вами был ФСБ! Надеюсь тебе понравилась моя статья. Подписывайся на мой профиль UfoLabs и на мой телеграм канал
Всем привет!
В начале этого года мною был написан с небольшим набором функций. Данный шелл был заточен под невидимость для антивирусов и другого специализированного ПО.
Но вот мне захотелось написать уже вариант имеющий в арсенале файл-менеджер с разными плюшками. Так как писать много раз написанное не всегда интересно, то я поставил себе более сложную задачу – написать такой шелл без единой строчки кода JavaScript. Дело в том, что большинство элементов, которые требуют действия пользователей - разные клики и т.д и т.п, пишутся именно с применением JS. Это разумно, так как у JavaScript имеется огромный арсенал обработки событий, который позволяет значительно облегчить жизнь программисту. А использование фреймворка jquery делает это ещё проще.
Однако здесь кроется подводный камень – требуется подключение jquery, а значит нужно ссылаться на удалённый ресурс с ним. Кроме этого, некоторые пользователи предпочитают отключать JS в браузере, а значит код работать не будет. В общем пришлось изрядно повозиться, чтобы создать web-shell без JavaScript, используя только HTML5 + CSS3 + PHP. Спросите а зачем так мучиться? А я отвечу – люблю сложные задачи ) Мне было интересно это сделать. На написание шелла ушло более месяца, код вырос почти до 700 строк. Несмотря на приличный объём, антивирусы его не палят.
И вот теперь с чувством выполненного долга, представляю обзор нового веб-шелла exp_door v2.0.
Остановлюсь на минутку для того чтобы пояснить, для тех кто не знает, что такое web-shell. Веб-шелл, он же бэкдор - это программа которую заливают на уязвимый ресурс с целью управления этим ресурсом. То есть, допустим вы взломали админку сайта, или получили доступ к БД с возможностью заливки файлов. Далее заливаете шелл, и потом в браузере выполняете произвольный код, а также имеете другие широкие возможности.
Для того чтобы протестировать шелл на локалке, скопируйте код (в конце статьи выложен), и вставьте в php-файл с любым названием. У меня это например. Файл лучше всего положить в корень сайта, то есть в директорию /var/www/html/ Далее выполните в терминале команду для запуска сервисов MySql и PHP.
Теперь открываете браузер, вводите адрес локального сайта с шеллом - и открывается окно авторизации.
Креды по-умолчанию: логин – admin, пароль – testpass. Сменить данные для авторизации можно в исходном коде (33 строка). При авторизации данные записываются в куки, и при последующих заходах вводить данные не понадобится.
После успешной авторизации, вы увидите панель веб-шелла. Панель состоит из нескольких частей:
В шапке сразу отображается ряд уже выполненных важных команд автоматически. Вы видите под каким юзером вы находитесь, и к какой группе принадлежите. Также навиду данные об операционной системе сервера – название, релиз. Присутствует местонахождение временной папки и права на неё. Далее мы видим версию PHP, адрес сервера, и что в данном случае, сервер крутится на апаче.
Если вы выходите через VPN, то IP-адрес клиента (ваш), не должен быть реальным, если это не так, значит VPN отвалился. Кроме айпишника показываются языки, которые поддерживаются вашим браузером. Если вы не хотите палить что вы, например, русский, то заход в панель, нужно делать через браузер с поддержкой, например, только английского языка.
Ниже текущая дата сервера, время, и отличие его от GMT. В завершении свободный и общий объём диска, а также текущее местонахождение (директория где находится шелл) и права на неё. С выходом всё понятно – при нажатии на кнопку EXIT, происходит разлогинивание, удаляются куки, и при следующем посещении, необходимо заново будет ввести данные для входа в панель.
Рассмотрим файл-менеджер:
В верхней части мы видим также текущее месторасположение на сервере, которое мы можем сменить разными способами:
1. Ввести путь вручную и нажать Go dir для перехода в соответствующую директорию.
2. Нажать на Up one level для перехода на один уровень выше. Так можно щёлкать до самой корневой папки.
Стрелочка зелёного цвета возвращает в предыдущую директорию, и папка с изображением домика, соответственно в домашнюю папку, коей будет являться директория в которой лежит шелл. В основной части файл-менеджера показываются в отсортированном по-алфавиту порядке сначала папки, потом файлы, и последними симлинки. Папки, а также симлинки, указывающие на папки, выделены зелёным цветом. У папок присутствует значок папки, у файлов значок листка с завёрнутым уголком, и у линка стрелочка.
После названия, в колонке Action, есть ряд действий которые рассмотрим чуть позже. В таблице выводятся права, причём это сделано сразу в двух вариантах – как цифровом, так и в символьном, чтобы проще было ориентироваться. Как говорится, кому как удобнее, кто как привык. Если есть возможность писать в папку, права выделяются зелёным цветом, а если она выделена красным, то нет прав даже на просмотр содержимого, и при попытке открытия получите следующее сообщение:
Далее присутствует юзер и группа, к которым принадлежит файл/папка/линк, дата модификации, и размеры файлов. При нажатии на папку происходит переход в неё, и соответственно уже отображается всё то что в ней находится. При наведении мышки на любую строку происходит подсветка этой строки белым цветом, чтобы проще было ориентироваться. Также, если щёлкнуть мышкой в любом месте строки, то она выделяется зелёным цветом.
При нажатии на файл, происходит его открытие в модальном окне, причём для файлов PHP, я сделал подсветку синтаксиса.
Если файл не удаётся открыть, то увидите соответствующее сообщение:
А если файл пустой, то выведется это окно:
Теперь рассмотрим колонку Action. При наведении мышки каждый пункт подсвечивается, и появляется подсказка.
D – Delete (удалить)
R – Rename (переименовать)
T – Touch (изменить дату модификации)
U – Upload (загрузить в папку)
E – Edit (отредактировать)
Стрелка вниз – Download (скачать)
Нужно отметить, что данные действия вы не всегда сможете выполнить из-за нехватки прав на тот или иной объект. В этом случае, вы получите соответствующее сообщение:
Все вышеописанные действия сработают только при отмеченном чекбоксе, в противном случае, ничего не произойдёт. При выборе соответствующего действия, всё интуитивно понятно, например, отмечаем чекбокс и жмём на стрелку Download – появляется окно, в котором есть возможность сохранить файл.
Подробно каждый пункт рассматривать не будем, там всё просто, и перейдём во вкладку с инструментами, которая появится при нажатии на кнопку Tools.
Здесь отличия от первой версии шелла несущественные – скачивание и загрузка были перенесены в действия, соответственно стало проще – не нужно прописывать пути к файлам. Изменения коснулись дампа базы данных – добавил поле Port. Стандартный порт для базы данных - 3306, и если это так, то порт НЕ обязательно писать, дамп сработает при остальных правильно заполненных полях. Но если порт сменён на нестандартный, тогда разумеется его вписывать нужно.
Также изменил бэкконнект – ранее порт был фиксированный, теперь можно ввести любой через вертикальную черту. Например запустим слушателя на машине с портом 12345.
Так как мы проверяем на локалке, то наш IP-адрес будет 127.0.0.1, и через вертикальную черту пишем порт 12345.
Жмём Reverse, и обратная оболочка готова, можно вводить команды на удалённом компьютере. Для завершения сеанса ввести команду exit.
Остальное осталось в неизменном виде – несколько ходовых вариантов кодирования/декодирования, показ phpinfo, потенциально опасных функций включённых на сервере, и список имеющихся загрузчиков. Ну и конечно самое главное возможность вставлять произвольный код. Например вбив в CMD команду cat /etc/shells мы получим на выходе все присутствующие на сервере оболочки:
Чтобы перейти обратно к файл-менеджеру, нажмите на ссылку Hide tools.
Ну что же друзья, обзор закончен, делюсь . Если вы знаете PHP и HTML, то можете видоизменять код, и добавлять плюшки на своё усмотрение. Учите программирование, и сможете написать себе любой софт )
С вами был ФСБ! Надеюсь тебе понравилась моя статья. Подписывайся на мой профиль UfoLabs и на мой телеграм канал