Метро 2020. Часть 1. Глуховский отдыхает.

Файл:Biohazard symbol.svg — Википедия

ВНИМАНИЕ! АДМИНИСТРАЦИЯ САЙТА НЕ СОВЕРШАЕТ И НЕ РЕКОМЕНДУЕТ ВАМ СОВЕРШАТЬ ПРОТИВОПРАВНЫХ ДЕЙСТВИЙ ИЛИ ПОЛУЧАТЬ ДОСТУП К ОТКРЫТЫМ СИСТЕМАМ. СТАТЬЯ ОПУБЛИКОВАНА ПОСЛЕ ТОГО, КАК ВСЕ ЗАТРАГИВАЕМЫЕ В НЕЙ ОРГАНИЗАЦИИ БЫЛИ ОПОВЕЩЕНЫ. ДАННАЯ СТАТЬЯ НАПРАВЛЕНА НА ТО, ЧТОБЫ УКАЗАЗТЬ НА ПРОБЛЕМЫ С СИСТЕМАМИ ЭТИХ ОРГАНИЗАЦИЙ И ПРИДОСТЕРЕЧЬ ИХ ОТ ВОЗМОЖНЫХ АТАК. МЫ НЕ РЕКОМЕНДУЕМ ВАМ ПОВТОРЯТЬ ОПИСАННЫХ ЗДЕСЬ ДЕЙСТВИЙ. СТАТЬЯ НАПИСАНА НЕ АВТОРОМ НАШЕЙ РЕДАКЦИИ И ОПУБЛИКОВАНА НА ПРАВАХ КОНФЕДЕНЦИАЛЬНОСТИ ЖУРНАЛИСТКОЙ ТАЙНЫ. НА ДАННЫЙ МОМЕНТ АДМИНИСТРАЦИЕЙ ВСЕ УЯЗВИМОСТИ ИСПРАВЛЕНЫ.

Привет, друзья. Читали рассказы Глуховского про метро? Только там – это вымысел. Сегодня мы расскажем вам о том какие баги, жуки и крысы водятся в столичной подземке, да и в системе отечественного транспорта вообще.

На повестке дня история о том, как мы случайно обнаружили серьезные проблемы с сайтом Московского государственного транспорта, также известного МосГорТранс.
Казалось бы: государственный сайт должен иметь серьёзную защиту, вечно бодрствующих администраторов, программистов и наряд тяжеловооружённых и хорошо обученных бойцов, держущих оборону по периметру серверной. Так и мы думали, пока на практике не оказалось по-другому.

Приступим же к практической части, и перейдём на сам сайт, оценить обстановку.

Перед тем, как начать нам необходимо обеспечить себя хотя бы частичной анонимностью. Для простого просмотра мы можем использовать и просто ТОР браузер, но я настоятельно рекомендую использовать ProtonVPN при работе с российскими системами.

И да, перед тем, как начинать аудит, по правилам хорошего тона мы должны сначала изучить нашу цель поближе. Это нужно в первую очередь для того, чтобы мы не действовали в слепую, а имели представление о том, что из себя представляет цель. Судить о сайте мы будем по:

  • состоянию
  • внешнему оформлению
  • активности администраторов
  • удобности интерфейса
  • по протоколу
  • наличие рекламы и её количество

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

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

Активность администраторов должна указывать на то, что сайт не заброшен и им ещё занимаются, что указывает на наличие потенциальной угрозы в виде онлайна админов, что не даст нам просто так нагло ворваться к ним. Конечно, изредка появляющиеся статьи и новости дают нам больше свободы, нежели вечно бдящие павер юзеры, но всё-таки.

Удобность интерфейса указывает на то, что сайт заточен под активное пользование, а не разовый поиск информации. То есть сайт должен отвечать неким стандартам безопасности, чтобы какой-то криворукий Вася случайно не тыкнул не туда и не положил всю систему недопустимым символом в строке поиска.

Протокол же говорит о серьёзности подхода программистов к делу. Более-менее серьёзные сайты всегда стоят на HTTPS, а одноразовые, типа сайтов воронок на завлечение мамонтов обычно на HTTP. Наличие HTTP на сайтах может служить признаком того, что о защите не так уж и парились. Соответственно, на сайте должна быть целая куча дыр. Не обязательно как в сыре, но парочка таковых быть просто обязана.

Хорошие манеры нужны не только в общении, но и в работе. Мы не можем проводить аудит цели, не зная, что она из себя представляет. Нужно для начала «познакомиться». Полазать по сайту, проверить наличие robots.txt, поля ввода логина и пароля пользователя для входа. Зарегистрироваться, изучить личный кабинет и так далее. Это позволит нам понять примерный вектор атаки, или же составить план действий, опираясь на данные нашей «разведки». Это бывает очень полезно.

Реклама обычно имеется на сайтах, у которых нет инвестиций. Нужно ведь как-то оплачивать место. Соответственно, персонала не так уж и много, и за сайтом уследить становится сложнее. Исходя из этого факта, мы имеем гораздо больше свободы действий, нежели в случае отсутствия рекламы. Т.к. если на сайте нет рекламы, то, скорее всего, он кем-то финансируется. Опять же, смотря какая реклама. Если это реклама других проектов, связанных с основной тематикой сайта, то это не считается. Скорее всего, за это рекламное место никому не платили.

Теперь переходим к делу.
Защитились? Отлично, переходим в поисковик. Гуглим (а в моём случае «Яндексим») Мосгортранс, и переходим по проверенной и подтверждённой ссылке. Почему я использую яндекс? Ну, во-первых это первый поисковик, который у меня вылез во время сбора материала для статьи, а во-вторых я просто хочу показать, что переходим не по левой ссылке, а по подтверждённой. Желательно изучать в режиме инкогнито, чтобы потом не чистить историю.

Проходим. Вылезло такое:


Начнём же изучать сайт.

Первым же делом нам бросается в глаза оформление. Сайт оформлен красиво, удобно, много полезных функций, например как «расписание междугородных автобусов», всё выполнено на уровне, есть незначительная реклама. Хотя это трудно назвать рекламой, это скорее ссылки на другие сервисы. Проверим рекламу на актуальность:

Первый минус. Администрация не следит за ссылками и актуальностью рекламы. Судя по тому, что картинка есть, а ссылка не валид – реклама статичная. Получается, за сайтом не особо-то и следят. Постыдились бы хоть. Остальные ссылки работают исправно. Поиск реагирует на запросы адекватно, очень удобный, выделяет ключевые слова в тексте, имеет функцию расширенного поиска, придраться не могу. Нет, мне не заплатили за эти слова, просто поиск, в отличии от других сайтов выполнен и правда хорошо.

Проверяем robots.txt:

И что же мы видим? typo3! Будем называть его тупоз. Скажу так: Все сайты, которые я встречал с тупоз’ом почему-то являлись стопроцентно уязвимы, и в итоге были вполне успешно взломаны. Проверим? Проверим! Это наша первая серьёзная зацепка. Странно, что они не повесили на сайт CMS собственного производства, как у нас любят. Может быть, всё потому что в то время ещё не было такого импортозамещения, как сейчас? Не знаю.

Тупоз, он же typo3 был разработан Каспером Скорхёй, разработчиком из Дании, своё детище он выкатил на публику, если не ошибаюсь в тысяча девятьсот девяносто восьмом (1998), ав две тысячи седьмом году (2007) стал эмо (шутка) и перестал быть главным разработчиком теперь за разработку отвечает кто-то другой. Кто – непонятно, с каждой версией меняется и разработчик. Прямо как печатки, честное слово. Как я понял, разработчики менялись, а проблемы оставались теми же.

Взглянем на CMS сайта (mosgortrans.ru/typo3):

Почему я не удивлён? Хорошо, продолжим изучать нашу цель.

Я уверен, вы всё это время прямо таки кричали в монитор: «Сайт стоит на http, не на https, почему ты не говоришь об этом?» Вы уже сами всё сказали, а я аккуратно подвёл к этому пункту саму статью. Вторая серьёзная зацепка. Если честно, то с восемнадцатого года ничего не поменялось. Кроме новостей, конечно же. Я решил проверить, как обстоят дела с посещаемостью сайта:

Как мы можем заметить, сайт действительно пользуется спросом.

Вот ещё парочка интересных фактов о домене мосгортранса:

Ему 16 лет (Хотел пошутить про возраст согласия и проникновение, но не стал), зарегистрирован пятого апреля две тысячи четвёртого года (2004.04.05) На момент сканирования общая стоимость сайта составляет шестьсот одиннадцать тысяч семьсот восемьдесят четыре (611 784) рубля. Так же имеет четыреста сорок две тысячи восемьсот девяносто три (442 893) захода на сайт за март.

Статистика упала, к слову, раньше было больше. Количество ссылающихся на него доменов – четыре тысячи семьсот девяносто шесть (4796), большая часть которых занимает сайт rbc.ru. Стоять ему на серверах nic.ru ещё целый год, так что у нас полно времени. Так говорю, будто он скоро полностью исчезнет с интернета. Странно, но archive.org показывает, что первая копия была снята тридцатого сентября две тысячи первого года (30.09.2001), но сам сама копия пустая, можете не проверять.

К слову, я анализировал сайт через бесплатный сервис be1.ru. Я рассказал самое интересное о его внешних данных, теперь пора заняться и внутренними.

По итогам разведки мы имеем следующее:

  • Сайт Живой
  • Заточен под длительное и многоразовое использование и поиск информации
  • Админы живые, но ленивые
  • Не использует TLS
  • CMS typo3

Теперь нам нужен набор софта, которым будем пользоваться. Чтобы не тыкаться в каждую имеющуюся у нас программу – будем отталкиваться от планируемых действий. Итак, составим план, от которого будем отталкиваться:

  • сканируем сайт
  • собираем потенциальные уязвимости
  • сортируем их на «теоретические» и «практические»
  • эксплуатируем

-в случае неудачи углубляем сканирование через выбор более серьёзного софта

Теперь соберём базовый набор софта.

Мы использовали программ семь, но для статьи я сокращу их до двух или трёх. Ближе к концу я объясню столь специфичный выбор. Первым делом нам нужно выбрать сканер, который мы будем использовать. Остановимся на программке «WebCruiser». Выглядит она следующим образом:

Теперь для тех, кто видит этот софт в первый раз. Webcruiser – это специализированный сканер, предназначенный для, как ни странно, сканирования сайтов и всего, что работает через протокол HTTP и его производные, например, HTTPS. Сканер этот проверяет сайты на наличие уязвимостей и недоработок защитной системы. Сам cruiser по слухам разрабатывался для помощи новичкам в работе над безопасностью собственного сайта, при этом не обращаясь к специалистам, не тратя собственное время и деньги. Но я не думаю, что новичок разберётся в его интерфейсе. По крайней мере, сразу у него это не получится. Да и отчёт у программы не самый подробный, чтобы ньюфаг (простите) сразу понял в чем проблема. Да в принципе отчёты у него говно по сравнению с netsparker’ом, который будет дотошно читать вам лекцию о каждой ссылочке, которую он нашёл и о каждой страничке, которую он достал, а функционал крузера не такой уж и большой. Интерфейс на английском, поэтому тем, кто не знает английского стоит начать его учить или покинуть сферу IT и никогда больше в неё не возвращаться. Если говорить о поиске простейших уязвимостей, то по факту даже всеми забытый Albaloo справляется с задачей лучше, но функционала в нём меньше.

Мне эта программа нравится каким бы карликом она не была просто потому что она удобная, и имеет пару достаточно полезных фич, типа скана через кукисы, работа через прокси, смена юзер-агента, криворукого поисковика админки (с функцией которого Havij справляется, кстати, гораздо лучше), встроенный браузер через который можно авторизоваться для получения этих самых кукисов и сама софтяра работает он относительно быстро. Всё под рукой, генерируемый отчёт не перегружен (потому что говно), удобно работать с логом, ну и относительно просто проверить найденную уязвимость на правдивость. На этом плюсы заканчиваются и начинаются сплошные минусы: Абсолютно бесполезная функция нового скана, которая вместо вайпа текущих данных просто открывает новое окно (полезно, если вы зачем-то сканируете два сайта одновременно). Краткий и убогий лог найденных уязвимостей. Отвратительная функция инъекции, на которой программа зачастую просто зависает. Запустить инъекцию ты не сможешь пока не остановишь скан, а останавливается он долго, будто потоки не останавливает, а отпускает их в лес и начинает на них охоту. Ложные срабатывания, которые составляют 40% всего лога найденных уязвимостей.

Если вдруг кому нужно просканировать или «взломать» школьный сайт – Webcruiser отлично подойдёт для этой работы. Ну или Albaloo, если его кто-то ещё помнит. Говорят, он ещё на что-то способен в наше время.

Теперь краткий гид по ВебКрузеру:

Основное меню:

  • 1 – Сайт или ссылку вставлять сюда
  • 2 – Запустить скан сайта
  • 3 -Альтернатива пункту 2
  • Альтернативы пункту 1 нет
  • 4 – Начать скан со ссылки, а не с корня сайта
  • 5 – Импорт\Экспорт сессии
  • 6 – Кнопка которую я никогда не нажимал
  • 7 – Скан только ссылки, не сайта
  • 8 – Вайп скана для новой сессии

Размяли глаза? Теперь приступаем к боковому меню:

  • 1 – Браузер
  • 2 – Сканер
  • 3 – Реализации логов второго пункта
  • 4 – SQL Инъекция
  • 5 – XSS или межсайтовый скриптинг
  • 6 – Поиск админки
  • 7 – Системные настройки проги
  • 8 – Бесполезная функция. Не тыкайте сюда
  • 9 – Подключение сессии для скана
  • 10 – Получение кода со страницы
  • 11 – Работа со строками
  • 12 – Настройки
  • 13 – Репорт
  • 14 – Функция бесполезная, но в отличии от пункта 8 можете сюда тыкнуть

Кстати, в верхнем меню дублируются некоторые пункты из бокового. Иногда бывает полезным, особенно когда лень вчитываться во все эти буквы

Теперь пройдёмся по настройкам. Это необязательно, но познавательно.

Итак, переходим в настройки (Двенадцатый пункт в разборе выше).

Первая страница – HTTP прокси.

Тут должно быть всё понятно:

Адрес сайта, порт, Имя пользователя и пароль (надеюсь, вам не нужно расписывать, что где находится? Если что – первое длинное поле ввода для сайта, второе для имени пользователя, третье дл пароля. А маленькое окошко с цифрами – порт. Не благодарите). Нам это не нужно просто потому что мы под VPN, но если вы вдруг решите

Теперь о второй странице. Тут всё немного сложнее.

  • 1 – Юзер агент браузера, с которого будут посещения. По сути ожно вписать любой другой, от гугла до сафари.
  • 2 – Потоки при сканировании, чем больше тем быстрее. Если выставить слишком много – скан будет идти медленнее, т.к. потоки просто забьют собой всё соединение
  • 3 – Тоже самое, но со ссылками
  • 4 – Расширение страниц, которые программа бдет сканировать науязвимости
  • 5 – по факту вы никогда не будете здесь ничего менять. Глубина сканирования и задержка между запросами в секундах
  • 6 – Уязвимости на предмет которых программа будет сканировать ссылки. Должно быть отмечено всё

Третья страница – антидтект.

Программа будет заменять в ссылках символы, чтобы автоматизированная защита сайта не обнаружила наши попытки найти уязвимость.

Четвёртая – словарь таблиц и столбцов баз данных. На всякий случай.

Пятая же – настройка XSS. Я ни разу не использовал эту функцию, поэтом ничего писать не буду, просто знайте что это такое.

И последняя, шестая страница – поиск CMS, или же просто админки.

Первый столбец – путь к странице входа.

Второй, соответственно, страница входа

Как я уже говорил, this AdminFinder sucks.

Соль-перец по вкусу, и программа готова к работе.

Вставляем адрес сайта с протоколом HTTP, и нажимаем на кнопушку сканирования, смотрим что из этого вышло. Правильно, программа начала работу. Составляет карту сайта (к слову, достаточно удобную, но не слишком продуманную), которую при желании можно изучить, выучить, и использовать в качестве ориентира в дикой местности. Конечно, иногда бывает интересно изучить строение сайта, но на практике это дерево редко бывает полезным, если честно. Панель входа легче искать через специальный софт, а кроме парочки интересных страниц редко удаётся что-то найти.

Теперь нам остаётся только ждать первых уязвимых ссылок.

Кстати, забыл рассказать о том, что существует две версии программы WebCruiser: Free и Enterprise. Кто-то говорит и про Personal Edition, но я никогда такого не видел, честно.

Если говорить о различиях двух основных версий – в бесплатной отсутствует половина функционала. Лично этого я не наблюдал, поэтому рассказываю байки. Я использую одну из самых древних версий этой программы просто потому что могу. На самом деле я не использую этого карлана просто потому что юзаю Netsparker, и обновлять шебкрузер просто нет смысла. К слову, если эта статья зайдёт – я распишу гайд по нетспаркеру, где мы вскроем другой государственный сайт. Вообще эту статью я пишу не в качестве мануала, а как разбор ситуации. Уж больно эта ситуация глупая, а молчать о таком я попросту не могу. Нет, вы только подумайте. За 2 года они не сочли нужным пофиксить эти дыры. На самом деле они некоторые лазейки закрыли спустя два или три месяца после нашего обращения. И то скорее всего потому что заметили в логах, как кто-то в наглую скачал конфиги с их сервера и решили закрыть доступ в эти директории. Собственно, больше ничего они сделать не удосужились. Ладно, это уже их проблемы, мы их предупреждали, они ничего не делали. Конечно, его это не особо-то и спасло, но попасть в него теперь немного сложнее, чем раньше. Вот там Администрация работает оперативно, и это ещё учитывая тот факт, что мы им ничего не сообщали, а просто свистнули юзеров. Причём закрыли они дыры основательно, должен я вам сказать. Вопрос: почему так? Ответ: ))))
Ладно, будем серьёзнее, мы ведь всё-таки делом заняты как-никак.

Сразу отвечу на вопрос сколько нам ждать. Желательно ждать, пока программа не закончит работу, но я обычно гашу потоки сразу, как наберётся достаточно потенциально уязвимых ссылок и вам делать так же советую. Долго сканить этим софтом резона нет, а выхлоп не покроет потраченного на скан время, и в итоге КПД будет не просто маленьким, а фактически отсутствовать. Но и спешить никуда не надо, вырубая софт после первой найденной ссылки, ведь как я уже говорил, есть сорока процентный шанс того, что это ложное срабатывание. Нужно выждать золотую середину по логам и уже тогда гасить. Можно и на паузу поставить, а можно и продолжать сканировать, проверяя ссылки по ходу их появления. Тут много вариантов стратегии и тактики проверки лога на валид, можете придумать свой, например, лечь спать и забыть про эту идею. Как я уже говорил, нам достаточно просто проверять ссылки по ходу их появления, этого будет более чем достаточно. Софт, которым мы будем проверять ссылки зависит от того, какую уязвимость WebCruiser найдёт. Помните, что вы всё ещё можете лечь спать. Посмотрим же, какой у нас результат!

И это только начало!
Нет, это не сбой программы, это правда кривой сайт с кучей дыр. Только вот есть один нюанс: ссылки уязвимые все, но нужно найти ту, которая будет работать нормально. Я уже вижу, как вы спрашиваете меня «Чё? В смысле? А с ними нельзя работать?». А я вам отвечу. Вернее, даже не просто отвечу, а расскажу и покажу почему. Выбор неправильной ссылки может привести к не самым приятным событиям. И нет, это е блок вашего IP адреса. Всё гораздо смешнее. Дело в том, что сайт мосгортранса имеет одну очень странную особенность. Это нельзя назвать защитой, просто потому что… Ладно, вы сами всё увидите.
Возьмём одну из выданных нам ссылок в логе шебкрузера. Первым делом взглянем на то, какую именно уязвимость нашёл наш софт. URL SQL INJECTION. Это значит, что получать доступ к баз данных мы будем через инъекцию. Очевидно. Теперь приступим к выбору программы, которую будем использовать для инъекции. Нет, конечно, мы можем сделать это и в ручную, но я не хочу, поэтому мы этот процесс автоматизируем.

Использовать мы будем не самый популярный софт (будто в этой статье есть хоть что-то популярное, кроме упоминания havij’a в разборе WebCruiser’a). Называется сие программа jSQL. Эта программа написана на Java, кстати. Если кому интересно – исходники есть на гитхабе (ron190/jsql-injection). Использовать мы будем версию 0,81. Можете скачать и более позднюю версию, но в статье я буду использовать именно её.
Прежде чем начать изучение второй программы, я дам вам немного теории касательно SQL инъекций. Если вы уже знаете что это такое и как работает – можете пролистать эту часть до следующей картинки, или же освежить в памяти эту тему, авось чего нового узнаете.

Я постараюсь объяснить на пальцах эту тему, чтобы понял даже самый отбитый чайник. SQL – это такой язык программирования, с помощью него создаются базы данных. Так же его применяют для их изменения и управления ими. Грубо говоря, базы данных общаются именно на нём. Этот язык очень сильно отличается от всех тебе известных. А отличается он тем, что в нём ты не пишешь, каким способом ты должен получить желаемый результат, а пишешь сразу, какой тебе результат нужен. SQL – декларативный язык, а с такими работать после обычных языков достаточно непривычно, а зачастую сложно. Если хочешь изучить работу баз данных – добро пожаловать в Access, а сейчас мы говорим о самом языке. Он появился ещё в восемьдесят шестом (1986) году, так что это чисто бумерская тема. О самом языке я много рассказывать не буду, этих фактов пока что будет достаточно для понимания «что же такое эта ваша сикуль инъекция».

SQL инъекция – это атака именно на базу данных, а не на сайт, как многие думают. Эту атаку применяют к сайтам, но сама она направлена только на базу сайта. Совершается она, опять же, направлением запроса на выполнение некого алгоритма, который не был предусмотрен создателями атакуемой базы. Приведу простой пример, который я где-то уже видел, но не помню где:
Мать оставила записку, чтобы муж перед уходом на работу отдал пятьдесят рублей их дочке Маше. Получился запрос: «Возьми 50 рублей и перед уходом передай Маше». Младший же брат, увидев несправедливость, решил дописать «, а Саше отдай 100». Т.е. он инъектировал свой «код» в мамин «запрос», и по итогу вышло: «Возьми 50 рублей и перед уходом передай Маше, а Саше отдай 100». Получился запрос, при исполнении которого младший брат получает желаемое и остаётся в плюсе. Так же работает и с SQL. У меня психологическая травма, полученная в ходе изучения этой темы, потому расскажу максимально кратко. Не основные, но одни из классических инъекций это:
!Attention! Nerd shit!

  • -Union
  • -Error-based
  • -Boolean
  • -Blind

Union

В этом варианте инъекция начинается с параметра UNION ALL SELECT.
Если подробнее, то команда UNION объединяет данные таблиц в одну большую. То есть при объединении двух строк с одинаковыми данными оператор UNION их слепит в одну. UNION ALL же в свою очередь так же объединяет всё в одно, но не объединяет одинаковые строки, а выводит всё, не «сливая» дубли воедино. Получается, что мы получаем командой SELECT все записи из базы, включая дубли. Но работает это только в том случае, когда сайт выполняет эту команду и напрямую даёт результат выполнения команды на атакуемую страницу. Это всё делается через цикл так, чтобы каждая, мать её, запись выводилась последовательно. Короче говоря: мы посылаем прямой запрос «дай» в цикле, и сайт нам прямо отвечает, выводя на страницу раз за разом всю базу.

Error-based

Вариант, где используется ошибка, что видно из названия. В этом случае добавляют в уязвимый параметр неправильное выражение, которое сайт не может обработать и выдаёт, соответственно, ошибку. После получения ответа об ошибки этот самый ответ тщательно изучается. В нём ищут DBMS ошибки, они же ошибки СУБД (ошибки системы управления базами данных). Есть шанс, что в этих ошибках будут находиться данные, ссылающие нас на нужный подзапрос. Обычно это работает в случаях, когда сайт показывает ошибки СУБД. Чаще же эти ошибки остаются внутренними и никак не афишируются, тогда этот способ атак невозможен

Boolean

Называю её «полуслепая». Суть этого способа заключается в следующем: посылается абсолютно верный запрос на получение данных (да-да, использование того самого SELECT). Мы получаем ответ, но сайт сам по себе не желает выдавать нам свои данные в открытом виде, поэтому чистых ответов с базой искать бесполезно. Тогда запросы продолжают приходить в базу, и с каждым запросом сравниваются header’ы и тело ответа с предыдущим. Проще говоря мы просто выуживаем из ответов отдельные символы. А затем, как мозаику складываем их в имя нужного нам SQL выражения. Нет, это не брут. Это скорее дедукция.

Blind

В отличии от булина (Boolean), это абсолютно слепая инъекция. Принцип действия очень схож с предыдущим. Всё так же посылают верный запрос, НО! Но в этом варианте развития событий запрос содержит в себе команду, которая на время останавливает работу СУБД. Конечно, он не навсегда останавливает её, достаточно просто нескольких секунд. Весь прикол в том, что в этом способе сравнивают время ответа на запрос с временем ответа на запрос с внедрённым в него кодом. Способ хоть и действенный, но в ручном исполнении очень сложный, поэтому в объяснениях я обычно стараюсь обходить его стороной

Уважаемые знатоки, если я где-то в пояснении обосрался – прошу понять и простить. Психологическая травма как-никак.

Теперь переходим к софту. Хоба!

Рассмотрим поподробнее верхнюю панель:

  • 1 – Сюда вставлять уязвимую ссылку
  • 2 – Сюда тыкать после ввода уязвимой ссылки в пункт 1
  • 3 – База данных, получаемая после нажатия на кнопу в пункте 2
  • 4 – Поиск папки с панелью администрации
  • 5 – Чтение файлов с сервера (удобная штука, кстати)
  • 6 – Веб консоль, штука прикольная. Но не пользуюсь
  • 7 – Создание оболочки для SQL консоли на сервере
  • 8 – Залив файлов на сайт (в то числе и шеллы)

Остальные функции я считаю бесполезными. Да их там всего штуки три осталось: брутфорс (крадётся), кодирование и Пакетное сканирование. Просто поверьте, они абсолютно бесполезны. Какой смысл от тогоже брутфорса, когда есть HashToolKit.com?

Нижняя панель:

  • 1 – Консоль с логом действий
  • 2 – Лог извлекаемых данных
  • 3 – Символы, извлекаемые при работе с boolean и blind инъекциями
  • 4 – Юрлы (страницы по-русски) с запросами. Полезно для изучения инъекций
  • 5 – Твоя оценка в школе

В принципе всё самое основное и важное уже рассмотрели, поэтому уже можем приступать к делу.

И сразу же хочу вам рассказать про «защиту» сайта, как и обещал.

А хотя нет, давайте я вам лучше покажу. На практике. Возьмём самую первую попавшуюся ссылку. Делается это следующим образом: ПКМ по ссылке -> [Copy URL To ClipBoard]:

Вставляем в строку jSQL, начинаем инъекцию. И что мы видим?

Проверим сайт:

Давайте попросим других посмотреть, что с сайтом?

Поздравляю, мы убили сайт. Случайно и в одно рыло. Без всякого доса-дудоса.

Ладно, посмеялись и хватит. Идём дальше.

Валидные для инжекта ссылки обычно имеют в себе путь: /career/vacancies/?cHash=[deleted]5D=*, пользуйтесь на здоровье.
Хорошо, возьмём одну из таких ссылок, и инжектнимся в неё:

Как мы можем видеть, инжект прошёл успешно, и мы получили две базы даных. Нас интерсует только вторая,по ней мы и будем работать. Первая – простая информация, и нам она не особо-то и нужна. Чтобы получить таблицы – просто клацаем по нужной нам базе. Мне выдало такой список:

Чтобы получить колонки – жамкаем по интересующей нас таблице. Как мы можем видеть – база с кричащим названием «mosgortrans». Справа в скобках написано количество элементов. В таблицах мы можем наблюдать всё тоже самое, но таблицы, в отличии от базы, показывают количество записей, а не элементов. А теперь я покажу вам парочку интересных таблиц

be_users — основные пользователи сайта.

Записей не так уж и много (ага, конечно), но я всё-таки покажу их. Даже замазывать ничего не буду, и так всё в хеше, лол. Итак, может лицезреть сие «чудо»:

Ах да, я ведь вам не рассказал, как доставать данные!
Чтобы это сделать – выделяем интересующие нас столбцы, жмём правой кнопкой мышки на таблицу, и нажать на «начать». Кто не может себе представить, как это сделать – покажу наглядно. Вот:

Теперь нам нужно подождать, пока софт выгрузит все нужные нам данные. Если же мы не хотим ждать, или же просто требуется посмотреть на то, что там лежит, не выливая из таблицы все строки – делаем тоже самое, что и несколько секунд назад. Правая кнопка мыши, «стоп». Что? Вы не знаете, где кнопка стоп? Хорошо, уговорили, вот она:

Так же стоит обратить внимание и на другую, не менее важную таблицу:

fe_users — администрация сайта, ну или типа того. Короче снова системные юзеры.
Опять же, «закодированы» хешем чудным и до сия момента неизвестным. Разбирать его, конечно же, не буду, оставлю эту работу вам. Если вы, конечно, будете за неё браться.

А теперь – самый сок.Самые интересные таблицы сайта, за исключением тех, которые мы уже успели изучить:

  • cache_typo3temp_log — лог-файлы загруженных файлов и путь к ним
  • index_stat_search — поисковые логи (в том числе и IP с куками)
  • sys_history — как я понял, это история изменений сайта
  • sys_log — полное логированрие всех действий на сайте (в том числе и просто посещение сайта)
  • tx_devlog — лог разработки и дополнений
  • tx_ms1newssubs_emails — Подписки на новостные рассылки
  • tx_msdmmjobcontrol_employers — контроль
  • tx_msusable_fh_custom_log — письма людей
  • tx_pbsurvey_results — тут можно выловить IP юзеров
  • tx_realurl_errorlog — лог ошибок

Давайте же разберём самые интересные.
Для начала посмотрим на содержимое таблицы «sys_log»:

Выгружать через jSQL очень долго, вы просто посмотрите на количество записей!
Поэтому я буду использовать другой софт. Мы выбрали именно jSQL потому что он выгружает инфу быстрее всех, но не в случае, если нам «только посмотреть» на малую часть огромных записей. Тот же Havij очень долго грузит инфу, но делает это более визуально, нежели выбранная нами программка. Давайте я сэкономлю ваше время и воспользуюсь Havij’ем:

В древних свитках сказано, что здесь можно обнаружить айпишники самих разработчиков!
Вообще круто, что каждое наше действие на сайте логируется. Хохотач! Давайте поставим класс разработчикам за такую классную идею! Тотальный контроль на дырявом сайте! Прямо как у нас с интернетом: вся преступность у власти, а ищут среди народа (простите). На деле же это может быть довольно полезными данными. Вообще в этой таблице много интересного, но не такого смешного, как в следующей.

Готовьтесь, сейчас я вам покажу самые угарные данные, которые только можно было откопать на государственном сайте! Встречайте! «tx_msusable_fh_custom_log»!
Да, сейчас мы с вами будем читать письма. Я специально отобрал самые угарные письма. Когда мы в первый раз их увидели – смеялись ещё больше, чем я, когда делал мемы для этой статьи (а я очень сильно и долго смеялся). И сразу вкину скрин, а то мне и правда не поверят. К слову, я попробую деанонимизировать людей, которые всё это пишут. Не ну а что? Самое сложное позади, можно и поугарать малёха. И сразу скриншот, а то не поверите:

Пишет Демидова Диана Вячеславовна АКА «Порнокастинг»
+7(985) 180-91-26 (miacampbell@list.ru):

-Я уже составила меню…я же не Андрей губин не нужен его бубен..а вы мне еще попку и звезду поцелуйте гаремом
-Нам не надо толстые пощие булочки Вы будете мои заложником…
-А потом сзади подходит(глубоко) где утащил?в подъезде
-Где член терла стенками?а потом влюбила(Вот трется) Трется теплая Пожизненный брак Трезвая москва
-А потом тоже могу придумать вылезай медленно сначало из машины потом там Я точно помню(уздечка нравится конюшня нет конечно)А потом заела у потного вашего
-А потом нам одним не делать или умрем все…
-Начальство(с моим расписанием квартиру получите через пять лет(Нам только отличники будут и армия и девушки Другого института долго искать…
-А тоже могу придумать сама повар нам не надо тоже отравить пришли(А потом принесли копейки за спиной деревья украсть(А вы кафе откройте я сама удочку принесу(рыбу ловить и информацию) а другие мясо и фрукты и деревья вернутся пусть)Я меню покажу вам тоже
-не обойдемся без суда (сами знаем как владеть лучше) А другой будет толкать я его крапиву сама могу кушать и с горочки кататься Деревню затопила без суда и следствия(пусть сами делают себе сами)А потом другого тоже видела дерется не обойдемся без суда Пусть идет на x cвой сам…
-Вот ваши мальчик волосяный нарк, пойду к другому любовнику (другой лучше)А потом тоже могу знать, у владельца видела своего: пенисного как дальше жить и cтроить Еще раз подойдет ваш наркоша
-А потом мне не нужны толкаются мальчики я няней не нанималась(позвоню знакомым тоже) А что мне надо я любовника влюбляю красиво(очень трудолюбиво) вхожу в его жизнь и изобретателем быть надо(верни обратно очень наглые распоряжаться моим огородом и судьбой…
-Нам не надо потом вместо аромы ядовитые привезли и еще надо денег за это заплатить Вот сучка вообще (нам не надо тоже спирт для медицины литрами пошли пить А потом вместо человека кукла и вместо цветов камни везде

-Нам не надо тоже нарконтроль не остановил его машину А потом нам не надо кормила ее ручки и остальное А вы мне лучше трезвую Москву верните(Товара не получали)А потом нам не надо газ его кормим в каждой квартире одна кухня легче убирается…верните мне вожатую лучше

Какая грустная история…

К слову, я вскрыл её почтовый ящик пока писал эту статью. Такое себе, на самом деле, думал узнаю причину этих сообщений. Кому интересно – её пароль qwertyuio (уже невалид, сменила. А значит, что аккаунт действительно её).


Так, ладно, хватит с меня на сегодня. Всё, что я выпилил с сайта на поржать можете найти вы сами. А может даже и больше, чем я

Кстати, в этой базе обращений тридцать пять тысяч (35000) ящиков. Будет из чего составлять базу.
В принципе тут достаточно много полезностей и интересностей. Так же я приложу к статье слитые нами в далёком две тысячи восемнадцатом (2018) файлы. Сейчас это, как я уже говорил, давно пофиксили.

Теперь поговорим о том, что мы с этого всего можем получить и каким именно образом эксплуатировать. В базе с обращениями около тридцати пяти тысяч почтовых ящиков (на самом деле даже немного больше, где-то 36к). Отличная спам-база, а то и для составления приватной брут-базы для последующей продажи сгодится. А ещё я немного удивлён базой tx_ms1newssubs_emails, просто потому что ну реально, кому интересно следить за трамваями? Ещё круче тот факт, что на новости подписаны и внутренние мыла @mosgortrans.ru. Ну, это, безусловно, круто, ничего не скажешь. Молодцы ребята. Умеют, практикуют. Но вот вопрос – ЗАЧЕМ??? Нет, серьёзно, для чего?

Это единственная (и неповторимая) запись в этой таблице. Ну, там ещё есть время создания и какая-то дичь. Самое интересное, как мне кажется, я показал, часть вкусностей оставил вам на изучение.

И это далеко не конец. Мемов больше не будет, не в тему, всё слишком грустно. Я не буду бить тревогу, но это и правда серьёзная тема для рассуждений.

Государство, не жалейте на админов.


Надеюсь, статья была полезной, спасибо за прочтение. Всем добра, берегите себя!

Вас ебали, ебут и будут ебать. Государство, хакеры, чиновники.

Остановить эту свингер-пати невозможно. Но я научу предохраняться. Я покажу и расскажу вам то о чём не пишет журнал “Хакер” и не рассказывают или просто не знают другие каналы. Здесь ты найдешь подборку лучших статей и видеоматериалов на тему кибербезопасности. Все, от аудита Wi-Fi до вскрытия автомобилей (если вы потеряли ключи). А также горячие новости с авторскими коментариями.

Обо всем этом вам расскажу только я на канале телеграм @cybersecs или на сайте cybersec.org.