- Этичный хакинг с Михаилом Тарасовым (Timcore)
- #42 Kali Linux для начинающих. Взламываем базу данных. Атаки на пароли.
- Взламываем сайты с помощью SQLMAP на Kali Linux
- Поиск уязвимых скриптов. Google dorks.
- Получение структуры баз данных сайтов. SQLMAP.
- Поиск админки сайта: CMS, интуиция, или dirbuster?
- Итоги. Черное на белом.
Этичный хакинг с Михаилом Тарасовым (Timcore)
Блог об Этичном Хакинге
#42 Kali Linux для начинающих. Взламываем базу данных. Атаки на пароли.
Давайте рассмотрим еще один способ, как взломать нашу цель. В этом уроке мы будем атаковать сервис базы данных.
Посмотрим на результат сканирования «nmap», а именно нас интересует порт 3306, который используется сервисом «mysql». Это сервис базы данных, и, как Вы знаете, он содержит множество чувствительной информации, такую как имена пользователей, пароли, и т.д.
Нам нужно подключиться к этой базе данных, но у меня нет соответствующего логина и пароля, но я попробую подобрать их с помощью инструмента sqldict. Это сокращение от sql dictionary.
Данный инструмент не стоял у меня в системе, поэтому нужно установить его с помощью команды: «apt-get install sqldict»:
С помощью sqldict можно производить подбор паролей, и данный процесс называется «атака по словарю». Другими словами, я создам список возможных паролей. При первом запуске sqldict в терминале мы видим ошибку, так как нужно сперва выполнить установку «wine32»:
Wine32 – это программа на Kali и других дистрибутивах Linux, которая позволяет запускать программы на Windows в линукс системах. В Windows программа имеет расширение «.exe». Это исполняемые файлы, и они созданы для работы в Windows.
В отобразившейся информации при запуске в терминале нашего инструмента есть команда для установки wine32. Она выглядит как: «dpkg —add-architecture i386 && apt update && apt -y install wine32»:
Данная программа будет загружаться какое-то время, поэтому мы опустим данный процесс для загрузки в систему.
Рассмотрим еще один инструмент, который можно использовать для достижения той же самой цели. Его можно найти в разделе «Passwords Attacks», и он называется «wordlists»:
В разделе «Атаки на пароли» существует несколько инструментов для проведения подобных атак, но нас интересуют простые атаки, т.е. атаки на онлайн сервисы. Ранее мы уже атаковали запущенные сервисы SSH и FTP. Как правило, для этих сервисов существует подбор имени пользователя и пароль. И если мы атакуем работающий сервис, для попытки подобрать имя пользователя и пароль, то такая атака называется онлайн-атака на пароли. И сейчас нашей целью будет mysql, который работает на атакуемой машине. Нам нужно подобрать имя пользователя и пароль. Это называется онлайн-атака на пароли. Далее я хочу показать Вам директорию «worldlists». Нас интересует словарь «rockyou.txt»:
Далее нам нужно распаковать текстовый файл rockyou.txt.gz с помощью команды gunzip rockyou.txt.gz:
Давайте воспользуемся этим файлом, и скопируем путь к нему, так как он в дальнейшем нам понадобится.
Сразу хотелось бы отметить, что при работе с инструментами, некоторые из них не будут работать в штатном режиме. Тогда нужно переходить к следующему, и не зацикливаться только на одном. Я постоянно это повторяю, и это очень важно понимать.
Также в этом уроке я буду использовать инструмент «Hydra»:
Для того, чтобы подобрать пароль, мне нужен словарь или список слов для атаки. В интернете я нашел список самых худших паролей всех времен:
Скопируем первые 50 паролей:
С помощью текстового редактора nano создаем файл «temp»:
Обратите внимание на то, что все области, которые выделены в розовый цвет являются разделителями, при помощи табуляции. Имейте ввиду, что таком формате файл бесполезен. Нам нужно создать последовательный список из всех этих слов. Мы воспользуемся командами, которые изучили в предыдущих уроках.
Введем команду cat в терминале:
Нам нужно привести этот файл в порядок. Команда будет выглядеть как: «cat temp | cut –d$’\t’ –f 2».
Значок $ используется для того, чтобы вырезать только текст. Можно загуглить данную команду, и Вы быстро разберетесь, как все работает. Просто помните, что после разделителя «Tab», необходимо указать значок доллара, затем добавить –f 2 (второе поле):
И, как видим, у нас появился список всех возможных паролей, которые были скопированы. Разумеется, весь этот вывод на экране нужно сохранить в отдельный файл. Команда будет выглядеть как: «cat temp | cut –d$’\t’ –f 2 > worst-50»:
worst-50″ srcset=»https://timcore.ru/wp-content/uploads/2021/04/screenshot_14-6.png 805w, https://timcore.ru/wp-content/uploads/2021/04/screenshot_14-6-300×244.png 300w, https://timcore.ru/wp-content/uploads/2021/04/screenshot_14-6-768×625.png 768w» sizes=»(max-width: 805px) 100vw, 805px»/>
Обратите внимание на то, что я указал файл worst-50 без какого-либо расширения. На самом деле в линуксе можно не указывать расширение, так как файлы являются текстовыми по-умолчанию, и можно прочесть их содержимое.
Давайте внесем последние правки в наш словарь:
Нам нужно удалить строку top, так как она нам не нужна. Жмем горячую клавишу Ctrl+K для удаления первой строки, а перейдя на последнюю жмем «Enter», что будет являться пустой строкой:
Пустая строка будет выполняться, если кто-то будет использовать какой-либо логин и пустой пароль.
Давайте вернемся к инструменту «Hydra», и можем воспользоваться примером, который нам указывают разработчики:
На самом деле половина успеха будет заключаться в правильном использовании имени пользователя. Если у нас нет правильного имени пользователя, то будет проблематично с авторизацией.
Команда для перебора по словарю будет выглядеть следующим образом:
«hydra –l root –P worst-50 mysql://192.168.119.130»:
Hydra сработала практически сразу и был подобран один пароль. Также можем видеть 51 попытку подбора пароля. Обратите внимание, что здесь не указан подобранный пароль, а это значит, что пароль был пустым.
Теперь у нас есть имя пользователя и пароль, для авторизации в базе данных mysql. В случае с FTP, для авторизации нам нужен был FTP-клиент (например, FileZilla). Чтобы пройти SSH-авторизацию, нам нужен был SSH-клиент, а на Windows мы использовали Putty. На Linux – SSH-клиент. В случае с авторизацией в MySQL, нам нужен MySQL-клиент. Для подключения к базе данных нам нужно ввести в терминале следующую команду: «mysql –u root –p –h 192.168.119.130», где опция –u – это имя пользователя, —p – порт, —h – айпи-адрес:
MySQL просит ввести пароль. Мы просто оставляем пустым и жмем «Enter».
Обратите внимание, что консоль изменилась, и мы взаимодействуем с базой данных.
Если Вы никогда не сталкивались с базой данных SQL, то можно использовать графические клиенты, которые выглядят нагляднее, чем то, что мы используем сейчас.
Мы разберем простые команды, которые можно использовать. Давайте посмотрим какие базы данных есть на этом MySQL сервере. Их может быть несколько, и для этого выполним простую команду «show databases;»:
Не забудьте в конце записи ввести точку с запятой, так как это является концом команды. Таков синтаксис SQL-запросов.
Как видим, существует несколько баз данных. Начнем с базы «dvwa». Обратите внимание что «information_schema» — это база данных баз данных, так как она содержит информацию об остальных базах данных.
Чтобы открыть «dvwa», просто пишем команду «use dvwa;»:
Нам нужно просмотреть таблицы этой базы данных. Для этого пишем команду: «show tables;»:
Как видим, существует две таблицы «guestbook» и «users».
Нас будет интересовать таблица «users», так как в ней могут содержаться имена пользователей и пароли. Команда выглядит как: «select * from users;»:
В данной таблице содержатся id пользователей, имена, логины, пароли, аватары. Именно так выглядят украденные учетные данные.
Те, кто интересуется информационной безопасностью часто слышат о том, что хакеры то и дело сливают информацию из баз данных самых разных сайтов, компаний и т.д.
Обратите внимание, что выведенные пароли не похожи на обычные пароли, и если присмотреться, то у них одинаковая длина. Это хэши паролей. Иными словами, мы не сможем просто авторизироваться в системе с такими паролями, потому что это не сами пароли, а их скрытое значение.
Очень часто злоумышленники пытаются взломать данные пароли, т.е. расшифровать их. Не волнуйтесь, что какая-то информация непонятна. Мы еще поговорим об этом. Сейчас для нас актуально то, что мы авторизировались в базе данных нашли некоторую информацию с данного сервиса.
Так что же делать дальше? Вспомним, что я говорил то, что если у Вас есть имена пользователей – это половину успеха, и для взлома этих пользователей нам понадобится пароли. Можно подобрать пароли этих пользователей с помощью гидры или подобного инструмента. Можно также поискать в интернете расшифрованные хэши, которые мы нашли в базе данных. Возможно, кто-то до Вас уже делал подобное и выложил в сети данную информацию.
Погуглить найденные хэши.
Использовать инструменты Kali Linux для взлома хэшей, к примеру, John the Ripper.
Источник
Взламываем сайты с помощью SQLMAP на Kali Linux
May 22, 2018 · 6 min read
В этой статье, исключительно в ознакомительных целях, я опишу основные моменты поиска, и эксплуатации sql-инъекции на сайтах. В процессе прочтения этого материала, мы получим полноценный доступ к случайному сайту.
P.S.: в ходе создания материала, ни один сайт не пострадал.
Для этого нам понадобятся всего четыре утилиты: собственно sqlmap, dirbuster, и tor с privoxy.
Первые две программы входят в дистрибутив kali по умолчанию. Устанавливаем и запускаем сервис тора:
Аналогично устанавливаем и privoxy, но пока не будем его запускать, он нам может и не пригодиться:
Поиск уязвимых скриптов. Google dorks.
Очередь за гугл-д о рками. Для тех, кто не в курсе — некоторыми запросами в гугл, можно облегчить поиск уязвимого ресурса. Это называется “дорк”. Для примера, возьмём запрос:
Открываем любезно выданные гуглом линки потенциально уязвимых сайтов, и в адресной строке браузера, после цифр, ставим одинарную ковычку:
И ищем сайт, скрипт на котором выдаст ошибку подобного вида:
Конечно, можно обойтись и без этого, sqlmap анализирует далеко не только подобные уязвимости в скриптах, но этот шаг многократно увеличивает наши шансы на успех.
Получение структуры баз данных сайтов. SQLMAP.
Переходим непосредственно к процессу эксплуатации инъекции на обнаруженном нами сайте. В работе с sqlmap есть достаточно много различных ньансов, и разберём мы базовые. Открываем терминал. Внимание, у вас должен быть активен сервис тора. Либо во втором терминале, либо через запуск приложения.
где -u задаёт целевой адрес (вводится обязательно с протоколом http/https);
— dbs параметр для получения имён баз данных, найденных в случае успешной эксплуатации;
— tor запустит соединение через тор, — check-tor отобразит успешность подключения к сети тор;
— random-agent позволит утилите использовать случайный http-заголовок для передачи серверу, что не даст идентифицировать sqlmap;
ключ -o задействует оптимизацию процесса, что наверняка пригодится во многих случаях — например, при слепой инъекции.
Sqlmap отдал нам две таблицы на выбор. В базе information_schema нет ничего интересного, это стандартная база mysql, поэтому мы перейдём к анализу “z108098_main”:
Тут мы исключили параметр — dbs, и вместо него используем — tables. Так же, добавился новый ключ -D, который задаёт имя сканируемой базы. Этот запрос выдаст нам все таблицы базы “z108098_main”. В итоге мы получаем:
И сразу же мы наблюдаем таблицу “_admins”. Очевидно, что нам необходимо получить её. Получаем названия столбцов базы:
Добавился ключ -T, который задаёт имя сканируемой таблицы. Вместо параметра — tables, теперь используется параметр — columns. Результат не заставил себя долго ждать, хоть инъекция и была слепой в моём случае — в этом мне помог ключ -o, который использовал 10 потоков для перебора вариаций:
Теперь читаем данные из таблицы, и сохраняем её на свой жёсткий диск:
Параметр — columns мы заменили на — dump, который выдаст все строки таблицы, а так же сохранит оную на наш жёсткий диск. В итоге, получаем заветный логин и хеш пароля, для админки сайта:
Полученный хеш вы можете просто загуглить, в большинстве случаев он уже расшифрован, и выдастся первой же строкой. Если же это не сработает, придётся делать брутфорс хеша, но это уже отдельная тема, которую разбирать в рамках этой статьи мы не станем.
Поиск админки сайта: CMS, интуиция, или dirbuster?
Зачастую, поиск админки сайта создаёт проблему. Пока выполняются запросы от sqlmap, можно заняться этим.
В первую очередь, мы идём на 2ip.ru/cms, вводим имя сайта, и ожидаем завершения сканирования на популярные cms.
Если сканером обнаруживается cms, то гуглим расположение админки в них, и пробуем зайти по дефолтным адресам.
Но иногда хитрые админы либо меняют дефолтный адрес, либо используют собственную cms, как и произошло в моём случае.
Если так оно и есть, то попробуем посмотреть файл robots.txt, иногда админку можно выловить тут:
Если файл отсутствует, или там ничего нужного нам нет, то пробуем стандартные варианты вручную.
И тут успех, на втором же линке я получил форму авторизации:
Но этот способ может и не сработать и, вероятнее всего, не сработает. Для таких случаев есть мощное оружие — durbuster, который перебором по словарю выявит всевозможные скрипты сайта.
Наша первая задача — пропустить трафик от durbuster’a через tor. Для этих целей нам понадобится запустить privoxy.
Предварительно, настроим конфиг privoxy, что бы весь трафик пропускался через тор:
Добавляем строку в конец конфига. Внимание, точка в конце обязательна!
Сохраняем изменения, закрываем файл, и запускаем, собственно, privoxy:
Теперь открываем dirbuster — либо через терминал, либо выбираем его из списка Приложения > 03 — Web Application Analysis > Web Crawlers & Directory Bruteforce > dirbuster.
В самой программе, переходим в Options > Advanced Options > Http Options, и приводим настройки в соответствии со скриншотом:
Нажимаем ок, и переходим к самой программе. Необходимо выбрать словарик для брутфорса. По умолчанию, в комплекте с программой в kali есть словари. Расположены они по адресу /usr/share/dirbuster/wordlists. Лично я предпочитаю использовать маленький словарик directory-list-2.3-small.txt.
В «Target URL» сверху вписываем адрес нашего сайта, и нажимаем старт. Процесс пошёл.
Итоги. Черное на белом.
В процессе написания статьи, я понял несколько вещей. Конечно, все то же самое можно сделать не только из-под kali, да и не только под линуксом (piton as example). Но не хочу повышать порог вхождения в тему. Именно поэтому, кейс сформирован под kali linux.
Использовать любую уязвимость можно в различных целях. Я бы хотел предостеречь тебя, читатель, от поспешных и рискованных выводов и затей, в т.ч. от использования этого материала в незаконных целях. И да, за легальные пентесты весьма неплохо платят. 😉
Источник