Путешествие в Onionland: взлом скрытого сервиса из даркнета в задании NeoQUEST-2016

в 8:00, , рубрики: neoquest, neoquest2016, Tor, Блог компании НеоБИТ, Занимательные задачки, информационная безопасность

Путешествие в Onionland: взлом скрытого сервиса из даркнета в задании NeoQUEST-2016 - 1 Пока продолжается регистрация на питерскую «очную ставку» NeoQUEST-2016, посетить которую может любой желающий, мы продолжаем разбирать задания online-этапа.

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

  • поиск уязвимости «вручную»;
  • настройка сканера веб-уязвимостей для работы с .onion-сайтами.

Разбор обоих способов — под катом!

Исходные данные

Участникам был дан адрес сайта cx7b2vy6foxjlzsh.onion и имя пользователя randomradon, чей пароль необходимо было достать.

Псевдо-домен верхнего уровня .onion указывает на то, что сайт находится в сети Tor. Для входа на такой сайт нужно использовать либо Tor Browser, либо сервисы вроде tor2web или onion.city. Так или иначе, попав на сайт, можно увидеть вот такую картину:

Путешествие в Onionland: взлом скрытого сервиса из даркнета в задании NeoQUEST-2016 - 2

Тут мнения участников о том, что делать дальше, расходились. Кто-то искал уязвимость «вручную», кто-то использовал сканер веб-уязвимостей для работы с .onion-сайтами. Рассмотрим оба пути.

Способ 1 — ищем уязвимость «вручную»

Просмотр сайта не дает ничего интересного, кроме многочисленных указаний на то, что сайт находится в разработке. Это намекает на возможное наличие отладочных страниц. И действительно, попробовав различные стандартные названия, можно найти страницу test.html с какими-то формами.

Путешествие в Onionland: взлом скрытого сервиса из даркнета в задании NeoQUEST-2016 - 3

Последняя форма отправляет запрос на сервер и содержит SQL-инъекцию (это можно обнаружить, например, оставив пустым поле ввода при отправке формы).

Путешествие в Onionland: взлом скрытого сервиса из даркнета в задании NeoQUEST-2016 - 4

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

0 AND 1=0 UNION SELECT 1; --

Следующим шагом является извлечение имеющихся баз данных. Очевидно, запрос вроде такого:

0 AND 1=0 UNION SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 1 OFFSET 0; --

не может извлечь названия, так как он возвращает хэш названия БД, а не само название. Это можно обойти, доставая названия по буквам с помощью функции SUBSTR() и определяя извлеченную букву по хэшу:

0 AND 1=0 UNION SELECT SUBSTR(SCHEMA_NAME, 1, 1) FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 1 OFFSET 0; --

В базе данных находится три схемы:

  • information_schema
  • test
  • torsite

Далее с помощью запросов вида

0 AND 1=0 UNION SELECT SUBSTR(TABLE_NAME, 1, 1) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA="TORSITE" LIMIT 1 OFFSET 0; --

можно получить таблицы в torsite (test была пустой):

  • key
  • message
  • user

Затем аналогичным образом можно получить поля таблиц, увидеть, что пароли хранятся в таблице user, достать оттуда пароль пользователя randomradon (хранящийся в виде хэша) и обратить хэш (например, с помощью онлайн-сервисов или радужных таблиц).

Способ 2 — используем сканеры

Простейший способ найти уязвимость в сайте – воспользоваться сканером уязвимостей! А вот настроить сканер для работы со скрытыми сервисами Tor – не такая простая задача. Основная проблема состоит в том, что многие сканеры опираются на IP-адрес сайта. В сети Tor IP-адреса не используются, и сканеры работают некорректно.

Популярный сканер Nmap может быть настроен для работы в даркнете Tor. Для этого нужно сделать следующее:

  1. Скачать и установить специальную версию nmap-nseportscan-socks4a
  2. Добавить в файл hosts запись «127.0.0.1 cx7b2vy6foxjlzsh.onion», это позволяет избежать ошибки разрешения имени cx7b2vy6foxjlzsh.onion
  3. Скачать и запустить Tor
  4. Запустить nmap с правами root, используя следующие параметры:

sudo ./nmap -sK --script connectscan, <список скриптов> --proxy socks4a://127.0.0.1:9050 cx7b2vy6foxjlzsh.onion –F

Nmap не находит уязвимостей, зато обнаруживает потенциально интересную тестовую страницу:

Путешествие в Onionland: взлом скрытого сервиса из даркнета в задании NeoQUEST-2016 - 5

Изучив код страницы, в одном из скриптов можно найти запрос, который «упускает» Nmap:

Путешествие в Onionland: взлом скрытого сервиса из даркнета в задании NeoQUEST-2016 - 6

Для исследования отдельного запроса удобнее использовать Sqlmap. Этот инструмент поддерживает работу с .onion-сайтами, никакая специальная настройка не нужна, запуск осуществляется командой:

python sqlmap.py -u «cx7b2vy6foxjlzsh.onion/qwertyqwerty.php» --data=«id=1» --tor --tor-port=9050 --tor-type=SOCKS5

Sqlmap обнаруживает SQLi уязвимость:

Путешествие в Onionland: взлом скрытого сервиса из даркнета в задании NeoQUEST-2016 - 7

Далее при помощи Sqlmap можно вытащить всю необходимую информацию о базе данных:

Путешествие в Onionland: взлом скрытого сервиса из даркнета в задании NeoQUEST-2016 - 8

Sqlmap получает данные несмотря на то, что они возвращаются в виде хэша. Невозможность прямого получения данных обходится с помощью техник Time-based blind SQLi и Boolean-based blind SQLi. Обе техники извлекают информацию посимвольно, значение символа находится бинарным поиском: каждым запросом очередной символ сравнивается с некоторым числом.

При использовании первой техники в запрос вставляется SLEEP() в случае выполнения условия; по времени, за которое приходит ответ на запрос, Sqlmap понимает, выполнилось условие или нет. При использовании второй техники Sqlmap сравнивает результат выполнения запроса с некоторым заранее полученным шаблоном и на основе этого определяет, было ли выполнено условие.

Time-based blind SQLi не подходит для использования в сети Tor из-за больших (и зачастую случайных) задержек; зато Boolean-based blind SQLi вполне работает. Символ за символом, Sqlmap «высасывает» базу данных.

To be continued

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

Все меньше заданий online-этапа остается разобрать, и все меньше остается времени до «очной ставки», в программе которой — множество докладов на самые разнообразные темы! Мы поговорим о безопасности Intel ME, о том, как найти ботов в социальных сетях, расскажем о незащищенности публичных беспроводных сетей, «залезем» в процессор, обсуждая Intel SGX и Intel MPX, расскажем, какие опасности поджидают «модников» — пользователей всевозможных «умных» гаджетов, и многое многое другое!

Автор: НеоБИТ

Источник

Поделиться новостью

* - обязательные к заполнению поля