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

BDFINFO2.0
Оффлайн
Регистрация
14.05.16
Сообщения
11.398
Реакции
501
Репутация
0
tnuraujv3xylqfewfhzwbmxtzvo.png


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

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

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

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

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

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

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

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

1gjxpihfww0bs1nqvnyru92j63m.png


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


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

qjz-fyh-kpcpeao7rnp2ng4nhx8.png


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

43_hvb9f32536kr8aextoegayvy.png


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

8jc9tv_ac3gramgoi3ulyt-d8wa.png


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

htbubrreqhyyfznd6jmkqomlb6o.png


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

err5bd83_drspuuoeaxnf3aerny.png


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

7axshiduwgbcxafhc_9vitns2jc.png


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


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

c5oac6gb0zrqumwhdmg2odwwyp8.png


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

hhzwxvxsdcef8ygyq7fyyq3fbss.png


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

kkm2lezd1u0wy8zh7kse-ggd9di.png


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

u9aytwx0ehovprcb4ya8l2asp6m.png


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

xoikoawahs9poybqvx9zqevw1ye.png


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

-fldqcixmbpqgfduemzv1asojqu.png


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

xozjoroqcfj5nu4i1hwjpff0mbm.png


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

USER


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

rst0xxncmbvp-ticftbuzqewzhm.png


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

1spp_snyh6k1f3jnk5ed2u1rubk.png


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

tj1yotu9xuqzcvelsma-wt25loy.png


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

nepnqndfcgy5it22pkxctw7vwl4.png


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

daizschi7ytyu_g_kucrowugans.png


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

g2fpn_5ht2hn0yvdv3nbidcfr-0.png


ROOT


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

t7tzqqetm7uv1woym14cseh_l1u.png


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

kslbzvu5aohp3zde6pdy8dtdd1c.png


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

r0ezn1-hrkrn_s-krocetjus0ic.png


wfsalmazisw-x5sbtr2nihqh15g.png


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

w4ixbghllaiz_gesgxwiomfddmc.png


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

#!/usr/bin/python3

def clear():
sys.stdout.write("\033[F")
sys.stdout.write("\033[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()


h3draxjhd41rrcie_rkop471hfc.png


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

nesewo6ihv7vrweq62t-x565xyw.png


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

vbsfnhi57c25qpai1b9h0-wh-b4.png


vzahq-wbmqns074vtghlsivzans.png


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

v7wzazxb48ur-7wuhfgdj3nc_lg.png


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

xkutyywlhl1owgpxy3kdsldgcha.png


qgviyvztdbkq4mcci8tajjhaoja.png


e61ba3_hpw3iahcccuiswhvacec.png


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

vjdluwmvvaz_h2ux0jpbea7_-wo.png


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

dibncu6ywbidn51-1csidlzsvr0.png


czxyr2yd4ikoikhhs6obzgq-1ps.png


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

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