ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.xyz/forumdisplay.php?f=112)
-   -   Прохождение HackTheBox - TwoMillion (Linux, Easy) (https://forum.antichat.xyz/showthread.php?t=1642000)

Trager 14.06.2023 20:39

Приветствую, Кодебай! Сегодня мы пройдём линуксовую машину легкой сложности с
Код:

HackTheBox
, которая посвящена двум миллионам зарегистрировавшимся пользователям. Приятного чтения

Разведка

Как всегда начинаем со сканирования портов. Используем флаг
Код:

-sC
, чтобы использовать стандартные скрипты,
Код:

-sV
, чтобы определить сервисы открытых портов:

https://forum.antichat.xyz/attachmen...6736328605.png

Когда мы переходим на
Код:

80
порт, то нас встречает следующее окно:

https://forum.antichat.xyz/attachmen...6736425488.png

В таком случае нужно внести
Код:

IP
-адрес и домен в
Код:

/etc/hosts
.

Советую вместо
Код:

sudo echo
(который не работает):

https://forum.antichat.xyz/attachmen...6737745624.png

Использовать
Код:

echo
вместе с
Код:

sudo tee
:

https://forum.antichat.xyz/attachmen...6737774748.png

Теперь мы можем попасть на веб-сервис:

https://forum.antichat.xyz/attachmen...6737920349.png

Это оказалась старая версия
Код:

HackTheBox
с древним интерфейсом. Тут есть страница логина и регистрации:

https://forum.antichat.xyz/attachmen...6737948470.png

Страница регистрации требует пригласительного кода:

https://forum.antichat.xyz/attachmen...6738267275.png

Насколько я помню раньше на
Код:

HackTheBox
нельзя было так просто зарегистрироваться, как на любых других сервисах. Требовалось получить пригласительный код от друга. Это был рэбит хол, то есть никаких кодов у друзей, которые уже зарегистрировались на платформе, нет. Тут нужно искать этот код на самом сайте в
Код:

js
-файлах.

Что ж, приступим. Открываем исходный код страницы
Код:

http://2million.htb/register
и видим
Код:

/js/inviteapi.min.js
:

https://forum.antichat.xyz/attachmen...6738351654.png

Смотрим исходный код
Код:

js
-файла:

https://forum.antichat.xyz/attachmen...6738462716.png

Весь код зашифрован и идёт в одну строку, следовательно, нам нужно его как-то преобразовать в читаемый для человека вид. Советую использовать любой
Код:

JS Beautifier
:

https://forum.antichat.xyz/attachmen...6738561624.png

После того, как расшифровали код мы получили несколько путей, куда можно отправить
Код:

POST
-запрос:

Код:

/api/v1/invite/verify
- скорее всего для подтверждения invite-кода

Код:

/api/v1/invite/how/to/generate
- скорее всего инструкция, как сделать, соответственно, этот инвайт-код.

Для начала посмотрим инструкцию. Отправим
Код:

POST
-запрос с помощью инструмента
Код:

curl
:

Bash:


Код:

curl
-X POST http://2million.htb/api/v1/invite/how/to/generate

https://forum.antichat.xyz/attachmen...6738620583.png

Вывалился
Код:

JSON
в ответе:

JSON:


Код:

{
"0"
:
200
,
"success"
:
1
,
"data"
:
{
"data"
:
"Va beqre gb trarengr gur vaivgr pbqr, znxr n CBFG erdhrfg gb /ncv/i1/vaivgr/trarengr"
,
"enctype"
:
"ROT13"
}
,
"hint"
:
"Data is encrypted ... We should probbably check the encryption type in order to decrypt it..."
}

Есть
Код:

data
- зашифрованная строка и
Код:

enctype
- алгоритм шифрования
Код:

ROT13
. Очевидно, что это шифр Цезаря:

https://forum.antichat.xyz/attachmen...6738809713.png

Нам говорят, что нужно отправить
Код:

POST
-запрос на
Код:

/api/v1/invite/generate
, чтобы сгенерировать
Код:

invite
-код. Опять же используем
Код:

curl
:

Bash:


Код:

curl
-X POST http://2million.htb/api/v1/invite/generate

https://forum.antichat.xyz/attachmen...6739260781.png

JSON:


Код:

{
"0"
:
200
,
"success"
:
1
,
"data"
:
{
"code"
:
"Mk9QSzAtN1pMUzgtVUxZSUstUTA5WU4="
,
"format"
:
"encoded"
}
}

Мы получили код, который был зашифрован в
Код:

base64
. Его можно расшифровать через
Код:

base64
из терминала:

Bash:


Код:

echo
"Mk9QSzAtN1pMUzgtVUxZSUstUTA5WU4="
|
base64 -d

На
Код:

/register
ввести код нельзя, следовательно, нужно искать другой путь. Я нашёл страницу
Код:

/invite
и ввёл код:

https://forum.antichat.xyz/attachmen...6739495204.png

И меня перенаправило на
Код:

/register
с уже введённым кодом:

https://forum.antichat.xyz/attachmen...6739574193.png

Я ввёл остальные данные - юзернейм, электронную почту и пароль, а затем нажал на кнопку
Код:

Register
, после чего меня перенаправило на страницу
Код:

/login
:

https://forum.antichat.xyz/attachmen...6739636037.png

После авторизации открылся, опять же, старый интерфейс
Код:

HackTheBox
:

https://forum.antichat.xyz/attachmen...6739660358.png

На
Код:

/home/access
мы можем скачать наш
Код:

VPN
-конфиг или перегенерировать:

https://forum.antichat.xyz/attachmen...6739771383.png

Давайте посмотрим, что возвращает страница при
Код:

GET
-запросе на
Код:

/api/v1/user/vpn/generate
(кнопка
Код:

Connection Pack
):

https://forum.antichat.xyz/attachmen...6739878981.png

Не забываем указать заголовок с куками в курле. Чтобы посмотреть куки, можно нажать кнопку
Код:

F12
(
Код:

Firefox
) и перейти в
Код:

Storage->Cookies->http://2million.htb
:

https://forum.antichat.xyz/attachmen...6739912776.png

Теперь указываем опцию
Код:

-H
(доп.
Код:

HTTP
-заголовок) и отправляем запрос на
Код:

/api/v1/user/vpn/generate
:

https://forum.antichat.xyz/attachmen...6739979840.png

Видим наш
Код:

VPN
-конфиг, пока что ничего полезного.

Далее я перешёл для удобства в
Код:

BurpSuite
и отправил
Код:

GET
-запрос на
Код:

/api/v1
:

https://forum.antichat.xyz/attachmen...6740117799.png

JSON:


Код:

{
"v1"
:
{
"user"
:
{
"GET"
:
{
"/api/v1"
:
"Route List"
,
"/api/v1/invite/how/to/generate"
:
"Instructions on invite code generation"
,
"/api/v1/invite/generate"
:
"Generate invite code"
,
"/api/v1/invite/verify"
:
"Verify invite code"
,
"/api/v1/user/auth"
:
"Check if user is authenticated"
,
"/api/v1/user/vpn/generate"
:
"Generate a new VPN configuration"
,
"/api/v1/user/vpn/regenerate"
:
"Regenerate VPN configuration"
,
"/api/v1/user/vpn/download"
:
"Download OVPN file"
}
,
"POST"
:
{
"/api/v1/user/register"
:
"Register a new user"
,
"/api/v1/user/login"
:
"Login with existing user"
}
}
,
"admin"
:
{
"GET"
:
{
"/api/v1/admin/auth"
:
"Check if user is admin"
}
,
"POST"
:
{
"/api/v1/admin/vpn/generate"
:
"Generate VPN for specific user"
}
,
"PUT"
:
{
"/api/v1/admin/settings/update"
:
"Update user settings"
}
}
}
}

В ответе были разные
Код:

API
-пути. Тут уже примерно стало понятно, как эксплуатировать:
  1. Пути с
    Код:

    /v1/user
    нам не нужны. Нужны пути с
    Код:

    /v1/admin
    .
  2. Есть путь с
    Код:

    GET
    -запросом
    Код:

    /api/v1/admin/auth
    - он, судя по всему, без каких-либо параметров проверяет авторизован ли пользователь как админ (через куки).
  3. Есть путь с
    Код:

    POST
    -запросом
    Код:

    /api/v1/admin/vpn/generate
    - похоже, что с помощью него можно сгенерировать
    Код:

    VPN
    -конфиг для любого пользователя от лица, опять же, админа.
  4. Есть путь с
    Код:

    PUT
    -запросом
    Код:

    /api/v1/admin/settings/update
    - он обновляет настройки пользователя. Скорее всего через него мы можем повысить привилегии.
Взятие www-data

Попробуем обновить настройки для нашего пользователя, отправляем
Код:

PUT
-запрос на
Код:

/api/v1/admin/settings/update
:

https://forum.antichat.xyz/attachmen...6741320380.png

В ответе нам приходит сообщение, что у нас неправильный
Код:

Content-Type
заголовок. Хорошо, добавим его со значением
Код:

application/json
(т. е. данные мы будем передавать в
Код:

JSON
-формате):

https://forum.antichat.xyz/attachmen...6741358564.png

Немного продвинулись, теперь не хватает электронной почты, добавим наш
Код:

email
в
Код:

JSON
'е:

https://forum.antichat.xyz/attachmen...6741468249.png

И добавим
Код:

is_admin
(понять какой тип данных используется можно методом перебора):

https://forum.antichat.xyz/attachmen...6741498379.png

Отлично, кажется, мы повысили наши привилегии, проверим это:

https://forum.antichat.xyz/attachmen...6741735919.png

Супер. Возвращаемся к нашему списку, что мы ещё не заимодействовали?:
  1. [S]Пути с
    Код:

    /v1/user
    нам не нужны. Нужны пути с
    Код:

    /v1/admin
    .[/S]
  2. [S]Есть путь с
    Код:

    GET
    -запросом
    Код:

    /api/v1/admin/auth
    - он, судя по всему, без каких-либо параметров проверяет авторизован ли пользователь как админ (через куки).[/S]
  3. Есть путь с
    Код:

    POST
    -запросом
    Код:

    /api/v1/admin/vpn/generate
    - похоже, что с помощью него можно сгенерировать
    Код:

    VPN
    -конфиг для любого пользователя от лица, опять же, админа.
  4. [S]Есть путь с
    Код:

    PUT
    -запросом
    Код:

    /api/v1/admin/settings/update
    - он обновляет настройки пользователя. Скорее всего через него мы можем повысить привилегии.[/S]
Теперь мы можем сделать
Код:

VPN
для юзеров:

https://forum.antichat.xyz/attachmen...6742053887.png

Опять же, методом тыка проверяем какие параметры используются в
Код:

POST
-запросе, хорошо, что респонс нам подсказывает - не хватает юзернейма. Добавляем его:

https://forum.antichat.xyz/attachmen...6742124770.png

Такой вывод я уже видел ранее (от лица обычного пользователя), но тут мы можем указать юзернейм. Возможно, используется какая-нибудь "опасная" функция, где нет фильтрации и мы можем получить
Код:

RCE
?

https://forum.antichat.xyz/attachmen...6742236272.png

Получили
Код:

RCE
. Теперь давайте пробросим шелл (советую для удобства использовать данный сервис):

https://forum.antichat.xyz/attachmen...6742322494.png

Шелл получен, сразу апгрейдим оболочку через
Код:

python3
:

Bash:


Код:

python3 -c
'import pty;pty.spawn("/bin/bash");'

https://forum.antichat.xyz/attachmen...6742471691.png

Взятие пользователя

В домашней директории пользователя
Код:

www-data
можно обнаружить
Код:

.env
файл. В нём лежали креды:

https://forum.antichat.xyz/attachmen...6745079027.png

Код:


Код:

DB_USERNAME=admin
DB_PASSWORD=SuperDuperPass123

Не проверить их на пользователе
Код:

admin
через
Код:

SSH
, который располагается в
Код:

/home
, было бы глупо:

Bash:


Код:

ssh
admin@2million.htb

https://forum.antichat.xyz/attachmen...6745183078.png

Взятие рута

Мы можем взять флаг пользователя и нужно искать методы повышения привилегий. В
Код:

/var/mail/admin
мы можем найти следующее письмо:

https://forum.antichat.xyz/attachmen...6745520768.png

Тут говорится о нескольких
Код:

CVE
для ядра линукс, которые появились в этом году и что-то есть в
Код:

OverlayFS / Fuse
. Гуглим:

https://forum.antichat.xyz/attachmen...6745606250.png

Код:

CVE-2023-0386
- то, что нам нужно. Так как машина лёгкого уровня, то берём уже готовый эксплоит с
Код:

GitHub'а
:




GitHub - xkaneiki/CVE-2023-0386: CVE-2023-0386在ubuntu22.04上的提权

CVE-2023-0386在ubuntu22.04上的提权. Contribute to xkaneiki/CVE-2023-0386 development by creating an account on GitHub.

github.com


Загружаем на машину через
Код:

HTTP
-сервер
Код:

Python'а
(как это делается я рассказывал в прошлых своих статьях - например. прохождение Precious):

https://forum.antichat.xyz/attachmen...6745971926.png

И по инструкции с
Код:

GitHub'а
запускаем эксплоит:

https://forum.antichat.xyz/attachmen...6746038827.png

Получаем рута:

https://forum.antichat.xyz/attachmen...6746081916.png

thank_you.json

В каталоге
Код:

/root/
мы можем обнаружить послание от разработчиков
Код:

HackTheBox
-
Код:

thank_you.json
:

https://forum.antichat.xyz/attachmen...6746691266.png

Это
Код:

JSON
-код:

JSON:


Код:

{
"encoding"
:
"url"
,
"data"
:
"%7B%22encoding%22:%20%22hex%22,%20%22data%22:%20%227b22656e6372797074696f6e223a2022786f72222c2022656e6372707974696f6e5f6b6579223a20224861636b546865426f78222c2022656e636f64696e67223a2022626173653634222c202264617461223a20224441514347585167424345454c43414549515173534359744168553944776f664c5552765344676461414152446e51634454414746435145423073674230556a4152596e464130494d556745596749584a51514e487a7364466d494345535145454238374267426942685a6f4468595a6441494b4e7830574c526844487a73504144594848547050517a7739484131694268556c424130594d5567504c525a594b513848537a4d614244594744443046426b6430487742694442306b4241455a4e527741596873514c554543434477424144514b4653305046307337446b557743686b7243516f464d306858596749524a41304b424470494679634347546f4b41676b344455553348423036456b4a4c4141414d4d5538524a674952446a41424279344b574334454168393048776f334178786f44777766644141454e4170594b67514742585159436a456345536f4e426b736a41524571414130385151594b4e774246497745636141515644695952525330424857674f42557374427842735a58494f457777476442774e4a30384f4c524d61537a594e4169734246694550424564304941516842437767424345454c45674e497878594b6751474258514b45437344444767554577513653424571436c6771424138434d5135464e67635a50454549425473664353634c4879314245414d31476777734346526f416777484f416b484c52305a5041674d425868494243774c574341414451386e52516f73547830774551595a5051304c495170594b524d47537a49644379594f4653305046776f345342457454776774457841454f676b4a596734574c4545544754734f414445634553635041676430447863744741776754304d2f4f7738414e6763644f6b31444844464944534d5a48576748444267674452636e4331677044304d4f4f68344d4d4141574a51514e48335166445363644857674944515537486751324268636d515263444a6745544a7878594b5138485379634444433444433267414551353041416f734368786d5153594b4e7742464951635a4a41304742544d4e525345414654674e4268387844456c6943686b7243554d474e51734e4b7745646141494d425355644144414b48475242416755775341413043676f78515241415051514a59674d644b524d4e446a424944534d635743734f4452386d4151633347783073515263456442774e4a3038624a773050446a63634444514b57434550467734344241776c4368597242454d6650416b5259676b4e4c51305153794141444446504469454445516f36484555684142556c464130434942464c534755734a304547436a634152534d42484767454651346d45555576436855714242464c4f7735464e67636461436b434344383844536374467a424241415135425241734267777854554d6650416b4c4b5538424a785244445473615253414b4553594751777030474151774731676e42304d6650414557596759574b784d47447a304b435364504569635545515578455574694e68633945304d494f7759524d4159615052554b42446f6252536f4f4469314245414d314741416d5477776742454d644d526f6359676b5a4b684d4b4348514841324941445470424577633148414d744852566f414130506441454c4d5238524f67514853794562525459415743734f445238394268416a4178517851516f464f676354497873646141414e4433514e4579304444693150517a777853415177436c67684441344f4f6873414c685a594f424d4d486a424943695250447941414630736a4455557144673474515149494e7763494d674d524f776b47443351634369554b44434145455564304351736d547738745151594b4d7730584c685a594b513858416a634246534d62485767564377353043776f334151776b424241596441554d4c676f4c5041344e44696449484363625744774f51776737425142735a5849414242454f637874464e67425950416b47537a6f4e48545a504779414145783878476b6c694742417445775a4c497731464e5159554a45454142446f6344437761485767564445736b485259715477776742454d4a4f78304c4a67344b49515151537a734f525345574769305445413433485263724777466b51516f464a78674d4d41705950416b47537a6f4e48545a504879305042686b31484177744156676e42304d4f4941414d4951345561416b434344384e467a464457436b50423073334767416a4778316f41454d634f786f4a4a6b385049415152446e514443793059464330464241353041525a69446873724242415950516f4a4a30384d4a304543427a6847623067344554774a517738784452556e4841786f4268454b494145524e7773645a477470507a774e52516f4f47794d3143773457427831694f78307044413d3d227d%22%7D"
}

В нём есть
Код:

encoding
- метод шифрования/кодирования, и
Код:

data
- сами данные. Раздекодим
Код:

URL
(советую использовать cyberchef):

https://forum.antichat.xyz/attachmen...6746769451.png

Получаем
Код:

JSON
-код с
Код:

data
в хексе, декодим:

https://forum.antichat.xyz/attachmen...6746875930.png

Мы получили опять
Код:

JSON
-код с шифрованием
Код:

XOR
, а сам
Код:

data
закодирован в
Код:

Base64
, выбираем следующие рецепты в cyberchef:

https://forum.antichat.xyz/attachmen...6747032867.png

Вот, собственно, послание:

Код:


Код:

Dear HackTheBox Community,

We are thrilled to announce a momentous milestone in our journey together. With immense joy and gratitude, we celebrate the achievement of reaching 2 million remarkable users! This incredible feat would not have been possible without each and every one of you.

From the very beginning, HackTheBox has been built upon the belief that knowledge sharing, collaboration, and hands-on experience are fundamental to personal and professional growth. Together, we have fostered an environment where innovation thrives and skills are honed. Each challenge completed, each machine conquered, and every skill learned has contributed to the collective intelligence that fuels this vibrant community.

To each and every member of the HackTheBox community, thank you for being a part of this incredible journey. Your contributions have shaped the very fabric of our platform and inspired us to continually innovate and evolve. We are immensely proud of what we have accomplished together, and we eagerly anticipate the countless milestones yet to come.

Here's to the next chapter, where we will continue to push the boundaries of cybersecurity, inspire the next generation of ethical hackers, and create a world where knowledge is accessible to all.

With deepest gratitude,

The HackTheBox Team

Перевод:

Код:


Код:

Уважаемое сообщество HackTheBox,

Мы рады объявить о важной вехе в нашем совместном путешествии. С огромной радостью и благодарностью мы отмечаем достижение 2 миллионов замечательных пользователей! Этот невероятный подвиг был бы невозможен без каждого из вас.

С самого начала HackTheBox был основан на убеждении, что обмен знаниями, сотрудничество и практический опыт являются основополагающими для личного и профессионального роста. Вместе мы создали среду, в которой процветают инновации и оттачиваются навыки. Каждая решенная задача, каждая покоренная машина и каждый приобретенный навык способствуют формированию коллективного разума, который питает это энергичное сообщество.

Спасибо всем и каждому члену сообщества HackTheBox за участие в этом невероятном путешествии. Ваш вклад сформировал саму ткань нашей платформы и вдохновил нас на постоянные инновации и развитие. Мы безмерно гордимся тем, чего мы достигли вместе, и с нетерпением ждем бесчисленных вех, которые еще впереди.

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

С глубочайшей благодарностью,

Команда HackTheBox

Большое спасибо, что дочитали мою статью до конца. Если есть какие-то ошибки/неточности, то, пожалуйста, напишите об этом в комментариях

Shihskauskas 20.06.2023 12:02

Спасибо за статью

Отвлекся от рабочей рутины

Atikan 04.07.2023 23:30

Спасибо большое за статью. Прекрасная работа! Продолжайте в том же духе! Очень интересно наблюдать!

OxDEADBEEF 14.06.2025 21:37

А как надо было понять, что на /api/v1 есть роут лист? Только методом тыка?

А еще можно повысить привилегии через уязвимость glibc

Trager 17.06.2025 17:24

Цитата:


OxDEADBEEF сказал(а):

А как надо было понять, что на /api/v1 есть роут лист? Только методом тыка?


Насколько я помню, маршруты, которые используются в райтапе, были получены со страниц на лендинге 2million.htb (ссылки/кнопки).

Цитата:


OxDEADBEEF сказал(а):

А еще можно повысить привилегии через уязвимость glibc


Это старая тачка, вполне может быть


Время: 17:30