Если злоумышленнику удастся сделать эти данные читаемыми, например, удалив SSL, он может использовать их для компрометации веб-сайтов, учетных записей, приложений и т.д.
HackWare.ru
С одной стороны, эта история основана на реальном случае аудита, что означает, что если бы я рассказывал ее с самого начала, то это был бы пример, из которого могли бы извлечь уроки начинающие специалисты по безопасности веб-приложений или веб-мастера и администраторы, но, как и в случае с любым примером, нет никакой гарантии, что ваша практика будет отличаться, а информация окажется полезной.
С другой стороны, есть вещи, о которых я могу рассказать только в общих чертах. Поэтому в этом руководстве будет как никогда мало команд и скриншотов (а может и вовсе не будет). Так что это тоже эксперимент: давным-давно я прочитал, что «каждая формула в книге вдвое уменьшает число читателей». И автор этого высказывания пришел к выводу, что надо объяснять, например, физику без формул «на пальцах» — тогда и тираж будет хороший (и денег много заработают — вот что он, очевидно, имел в виду). В то время я думал, что автор сильно ошибался, но теперь мне кажется, что каждый запуск консольной утилиты в командной строке также вдвое уменьшает аудиторию читателей статьи. ))))) В любом случае, если эта теория верна, эта статья должна получить много просмотров )))).
Поиск уязвимостей в веб-приложении
Веб-сайт представлял собой веб-приложение, разработанное с нуля. Для использования функций требуется логин и пароль, но есть и гостевой вход, поэтому данные для входа гостей указаны прямо на главной странице.
Выполненные действия сохраняются в истории. Действие имеет заголовок и текст. Оказалось, что хранимые поля не фильтруются для специальных символов и слов, поэтому XSS-уязвимость была быстро найдена и подтверждена — т.е. код в поле, где вы вводите что-то вроде
и на странице сайта (в данном случае истории) появляется всплывающее окно JavaScript.
С помощью такой уязвимости можно, например, перехватывать файлы cookie других пользователей. Но проблема, конечно, в том, что у каждого пользователя своя история. Это означает, что в данном случае максимум, что я могу сделать, это перехватить куки пользователей с точно такими же правами, как у меня — т.е. только тех пользователей, которые вошли в систему под учетной записью гостя. Возможно, администратор имеет доступ к списку истории всех пользователей — но не обязательно. Они также должны найти способ заставить его вписаться в историю — иначе он может оказаться там через год, два года или никогда.
Поскольку видно, что специальные символы не фильтруются и что данные, вероятно, хранятся в базе данных, это может означать, что существует уязвимость SQL-инъекции, которая позволяет получить доступ к базе данных сайта. Но ic
И я загрузил его на сервер. Сервер показал мне ссылку на файл. Итак, файл был загружен! Я перешел по ссылке и вместо загрузки или отображения содержимого, файл был выполнен, т.е. я увидел информацию, отображаемую phpinfo().
В чем ошибка разработчика?
Такой небрежный стиль программирования не может сочетаться с публичным аккаунтом. Это означает, что если учетные данные не указаны на главной странице, то обнаружение и использование этих уязвимостей будет происходить со значительной задержкой.
Самое главное, при написании кода всегда фильтруйте данные и ограничивайте файлы, которые могут быть загружены на сервер. Даже если вы программируете «для себя» и храните файлы на локальном сервере на своем компьютере, может возникнуть проблема — кто-то может подключиться к вашему веб-серверу через локальную сеть (если вы используете публичный интернет) или ваш компьютер может быть напрямую доступен через белый IP. Конечно, если сайт публичный, код должен быть написан с учетом требований безопасности в любое время.
Изначально я хотел использовать самый простой вариант — c99unlimited.php. Это оболочка в подаче файлового менеджера, с помощью которой легко просматривать каталоги и загружать файлы. Однако у меня он не сработал и выдал сообщение об ошибке 500. Очевидно, существует несовместимость с сервером.
Нет проблем, в Webshells так много различных оболочек, что выбор хорошей может занять много времени, но я остановился на другой любимой: Уэвели. У меня еще лучшее предчувствие относительно этого инструмента )))). Несмотря на то, что у него есть интерфейс командной строки, так он мне нравится даже больше.
Загрузка бэкдора
Создайте новый бэкдор (да, пароль — это просто цифра 1):
weevely generates 1 test.php
Заполните его на сервере.
И подключитесь к нему:
https://site.ru/upload/8579.php 1
Уровень защиты варьируется, и есть даже системы, которые невозможно взломать. Однако усилия и время, необходимые для этого процесса, различны. Если вы сделаете защиту настолько важной, что на ее преодоление потребуется много времени, атака станет невыгодной для хакеров.
Последовательность действий хакера выглядит примерно так:
Взлом — алгоритм получения данных
Цель взлома может быть любой, например: для развлечения, по просьбе конкурирующей организации с оплатой со стороны хакера, для получения необходимых данных и т.д. Часто это делается для получения доступа к учетной записи пользователя сайта по личным или другим причинам.
Это распространенный способ действия: нередко пользователей обманом заставляют передать данные заинтересованной стороне. Как хакеры проникают на веб-сайты? Достаточно самых простых механизмов. Между
- Попытаться избежать взлома.
- Применить простые и известные методики.
- Воспользоваться грубой силой.
- Сформировать инструмент для взлома.
- Попытаться заново, используя несколько другие возможности.
Действия без стандартного взлома
- Рассылку сообщений от «администрации». Поступает письмо якобы от специалиста компании, для маскировки заголовок письма подменяется. Чаще всего пишут о попытках взлома с просьбой предоставления данных для проверки. Просят выслать пароль и логин. Многие люди начинают переживать и «ведутся» на такую уловку.
- Уловки и лесть. Собеседник старается узнать о вас как можно больше: работа, увлечения, домашние питомцы, девичья фамилия мамы. Если человек настолько милый и вызывает доверие, то порой сложно удержаться. Беседа идет активно, а потом неожиданно прекращается, в результате попасть на сайт уже не получается. Специалист по взлому угадал ответ на выбранный вами вопрос и получил доступ.
- Фишинг. Если вам пришло СМС от знакомого или друга с просьбой оценить видео, проголосовать, увидеть свои фото по ссылке, то в данном случае не стоит спешить. Далее предлагается повторная авторизация, которая ничего не меняет. После введения данных уже поздно — использовали муляж сайта, а вы сами дали свои данные.