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

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

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

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


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

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


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

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

63e6dbc08e6a4ca580d2e1a3d14c8bac.PNG

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

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


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

adda811edd0b4039acb5701a93c1719d.PNG

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

b4c9384f7a04405d8c2b5c1ac853a541.PNG

Дальше нужно понять, что же возвращает сервер. Простейший запрос показывает, что возвращается 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 не находит уязвимостей, зато обнаруживает потенциально интересную тестовую страницу:

d41fc32b47574204acf32671efd10c9d.png

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

fe818a6d9f1649a499cf2259d629bed4.png

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

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

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

13d0ef18f09f42ce83dfe44053706f5a.PNG

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

21defbe009ab4efea3b3d8b3bcd1a633.PNG

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, расскажем, какие опасности поджидают «модников» — пользователей всевозможных «умных» гаджетов, и многое многое другое!

© Habrahabr.ru