Содержание статьи
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Первым делом я заношу IP машины (10.10.10.212) в файл /
и даю ей более удобный адрес bucket.
.
Затем переходим к сканированию портов. Я запускаю скрипт, который уже не раз описывал, и сканирую порты в два прохода (второй раз — со скриптами по найденным в первый раз портам).
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)nmap -p$ports -A $1
По результатам имеем два открытых порта: 22-й (служба SSH) и 80-й (веб‑сервер Apache). На SSH пока стучаться рано, поскольку у нас нет учетных данных. Гораздо перспективнее будет изучить веб‑сервер. Внимательно осмотримся на сайте, так как, помимо точек входа и разных уязвимостей, следует собирать и другую важную информацию, например имена пользователей, применяемые технологии и прочие вещи, которые могут пригодиться в дальнейшем. Сам сайт на первый взгляд кажется простеньким, и на первой же странице отметим доменное имя bucket.
(с которым мы и так уже работаем), а также аккаунт техподдержки support@bucket.htb.
Заглядываем в исходный код страницы и видим примечательную особенность — использованы теги для вставки изображений. Файлы с картинками загружаются с другого домена — s3.
.
Значит, на веб‑сервере есть виртуальный хост s3.
и, если мы хотим с ним работать, надо добавить и его в файл /
. Сразу же можем проверить, что там.
Вместо HTML с него возвращается статус выполнения, а значит, используется какая‑то служебная технология (из названия поддомена пока что стараемся не делать быстрых выводов).
Сканирование веб-страниц
Одно из первых действий при тестировании веб‑приложений — это сканирование сайта на наличие интересных каталогов и файлов. Особенно это полезно, когда натыкаешься на тупик, подобный тому, в котором мы оказались. Для сканирования можно применять широко известные программы dirsearch и DIRB, но я обычно пользуюсь более быстрым gobuster. При запуске используем следующие параметры:
-
dir
— сканирование директорий и файлов; -
-t [
— количество потоков;] -
-u [
— URL-адрес для сканирования;] -
-w [
— словарь для перебора;] -
--timeout [
— время ожидания ответа.]
gobuster dir -t 128 -u http://s3.bucket.htb -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt --timeout 30s
Находим всего два интересных каталога. При обращении к первому снова получим ответ со статусом. Кстати, чтобы копаться в JSON, можно прямо в терминале использовать утилиту jq
, передавая ей ответ на запрос.
curl http://s3.bucket.htb/health | jq
Обращаясь к каталогу shell
, получим редирект на другой адрес:
http://444af250749d:4566/shell/
Если открыть его в браузере, можно увидеть, что это Amazon S3. Что ж, теперь никаких сомнений!
Точка входа
Amazon S3
Amazon Simple Storage Service (или S3) — это сервис для хранения объектов, полезный, когда нужно легко масштабирующееся хранилище. Его часто применяют, чтобы хранить статическую часть сайтов, ресурсы мобильных приложений, а также для хранения бэкапов и прочих подобных нужд. Также у Amazon есть своя СУБД класса NoSQL, которая хранит данные в формате «ключ — значение», она называется DynamoDB.
Наша цель — получить доступ к хранимым данным, поскольку они явно важны для прохождения машины. По S3 есть официальная документация. Ознакомившись с ней, ставим набор утилит AWS Command Line и настраиваем доступ к хранилищу.
sudo apt install awscli
aws configure
Разберемся с заданными параметрами.
- AWS Access Key ID и AWS Secret Access Key — идентификатор ключа доступа и сам секретный ключ доступа. Используются для подписи программных запросов, которые мы отправляем в AWS. Создать такой ключ можно здесь, но, так как он используется только для подписи запросов, я просто взял ID и ключ, представленные в документации.
- Default region name — регион AWS, серверы которого использовать по умолчанию. Обычно это ближайший к тебе регион, но, поскольку он может быть любым, я вставил значение из документации.
- Default output format — формат, в котором будет предоставлен результат запроса: JSON, YAML, text, table. Так как с помощью
jq
удобно читать JSON, выбираем его.
Теперь, когда заданы основные параметры для работы с AWS, мы можем выполнять запросы к базе DynamoDB. Как и при работе с любой базой, первым делом просмотрим, есть ли доступные таблицы. В запросе используем следующие параметры:
-
dynamodb
— указываем в качестве службы DynamoDB; -
list-table
— для получения списка таблиц; -
--endpoint-url
— URL для доступа к S3; -
--no-sign-request
— не подписывать запрос.
aws dynamodb list-tables --endpoint-url http://s3.bucket.htb/ --no-sign-request | jq
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»