Trager
14.06.2023, 20:39
https://forum.antichat.xyz/attachments/29105603/1686736186041.png
Приветствую, Кодебай! Сегодня мы пройдём линуксовую машину легкой сложности с
HackTheBox
, которая посвящена двум миллионам зарегистрировавшимся пользователям. Приятного чтения
Разведка
Как всегда начинаем со сканирования портов. Используем флаг
-sC
, чтобы использовать стандартные скрипты,
-sV
, чтобы определить сервисы открытых портов:
https://forum.antichat.xyz/attachments/29105603/1686736328605.png
Когда мы переходим на
80
порт, то нас встречает следующее окно:
https://forum.antichat.xyz/attachments/29105603/1686736425488.png
В таком случае нужно внести
IP
-адрес и домен в
/etc/hosts
.
Советую вместо
sudo echo
(который не работает):
https://forum.antichat.xyz/attachments/29105603/1686737745624.png
Использовать
echo
вместе с
sudo tee
:
https://forum.antichat.xyz/attachments/29105603/1686737774748.png
Теперь мы можем попасть на веб-сервис:
https://forum.antichat.xyz/attachments/29105603/1686737920349.png
Это оказалась старая версия
HackTheBox
с древним интерфейсом. Тут есть страница логина и регистрации:
https://forum.antichat.xyz/attachments/29105603/1686737948470.png
Страница регистрации требует пригласительного кода:
https://forum.antichat.xyz/attachments/29105603/1686738267275.png
Насколько я помню раньше на
HackTheBox
нельзя было так просто зарегистрироваться, как на любых других сервисах. Требовалось получить пригласительный код от друга. Это был рэбит хол, то есть никаких кодов у друзей, которые уже зарегистрировались на платформе, нет. Тут нужно искать этот код на самом сайте в
js
-файлах.
Что ж, приступим. Открываем исходный код страницы
http://2million.htb/register
и видим
/js/inviteapi.min.js
:
https://forum.antichat.xyz/attachments/29105603/1686738351654.png
Смотрим исходный код
js
-файла:
https://forum.antichat.xyz/attachments/29105603/1686738462716.png
Весь код зашифрован и идёт в одну строку, следовательно, нам нужно его как-то преобразовать в читаемый для человека вид. Советую использовать любой
JS Beautifier
:
https://forum.antichat.xyz/attachments/29105603/1686738561624.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/attachments/29105603/1686738620583.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/attachments/29105603/1686738809713.png
Нам говорят, что нужно отправить
POST
-запрос на
/api/v1/invite/generate
, чтобы сгенерировать
invite
-код. Опять же используем
curl
:
Bash:
curl
-X POST http://2million.htb/api/v1/invite/generate
https://forum.antichat.xyz/attachments/29105603/1686739260781.png
JSON:
{
"0"
:
200
,
"success"
:
1
,
"data"
:
{
"code"
:
"Mk9QSzAtN1pMUzgtVUxZSUstUTA5WU4="
,
"format"
:
"encoded"
}
}
Мы получили код, который был зашифрован в
base64
. Его можно расшифровать через
base64
из терминала:
Bash:
echo
"Mk9QSzAtN1pMUzgtVUxZSUstUTA5WU4="
|
base64 -d
На
/register
ввести код нельзя, следовательно, нужно искать другой путь. Я нашёл страницу
/invite
и ввёл код:
https://forum.antichat.xyz/attachments/29105603/1686739495204.png
И меня перенаправило на
/register
с уже введённым кодом:
https://forum.antichat.xyz/attachments/29105603/1686739574193.png
Я ввёл остальные данные - юзернейм, электронную почту и пароль, а затем нажал на кнопку
Register
, после чего меня перенаправило на страницу
/login
:
https://forum.antichat.xyz/attachments/29105603/1686739636037.png
После авторизации открылся, опять же, старый интерфейс
HackTheBox
:
https://forum.antichat.xyz/attachments/29105603/1686739660358.png
На
/home/access
мы можем скачать наш
VPN
-конфиг или перегенерировать:
https://forum.antichat.xyz/attachments/29105603/1686739771383.png
Давайте посмотрим, что возвращает страница при
GET
-запросе на
/api/v1/user/vpn/generate
(кнопка
Connection Pack
):
https://forum.antichat.xyz/attachments/29105603/1686739878981.png
Не забываем указать заголовок с куками в курле. Чтобы посмотреть куки, можно нажать кнопку
F12
(
Firefox
) и перейти в
Storage->Cookies->http://2million.htb
:
https://forum.antichat.xyz/attachments/29105603/1686739912776.png
Теперь указываем опцию
-H
(доп.
HTTP
-заголовок) и отправляем запрос на
/api/v1/user/vpn/generate
:
https://forum.antichat.xyz/attachments/29105603/1686739979840.png
Видим наш
VPN
-конфиг, пока что ничего полезного.
Далее я перешёл для удобства в
BurpSuite
и отправил
GET
-запрос на
/api/v1
:
https://forum.antichat.xyz/attachments/29105603/1686740117799.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
-пути. Тут уже примерно стало понятно, как эксплуатировать:
Пути с
/v1/user
нам не нужны. Нужны пути с
/v1/admin
.
Есть путь с
GET
-запросом
/api/v1/admin/auth
- он, судя по всему, без каких-либо параметров проверяет авторизован ли пользователь как админ (через куки).
Есть путь с
POST
-запросом
/api/v1/admin/vpn/generate
- похоже, что с помощью него можно сгенерировать
VPN
-конфиг для любого пользователя от лица, опять же, админа.
Есть путь с
PUT
-запросом
/api/v1/admin/settings/update
- он обновляет настройки пользователя. Скорее всего через него мы можем повысить привилегии.
Взятие www-data
Попробуем обновить настройки для нашего пользователя, отправляем
PUT
-запрос на
/api/v1/admin/settings/update
:
https://forum.antichat.xyz/attachments/29105603/1686741320380.png
В ответе нам приходит сообщение, что у нас неправильный
Content-Type
заголовок. Хорошо, добавим его со значением
application/json
(т. е. данные мы будем передавать в
JSON
-формате):
https://forum.antichat.xyz/attachments/29105603/1686741358564.png
Немного продвинулись, теперь не хватает электронной почты, добавим наш
email
в
JSON
'е:
https://forum.antichat.xyz/attachments/29105603/1686741468249.png
И добавим
is_admin
(понять какой тип данных используется можно методом перебора):
https://forum.antichat.xyz/attachments/29105603/1686741498379.png
Отлично, кажется, мы повысили наши привилегии, проверим это:
https://forum.antichat.xyz/attachments/29105603/1686741735919.png
Супер. Возвращаемся к нашему списку, что мы ещё не заимодействовали?:
Пути с
/v1/user
нам не нужны. Нужны пути с
/v1/admin
.
Есть путь с
GET
-запросом
/api/v1/admin/auth
- он, судя по всему, без каких-либо параметров проверяет авторизован ли пользователь как админ (через куки).
Есть путь с
POST
-запросом
/api/v1/admin/vpn/generate
- похоже, что с помощью него можно сгенерировать
VPN
-конфиг для любого пользователя от лица, опять же, админа.
Есть путь с
PUT
-запросом
/api/v1/admin/settings/update
- он обновляет настройки пользователя. Скорее всего через него мы можем повысить привилегии.
Теперь мы можем сделать
VPN
для юзеров:
https://forum.antichat.xyz/attachments/29105603/1686742053887.png
Опять же, методом тыка проверяем какие параметры используются в
POST
-запросе, хорошо, что респонс нам подсказывает - не хватает юзернейма. Добавляем его:
https://forum.antichat.xyz/attachments/29105603/1686742124770.png
Такой вывод я уже видел ранее (от лица обычного пользователя), но тут мы можем указать юзернейм. Возможно, используется какая-нибудь "опасная" функция, где нет фильтрации и мы можем получить
RCE
?
https://forum.antichat.xyz/attachments/29105603/1686742236272.png
Получили
RCE
. Теперь давайте пробросим шелл (советую для удобства использовать данный сервис):
https://forum.antichat.xyz/attachments/29105603/1686742322494.png
Шелл получен, сразу апгрейдим оболочку через
python3
:
Bash:
python3 -c
'import pty;pty.spawn("/bin/bash");'
https://forum.antichat.xyz/attachments/29105603/1686742471691.png
Взятие пользователя
В домашней директории пользователя
www-data
можно обнаружить
.env
файл. В нём лежали креды:
https://forum.antichat.xyz/attachments/29105603/1686745079027.png
Код:
DB_USERNAME=admin
DB_PASSWORD=SuperDuperPass123
Не проверить их на пользователе
admin
через
SSH
, который располагается в
/home
, было бы глупо:
Bash:
ssh
admin@2million.htb
https://forum.antichat.xyz/attachments/29105603/1686745183078.png
Взятие рута
Мы можем взять флаг пользователя и нужно искать методы повышения привилегий. В
/var/mail/admin
мы можем найти следующее письмо:
https://forum.antichat.xyz/attachments/29105603/1686745520768.png
Тут говорится о нескольких
CVE
для ядра линукс, которые появились в этом году и что-то есть в
OverlayFS / Fuse
. Гуглим:
https://forum.antichat.xyz/attachments/29105603/1686745606250.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/threads/1641530/)):
https://forum.antichat.xyz/attachments/29105603/1686745971926.png
И по инструкции с
GitHub'а
запускаем эксплоит:
https://forum.antichat.xyz/attachments/29105603/1686746038827.png
Получаем рута:
https://forum.antichat.xyz/attachments/29105603/1686746081916.png
thank_you.json
В каталоге
/root/
мы можем обнаружить послание от разработчиков
HackTheBox
-
thank_you.json
:
https://forum.antichat.xyz/attachments/29105603/1686746691266.png
Это
JSON
-код:
JSON:
{
"encoding"
:
"url"
,
"data"
:
"%7B%22encoding%22:%20%22hex%22,%20%22data%22:%20%2 27b22656e6372797074696f6e223a2022786f72222c2022656 e6372707974696f6e5f6b6579223a20224861636b546865426 f78222c2022656e636f64696e67223a2022626173653634222 c202264617461223a20224441514347585167424345454c434 14549515173534359744168553944776f664c5552765344676 461414152446e51634454414746435145423073674230556a4 152596e464130494d556745596749584a51514e487a7364466 d494345535145454238374267426942685a6f4468595a64414 94b4e7830574c526844487a73504144594848547050517a773 9484131694268556c424130594d5567504c525a594b5138485 37a4d614244594744443046426b6430487742694442306b424 1455a4e527741596873514c554543434477424144514b46533 05046307337446b557743686b7243516f464d3068585967495 24a41304b424470494679634347546f4b41676b34445555334 8423036456b4a4c4141414d4d5538524a674952446a4142427 9344b574334454168393048776f334178786f4477776664414 1454e4170594b67514742585159436a456345536f4e426b736 a41524571414130385151594b4e77424649774563614151564 4695952525330424857674f42557374427842735a58494f457 777476442774e4a30384f4c524d61537a594e4169734246694 550424564304941516842437767424345454c45674e4978785 94b6751474258514b454373444447675545775136534245714 36c6771424138434d5135464e67635a5045454942547366435 3634c4879314245414d31476777734346526f416777484f416 b484c52305a5041674d425868494243774c574341414451386 e52516f73547830774551595a5051304c495170594b524d475 37a49644379594f4653305046776f345342457454776774457 841454f676b4a596734574c4545544754734f4144456345536 35041676430447863744741776754304d2f4f7738414e67636 44f6b31444844464944534d5a48576748444267674452636e4 331677044304d4f4f68344d4d4141574a51514e48335166445 363644857674944515537486751324268636d515263444a674 5544a7878594b5138485379634444433444433267414551353 041416f734368786d5153594b4e7742464951635a4a4130474 2544d4e525345414654674e4268387844456c6943686b72435 54d474e51734e4b7745646141494d425355644144414b48475 242416755775341413043676f78515241415051514a59674d6 44b524d4e446a424944534d635743734f4452386d415163334 7783073515263456442774e4a3038624a773050446a6363444 4514b57434550467734344241776c4368597242454d6650416 b5259676b4e4c51305153794141444446504469454445516f3 6484555684142556c464130434942464c534755734a3045474 36a634152534d42484767454651346d4555557643685571424 2464c4f7735464e67636461436b434344383844536374467a4 24241415135425241734267777854554d6650416b4c4b55384 24a785244445473615253414b4553594751777030474151774 731676e42304d6650414557596759574b784d47447a304b435 364504569635545515578455574694e68633945304d494f775 9524d4159615052554b42446f6252536f4f4469314245414d3 14741416d5477776742454d644d526f6359676b5a4b684d4b4 348514841324941445470424577633148414d744852566f414 130506441454c4d5238524f675148537945625254594157437 34f445238394268416a4178517851516f464f6763544978736 46141414e4433514e4579304444693150517a7778534151774 36c67684441344f4f6873414c685a594f424d4d486a4249436 95250447941414630736a4455557144673474515149494e776 3494d674d524f776b47443351634369554b444341454555643 04351736d547738745151594b4d7730584c685a594b5138584 16a634246534d62485767564377353043776f334151776b424 241596441554d4c676f4c5041344e446964494843636257447 74f51776737425142735a5849414242454f637874464e67425 950416b47537a6f4e48545a504779414145783878476b6c694 742417445775a4c497731464e5159554a45454142446f63444 37761485767564445736b485259715477776742454d4a4f783 04c4a67344b49515151537a734f52534557476930544541343 3485263724777466b51516f464a78674d4d41705950416b475 37a6f4e48545a504879305042686b31484177744156676e423 04d4f4941414d4951345561416b434344384e467a464457436 b50423073334767416a4778316f41454d634f786f4a4a6b385 049415152446e514443793059464330464241353041525a694 46873724242415950516f4a4a30384d4a304543427a6847623 067344554774a517738784452556e4841786f4268454b49414 5524e7773645a477470507a774e52516f4f47794d314377345 7427831694f78307044413d3d227d%22%7D"
}
В нём есть
encoding
- метод шифрования/кодирования, и
data
- сами данные. Раздекодим
URL
(советую использовать cyberchef):
https://forum.antichat.xyz/attachments/29105603/1686746769451.png
Получаем
JSON
-код с
data
в хексе, декодим:
https://forum.antichat.xyz/attachments/29105603/1686746875930.png
Мы получили опять
JSON
-код с шифрованием
XOR
, а сам
data
закодирован в
Base64
, выбираем следующие рецепты в cyberchef:
https://forum.antichat.xyz/attachments/29105603/1686747032867.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
Большое спасибо, что дочитали мою статью до конца. Если есть какие-то ошибки/неточности, то, пожалуйста, напишите об этом в комментариях
Приветствую, Кодебай! Сегодня мы пройдём линуксовую машину легкой сложности с
HackTheBox
, которая посвящена двум миллионам зарегистрировавшимся пользователям. Приятного чтения
Разведка
Как всегда начинаем со сканирования портов. Используем флаг
-sC
, чтобы использовать стандартные скрипты,
-sV
, чтобы определить сервисы открытых портов:
https://forum.antichat.xyz/attachments/29105603/1686736328605.png
Когда мы переходим на
80
порт, то нас встречает следующее окно:
https://forum.antichat.xyz/attachments/29105603/1686736425488.png
В таком случае нужно внести
IP
-адрес и домен в
/etc/hosts
.
Советую вместо
sudo echo
(который не работает):
https://forum.antichat.xyz/attachments/29105603/1686737745624.png
Использовать
echo
вместе с
sudo tee
:
https://forum.antichat.xyz/attachments/29105603/1686737774748.png
Теперь мы можем попасть на веб-сервис:
https://forum.antichat.xyz/attachments/29105603/1686737920349.png
Это оказалась старая версия
HackTheBox
с древним интерфейсом. Тут есть страница логина и регистрации:
https://forum.antichat.xyz/attachments/29105603/1686737948470.png
Страница регистрации требует пригласительного кода:
https://forum.antichat.xyz/attachments/29105603/1686738267275.png
Насколько я помню раньше на
HackTheBox
нельзя было так просто зарегистрироваться, как на любых других сервисах. Требовалось получить пригласительный код от друга. Это был рэбит хол, то есть никаких кодов у друзей, которые уже зарегистрировались на платформе, нет. Тут нужно искать этот код на самом сайте в
js
-файлах.
Что ж, приступим. Открываем исходный код страницы
http://2million.htb/register
и видим
/js/inviteapi.min.js
:
https://forum.antichat.xyz/attachments/29105603/1686738351654.png
Смотрим исходный код
js
-файла:
https://forum.antichat.xyz/attachments/29105603/1686738462716.png
Весь код зашифрован и идёт в одну строку, следовательно, нам нужно его как-то преобразовать в читаемый для человека вид. Советую использовать любой
JS Beautifier
:
https://forum.antichat.xyz/attachments/29105603/1686738561624.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/attachments/29105603/1686738620583.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/attachments/29105603/1686738809713.png
Нам говорят, что нужно отправить
POST
-запрос на
/api/v1/invite/generate
, чтобы сгенерировать
invite
-код. Опять же используем
curl
:
Bash:
curl
-X POST http://2million.htb/api/v1/invite/generate
https://forum.antichat.xyz/attachments/29105603/1686739260781.png
JSON:
{
"0"
:
200
,
"success"
:
1
,
"data"
:
{
"code"
:
"Mk9QSzAtN1pMUzgtVUxZSUstUTA5WU4="
,
"format"
:
"encoded"
}
}
Мы получили код, который был зашифрован в
base64
. Его можно расшифровать через
base64
из терминала:
Bash:
echo
"Mk9QSzAtN1pMUzgtVUxZSUstUTA5WU4="
|
base64 -d
На
/register
ввести код нельзя, следовательно, нужно искать другой путь. Я нашёл страницу
/invite
и ввёл код:
https://forum.antichat.xyz/attachments/29105603/1686739495204.png
И меня перенаправило на
/register
с уже введённым кодом:
https://forum.antichat.xyz/attachments/29105603/1686739574193.png
Я ввёл остальные данные - юзернейм, электронную почту и пароль, а затем нажал на кнопку
Register
, после чего меня перенаправило на страницу
/login
:
https://forum.antichat.xyz/attachments/29105603/1686739636037.png
После авторизации открылся, опять же, старый интерфейс
HackTheBox
:
https://forum.antichat.xyz/attachments/29105603/1686739660358.png
На
/home/access
мы можем скачать наш
VPN
-конфиг или перегенерировать:
https://forum.antichat.xyz/attachments/29105603/1686739771383.png
Давайте посмотрим, что возвращает страница при
GET
-запросе на
/api/v1/user/vpn/generate
(кнопка
Connection Pack
):
https://forum.antichat.xyz/attachments/29105603/1686739878981.png
Не забываем указать заголовок с куками в курле. Чтобы посмотреть куки, можно нажать кнопку
F12
(
Firefox
) и перейти в
Storage->Cookies->http://2million.htb
:
https://forum.antichat.xyz/attachments/29105603/1686739912776.png
Теперь указываем опцию
-H
(доп.
HTTP
-заголовок) и отправляем запрос на
/api/v1/user/vpn/generate
:
https://forum.antichat.xyz/attachments/29105603/1686739979840.png
Видим наш
VPN
-конфиг, пока что ничего полезного.
Далее я перешёл для удобства в
BurpSuite
и отправил
GET
-запрос на
/api/v1
:
https://forum.antichat.xyz/attachments/29105603/1686740117799.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
-пути. Тут уже примерно стало понятно, как эксплуатировать:
Пути с
/v1/user
нам не нужны. Нужны пути с
/v1/admin
.
Есть путь с
GET
-запросом
/api/v1/admin/auth
- он, судя по всему, без каких-либо параметров проверяет авторизован ли пользователь как админ (через куки).
Есть путь с
POST
-запросом
/api/v1/admin/vpn/generate
- похоже, что с помощью него можно сгенерировать
VPN
-конфиг для любого пользователя от лица, опять же, админа.
Есть путь с
PUT
-запросом
/api/v1/admin/settings/update
- он обновляет настройки пользователя. Скорее всего через него мы можем повысить привилегии.
Взятие www-data
Попробуем обновить настройки для нашего пользователя, отправляем
PUT
-запрос на
/api/v1/admin/settings/update
:
https://forum.antichat.xyz/attachments/29105603/1686741320380.png
В ответе нам приходит сообщение, что у нас неправильный
Content-Type
заголовок. Хорошо, добавим его со значением
application/json
(т. е. данные мы будем передавать в
JSON
-формате):
https://forum.antichat.xyz/attachments/29105603/1686741358564.png
Немного продвинулись, теперь не хватает электронной почты, добавим наш
в
JSON
'е:
https://forum.antichat.xyz/attachments/29105603/1686741468249.png
И добавим
is_admin
(понять какой тип данных используется можно методом перебора):
https://forum.antichat.xyz/attachments/29105603/1686741498379.png
Отлично, кажется, мы повысили наши привилегии, проверим это:
https://forum.antichat.xyz/attachments/29105603/1686741735919.png
Супер. Возвращаемся к нашему списку, что мы ещё не заимодействовали?:
Пути с
/v1/user
нам не нужны. Нужны пути с
/v1/admin
.
Есть путь с
GET
-запросом
/api/v1/admin/auth
- он, судя по всему, без каких-либо параметров проверяет авторизован ли пользователь как админ (через куки).
Есть путь с
POST
-запросом
/api/v1/admin/vpn/generate
- похоже, что с помощью него можно сгенерировать
VPN
-конфиг для любого пользователя от лица, опять же, админа.
Есть путь с
PUT
-запросом
/api/v1/admin/settings/update
- он обновляет настройки пользователя. Скорее всего через него мы можем повысить привилегии.
Теперь мы можем сделать
VPN
для юзеров:
https://forum.antichat.xyz/attachments/29105603/1686742053887.png
Опять же, методом тыка проверяем какие параметры используются в
POST
-запросе, хорошо, что респонс нам подсказывает - не хватает юзернейма. Добавляем его:
https://forum.antichat.xyz/attachments/29105603/1686742124770.png
Такой вывод я уже видел ранее (от лица обычного пользователя), но тут мы можем указать юзернейм. Возможно, используется какая-нибудь "опасная" функция, где нет фильтрации и мы можем получить
RCE
?
https://forum.antichat.xyz/attachments/29105603/1686742236272.png
Получили
RCE
. Теперь давайте пробросим шелл (советую для удобства использовать данный сервис):
https://forum.antichat.xyz/attachments/29105603/1686742322494.png
Шелл получен, сразу апгрейдим оболочку через
python3
:
Bash:
python3 -c
'import pty;pty.spawn("/bin/bash");'
https://forum.antichat.xyz/attachments/29105603/1686742471691.png
Взятие пользователя
В домашней директории пользователя
www-data
можно обнаружить
.env
файл. В нём лежали креды:
https://forum.antichat.xyz/attachments/29105603/1686745079027.png
Код:
DB_USERNAME=admin
DB_PASSWORD=SuperDuperPass123
Не проверить их на пользователе
admin
через
SSH
, который располагается в
/home
, было бы глупо:
Bash:
ssh
admin@2million.htb
https://forum.antichat.xyz/attachments/29105603/1686745183078.png
Взятие рута
Мы можем взять флаг пользователя и нужно искать методы повышения привилегий. В
/var/mail/admin
мы можем найти следующее письмо:
https://forum.antichat.xyz/attachments/29105603/1686745520768.png
Тут говорится о нескольких
CVE
для ядра линукс, которые появились в этом году и что-то есть в
OverlayFS / Fuse
. Гуглим:
https://forum.antichat.xyz/attachments/29105603/1686745606250.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/threads/1641530/)):
https://forum.antichat.xyz/attachments/29105603/1686745971926.png
И по инструкции с
GitHub'а
запускаем эксплоит:
https://forum.antichat.xyz/attachments/29105603/1686746038827.png
Получаем рута:
https://forum.antichat.xyz/attachments/29105603/1686746081916.png
thank_you.json
В каталоге
/root/
мы можем обнаружить послание от разработчиков
HackTheBox
-
thank_you.json
:
https://forum.antichat.xyz/attachments/29105603/1686746691266.png
Это
JSON
-код:
JSON:
{
"encoding"
:
"url"
,
"data"
:
"%7B%22encoding%22:%20%22hex%22,%20%22data%22:%20%2 27b22656e6372797074696f6e223a2022786f72222c2022656 e6372707974696f6e5f6b6579223a20224861636b546865426 f78222c2022656e636f64696e67223a2022626173653634222 c202264617461223a20224441514347585167424345454c434 14549515173534359744168553944776f664c5552765344676 461414152446e51634454414746435145423073674230556a4 152596e464130494d556745596749584a51514e487a7364466 d494345535145454238374267426942685a6f4468595a64414 94b4e7830574c526844487a73504144594848547050517a773 9484131694268556c424130594d5567504c525a594b5138485 37a4d614244594744443046426b6430487742694442306b424 1455a4e527741596873514c554543434477424144514b46533 05046307337446b557743686b7243516f464d3068585967495 24a41304b424470494679634347546f4b41676b34445555334 8423036456b4a4c4141414d4d5538524a674952446a4142427 9344b574334454168393048776f334178786f4477776664414 1454e4170594b67514742585159436a456345536f4e426b736 a41524571414130385151594b4e77424649774563614151564 4695952525330424857674f42557374427842735a58494f457 777476442774e4a30384f4c524d61537a594e4169734246694 550424564304941516842437767424345454c45674e4978785 94b6751474258514b454373444447675545775136534245714 36c6771424138434d5135464e67635a5045454942547366435 3634c4879314245414d31476777734346526f416777484f416 b484c52305a5041674d425868494243774c574341414451386 e52516f73547830774551595a5051304c495170594b524d475 37a49644379594f4653305046776f345342457454776774457 841454f676b4a596734574c4545544754734f4144456345536 35041676430447863744741776754304d2f4f7738414e67636 44f6b31444844464944534d5a48576748444267674452636e4 331677044304d4f4f68344d4d4141574a51514e48335166445 363644857674944515537486751324268636d515263444a674 5544a7878594b5138485379634444433444433267414551353 041416f734368786d5153594b4e7742464951635a4a4130474 2544d4e525345414654674e4268387844456c6943686b72435 54d474e51734e4b7745646141494d425355644144414b48475 242416755775341413043676f78515241415051514a59674d6 44b524d4e446a424944534d635743734f4452386d415163334 7783073515263456442774e4a3038624a773050446a6363444 4514b57434550467734344241776c4368597242454d6650416 b5259676b4e4c51305153794141444446504469454445516f3 6484555684142556c464130434942464c534755734a3045474 36a634152534d42484767454651346d4555557643685571424 2464c4f7735464e67636461436b434344383844536374467a4 24241415135425241734267777854554d6650416b4c4b55384 24a785244445473615253414b4553594751777030474151774 731676e42304d6650414557596759574b784d47447a304b435 364504569635545515578455574694e68633945304d494f775 9524d4159615052554b42446f6252536f4f4469314245414d3 14741416d5477776742454d644d526f6359676b5a4b684d4b4 348514841324941445470424577633148414d744852566f414 130506441454c4d5238524f675148537945625254594157437 34f445238394268416a4178517851516f464f6763544978736 46141414e4433514e4579304444693150517a7778534151774 36c67684441344f4f6873414c685a594f424d4d486a4249436 95250447941414630736a4455557144673474515149494e776 3494d674d524f776b47443351634369554b444341454555643 04351736d547738745151594b4d7730584c685a594b5138584 16a634246534d62485767564377353043776f334151776b424 241596441554d4c676f4c5041344e446964494843636257447 74f51776737425142735a5849414242454f637874464e67425 950416b47537a6f4e48545a504779414145783878476b6c694 742417445775a4c497731464e5159554a45454142446f63444 37761485767564445736b485259715477776742454d4a4f783 04c4a67344b49515151537a734f52534557476930544541343 3485263724777466b51516f464a78674d4d41705950416b475 37a6f4e48545a504879305042686b31484177744156676e423 04d4f4941414d4951345561416b434344384e467a464457436 b50423073334767416a4778316f41454d634f786f4a4a6b385 049415152446e514443793059464330464241353041525a694 46873724242415950516f4a4a30384d4a304543427a6847623 067344554774a517738784452556e4841786f4268454b49414 5524e7773645a477470507a774e52516f4f47794d314377345 7427831694f78307044413d3d227d%22%7D"
}
В нём есть
encoding
- метод шифрования/кодирования, и
data
- сами данные. Раздекодим
URL
(советую использовать cyberchef):
https://forum.antichat.xyz/attachments/29105603/1686746769451.png
Получаем
JSON
-код с
data
в хексе, декодим:
https://forum.antichat.xyz/attachments/29105603/1686746875930.png
Мы получили опять
JSON
-код с шифрованием
XOR
, а сам
data
закодирован в
Base64
, выбираем следующие рецепты в cyberchef:
https://forum.antichat.xyz/attachments/29105603/1686747032867.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
Большое спасибо, что дочитали мою статью до конца. Если есть какие-то ошибки/неточности, то, пожалуйста, напишите об этом в комментариях