• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Hack The Box - Получаем приглашение в лабораторию для хакеров.

terezagack

RAM
Пользователь
Регистрация
30.03.2020
Сообщения
112
Реакции
125
Hack The Box это бесплатная Pentesting Lab. (Лаборатория пентеста) в которой вы можете усовершенствовать свои навыки взлома и научится чему-то новому.

Но обычным пользователям туда не попасть, вход только для избранных хацкеров. Для того, чтобы попасть в HTB нам нужно взломать систему приглашений и получить свой уникальный инвайт код. Сегодня мы с тобой этим и займёмся, поiхали!

Открываем главную страницу [CLIKE]сайта[/CLIKE][CLIKE]:[/CLIKE]

6371facd-fcc4-4403-a6fe-3590e148ca7c.png

Пролистав чуть ниже ты должен найти кнопку Join:

a1070b13-8ee1-46de-8f07-eed18db8f5f3.png

Переходим и видим следующие:

796a42e3-bc53-486f-a97e-509e7264e0cd.png

В заголовке страницы написано: "Can you hack this box?". Вызов принят. Для начала открываем просмотр кода страницы: ПКМ -> Искодный код страницы

Весь код написан в одной строке

c898920b-2251-43a8-92ed-bc5ca7b73b65.png

Нажимаем Ctrl + F и ищем все скрипты.js. Нам нужен лишь один - inviteapi.min.js:

66ce38af-4585-434c-bfa8-fd14b670905e.png

Перейдя по которому мы можем найти нужный нам POST запрос - makeInviteCode

9979e582-8c1a-43f4-985e-d6c848889f11.png

Переходим обратно на страницу с инвайтом нажимаем F12, и открываем консоль:

8f85045a-fe71-429c-9252-ca84faeded30.png

В консоли пишем: makeInviteCode () и получаем следующие:

data: "Va beqre gb trarengr gur vaivgr pbqr, znxr n CBFG erdhrfg gb /ncv/vaivgr/trarengr"
enctype: "ROT13"
5e0f4ee8-535e-47e1-ae64-f0c4d79b133f.png

Всё что написано в кавычках - зашифрованный текст методом ROT с ключом 13. Об этом говорит строка enctype: "ROT13". Те, кто проходил мой мини-квест по криптографии уже знают как его декордировать. Мы с тобой будем использовать онлайн сервис для декодирования ROT13.

eb58d5a1-9884-4cfa-8d02-690fd72db3e3.png

"In order to generate the invite code, make a POST request to /api/invite/generate"
cf24a7a3-7fa4-4f27-9f41-0665d44c8e19.png

Если мы перейдём по пути hackthebox.eu/api/invite/generate Появляется надпись о том, что мы не на верном пути:

6ab31d2f-6638-4e6b-b1ac-186f5de3e930.png

Нам нужно сделать POST запрос. Делается это при помощи дополнительного расширения для браузера HackBar (Firefox / Chrome)

F12 -> HackBar.

Теперь в самом ХакБаре тыкаем на Load URL:

c24ef403-5cf0-4bfb-84fc-c01c66f841ed.png

Также нажимаем на Post data (т.к нам нужно сделать POST запрос) в поле для ввода вписываем:

POST /?foo=bar HTTP/1.1
Host: hackthebox.eu
Connection: close

33267da5-5f64-4a27-8b1e-7edf9690e6f5.png

Теперь нажимаем Execute и наш запрос отправился. В ответе от сервера видим следующее:

2665ed13-625a-4d43-8520-c3453263f7f0.png

Казалось бы , что это то, что мы искали, но нет. Код зашифрован в Base64, об этом говорит символ "=" в конце. Опять декодируем текст в онлайн декодере:

d0b8e9b8-0ed9-4328-a8ab-c3eca09b831a.png

Этот код окончательный. Вводим его в поле для инвайта:

b9412ec3-32c7-4d40-8935-6481b152a307.png

И у нас показывается поздравление о прохождении и поля для регистрации:

a2129e73-bdc3-4d02-bea5-3db68ab7e8ac.png

Подтверждаем почту, логинимся.

a48c4adb-38fe-4d4d-8ee6-48a9bd6cda3c.png

Для примера решим одно из сотен заданий в лаборатории. И поймём как нарабатывать практику.
Задание называется Snake

3ec2efef-9894-4c09-85b8-39151f4fb2ef.png

Скрин задания
Качаем архив, запускаем скрипт. Весь скрипт (Python 2.7):

#!/usr/bin/python2.7
import random
lr = '\x64'
print '''
___________.__ _________ __
\__ ___/| |__ ____ / _____/ ____ _____ | | __ ____
| | | | \_/ __ \ \_____ \ / \\__ \ | |/ // __ \
| | | Y \ ___/ / \ | \/ __ \| <\ ___/
|____| |___| /\___ > /_______ /___| (____ /__|_ \\___ >
\/ \/ \/ \/ \/ \/ \/

'''
chains = [0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x72, 0x6f, 0x6c, 0x6c]
db = '\x6e'
ef = '\x63'
chars = []
keys = [0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x21, 0x21]
nn = '\x61'
lock_pick = random.randint(0, 0x3e8)
lock = lock_pick * 2
password = [0x69, 0x74, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x61, 0x73, 0x79]
lock = lock + 10
ty = '\x61'
lock = lock / 2
auth = [0x6b, 0x65, 0x65, 0x70, 0x20, 0x74, 0x72, 0x79, 0x69, 0x6e, 0x67]
lock = lock - lock_pick
gh = '\x6e'
print 'The Snake Created by 3XPL017'
print 'Your number is ' + str(lock_pick)
for key in keys:
keys_encrypt = lock ^ key
chars.append(keys_encrypt)
for chain in chains:
chains_encrypt = chain + 0xA
chars.append(chains_encrypt)
aa = '\x61'
rr = '\x6f'
slither = aa + db + nn + ef + rr + gh + lr + ty
print 'Authentication required'
print ''
user_input = raw_input('Enter your username\n')
if user_input == slither:
pass

else:
print 'Wrong username try harder'
exit()
pass_input = raw_input('Enter your password\n')
for passes in pass_input:
for char in chars:
if passes == str(chr(char)):
print 'Good Job'
break
else:
print 'Wrong password try harder'
exit(0)
break

При запуске скрипт генерирует случайное число с помощью random.randint(0, 0x3e8) и выводит в строке "Your number is ...", но это было лишь для отвлечения внимания.

Первым делом я решил решить первую часть - Юзернейм. Проанализировав код, стало понятно, что за юзернейм отвечают эти строки:

ecf8dbdf-5461-4133-914a-55c66c08a589.png

А если быть точнее, то переменная slither это и есть наш юзернейм, было множество вариантов как решить первую часть "головоломки", и я придумал самую простую: просто вывести эту переменную на экран!

da87a553-0f80-4aba-86de-b3efd6e9d404.png

print '\nU53RN4M3: ' + slither

Запускаем скрипт, смотрим вывод:

3746fba8-6be6-4149-9d0a-48ba814721ae.png

Юзернейм - anaconda. Если юзернейм верный, скрипт запросит пароль, что собственно и произошло:

27b9e3a1-f2c8-4479-b87c-2b5bee55808f.png

Т.к мы решали лишь первую часть, пароль нам неизвестен. Проанализировав код на функцию пароля нашёл эти строки:

4404a843-9326-4df7-8877-3062552100e9.png

Passes - пароль. Единственная загвоздка в том, что passes - не переменная. Соответственно сделать также, как и с юзернеймом не получится (потому-что пароль можно вывести в консоль, только после его объявления, а объвляется он когда верный, а мы его не знаем, замкнутый круг). Но я придумал довольно хитрую штуку: Вывести пароль при неверном заполнении, то есть ввести любые символы, а после строки "Wrong password try harder" вывести настоящий пароль, потому-что он уже объявлён.

5f19e888-b961-4eae-8e4a-840f9ab58890.png

print '\nP455W0RD; ' + str(chr(char))

Запускаем, вводим правильный юзернейм и НЕправильный пасс:

3ed638b7-5f5f-4432-9a64-943acc2e9469.png

u ? серьёзно?

84d4eba1-e4e3-4028-bca6-a021511c3f1f.png

Видимо серьёзно...

Но на этом мы не останавливаемся, расскажу ещё способы решения этой задачки.

1 вариант.

Просто поменять значение переменной slither, например на D$_Admin, почему нет?

6de96b32-5d34-4694-9693-3e780e3c17bd.png

slither = 'D$_Admin'

6b81f6e0-d1ad-4bbc-9adb-1cb028db832e.png

2 вариант.

В этом варианте подойдёт абсолютно любой юзернейм путём спроса у пользователя:

fce08a76-c401-4d56-991b-ac8c89dbb050.png

slither = raw_input('Who?\n')

9f2e8c4a-adb2-49f0-886a-7fa1b3c2ff5d.png



Было ещё много вариантов решения, но эти самые простые.



Я показал лишь одно из сотен заданий в Hack The Box. Остальные же для наработки практики в хакинге вам придётся решать самим...
 
У меня была проблема с расширением HackBar под Firefox, так и не получилось через него получить Base64 код.
У кого есть такая же проблема, или кто не хочет устанавливать лишних расширений, или кто ленив и хочет получить инвай в одну строку:
[CLIKE]curl -X POST https://www.hackthebox.eu/api/invite/generate[/CLIKE]
 
Очень плохо что в самой лаборатории все на иностраном языке, а так статья очень полезная! ?
так язык пентестинга как и всей ИБ - английский)
 
Очень плохо что в самой лаборатории все на иностраном языке, а так статья очень полезная! ?
Если на русском, тогда вам на «Киберполигон» Луки Сафонова.
 
Без знания английского в этой теме продвинуться не получится.
Очень плохо что в самой лаборатории все на иностраном языке, а так статья очень полезная! ?

Никогда не слышала про этот "полигон". Но зашла и ужаснулась количеством военных терминов, приправленных словом "кибер". Это вообще что-то серьезное или с тем же HTB конкуренции не выдержит?
Если на русском, тогда вам на «Киберполигон» Луки Сафонова.
 
Никогда не слышала про этот "полигон". Но зашла и ужаснулась количеством военных терминов, приправленных словом "кибер". Это вообще что-то серьезное или с тем же HTB конкуренции не выдержит?
Чтобы судить о "серьезности" полигона для начала надо попробовать его пройти. Все зависит от вашей подготовки. У кого-то это займет 5 минут, а у кого-то 5 дней (в лучшем случае). Первое задание там взломать сайт через найденные уязвимости.
 
Чтобы судить о "серьезности" полигона для начала надо попробовать его пройти. Все зависит от вашей подготовки. У кого-то это займет 5 минут, а у кого-то 5 дней (в лучшем случае). Первое задание там взломать сайт через найденные уязвимости.
Конечно, нужно попробовать, чтобы судить. Поэтому и интересно мнение других людей, так как руки до него не дошли. Да и на слух как то не попадался.
 
Конечно, нужно попробовать, чтобы судить. Поэтому и интересно мнение других людей, так как руки до него не дошли. Да и на слух как то не попадался.
Вы как будто корову выбираете:)
Тут все просто. Интересно - зашли попробовали. И сразу поймете, под силу вам этот квест или нет.
 
Hack The Box это бесплатная Pentesting Lab. (Лаборатория пентеста) в которой вы можете усовершенствовать свои навыки взлома и научится чему-то новому.

Но обычным пользователям туда не попасть, вход только для избранных хацкеров. Для того, чтобы попасть в HTB нам нужно взломать систему приглашений и получить свой уникальный инвайт код. Сегодня мы с тобой этим и займёмся, поiхали!

Открываем главную страницу Скрытое содержимоеСкрытое содержимое

6371facd-fcc4-4403-a6fe-3590e148ca7c.png

Пролистав чуть ниже ты должен найти кнопку Join:

a1070b13-8ee1-46de-8f07-eed18db8f5f3.png

Переходим и видим следующие:

796a42e3-bc53-486f-a97e-509e7264e0cd.png

В заголовке страницы написано: "Can you hack this box?". Вызов принят. Для начала открываем просмотр кода страницы: ПКМ -> Искодный код страницы

Весь код написан в одной строке

c898920b-2251-43a8-92ed-bc5ca7b73b65.png

Нажимаем Ctrl + F и ищем все скрипты.js. Нам нужен лишь один - inviteapi.min.js:

66ce38af-4585-434c-bfa8-fd14b670905e.png

Перейдя по которому мы можем найти нужный нам POST запрос - makeInviteCode

9979e582-8c1a-43f4-985e-d6c848889f11.png

Переходим обратно на страницу с инвайтом нажимаем F12, и открываем консоль:

8f85045a-fe71-429c-9252-ca84faeded30.png

В консоли пишем: makeInviteCode () и получаем следующие:



5e0f4ee8-535e-47e1-ae64-f0c4d79b133f.png

Всё что написано в кавычках - зашифрованный текст методом ROT с ключом 13. Об этом говорит строка enctype: "ROT13". Те, кто проходил мой мини-квест по криптографии уже знают как его декордировать. Мы с тобой будем использовать онлайн сервис для декодирования ROT13.

eb58d5a1-9884-4cfa-8d02-690fd72db3e3.png


cf24a7a3-7fa4-4f27-9f41-0665d44c8e19.png

If we follow the path hackthebox.eu/api/invite/generate An inscription appears that we are not on the right track:

6ab31d2f-6638-4e6b-b1ac-186f5de3e930.png

We need to make a POST request. This is done using an additional extension for the browser HackBar ( Firefox / Chrome )

F12 -> HackBar.

Now, in the HackBar itself, we poke at the Load URL:

c24ef403-5cf0-4bfb-84fc-c01c66f841ed.png

We also click on Post data (because we need to make a POST request) in the input field, enter:

POST /? Foo = bar HTTP / 1.1
Host: hackthebox.eu
Connection: close

33267da5-5f64-4a27-8b1e-7edf9690e6f5.png

Now we click Execute and our request was sent. In the response from the server, we see the following:

2665ed13-625a-4d43-8520-c3453263f7f0.png

It would seem that this is what we were looking for, but no. The code is encrypted in Base64, this is indicated by the "=" symbol at the end. Again, we decode the text in the online decoder:

d0b8e9b8-0ed9-4328-a8ab-c3eca09b831a.png

This code is final. We enter it in the invite field:

b9412ec3-32c7-4d40-8935-6481b152a307.png

And we show congratulations on the passage and the fields for registration:

a2129e73-bdc3-4d02-bea5-3db68ab7e8ac.png

We confirm the mail, log in.

a48c4adb-38fe-4d4d-8ee6-48a9bd6cda3c.png

For example, let's solve one of hundreds of tasks in the laboratory. And we will understand how to develop practice.
The task is called Snake

3ec2efef-9894-4c09-85b8-39151f4fb2ef.png


Download the archive, run the script. Entire script (Python 2.7):

#! / usr / bin / python2.7
import random
lr = '\ x64'
print '' '
___________.__ _________ __
\ __ ___ / | | __ ____ / _____ / ____ _____ | | __ ____
| | | | \ _ / __ \ \ _____ \ / \\ __ \ | | / // __ \
| | | Y \ ___ / / \ | \ / __ \ | <\ ___ /
| ____ | | ___ | / \ ___> / _______ / ___ | (____ / __ | _ \\ ___>
\ / \ / \ / \ / \ / \ / \ /

'' '
chains = [0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x72, 0x6f, 0x6c, 0x6c]
db = '\ x6e'
ef = '\ x63'
chars = []
keys = [0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x21, 0x21]
nn = '\ x61'
lock_pick = random.randint (0, 0x3e8)
lock = lock_pick * 2
password = [0x69, 0x74, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x61, 0x73, 0x79]
lock = lock + 10
ty = '\ x61'
lock = lock / 2
auth = [0x6b, 0x65, 0x65, 0x70, 0x20, 0x74, 0x72, 0x79, 0x69, 0x6e, 0x67]
lock = lock - lock_pick
gh = '\ x6e'
print 'The Snake Created by 3XPL017'
print 'Your number is' + str (lock_pick)
for key in keys:
keys_encrypt = lock ^ key
chars.append (keys_encrypt)
for chain in chains:
chains_encrypt = chain + 0xA
chars.append (chains_encrypt)
aa = '\ x61'
rr = '\ x6f'
slither = aa + db + nn + ef + rr + gh + lr + ty
print 'Authentication required'
print ''
user_input = raw_input ('Enter your username \ n')
if user_input == slither:
pass

else:
print 'Wrong username try harder'
exit ()
pass_input = raw_input ('Enter your password \ n')
for passes in pass_input:
for char in chars:
if passes == str (chr (char)):
print 'Good Job'
break
else:
print 'Wrong password try harder'
exit (0)
break

When launched, the script generates a random number using random.randint (0, 0x3e8) and prints "Your number is ..." on the line, but this was just a distraction.

First of all, I decided to solve the first part - Username. After analyzing the code, it became clear that these lines are responsible for the username:

ecf8dbdf-5461-4133-914a-55c66c08a589.png

To be more precise, the slither variable is our username, there were many options for how to solve the first part of the "puzzle", and I came up with the simplest one: just display this variable on the screen!

da87a553-0f80-4aba-86de-b3efd6e9d404.png

print '\ nU53RN4M3:' + slither

Run the script, see the output:

3746fba8-6be6-4149-9d0a-48ba814721ae.png

The username is anaconda. If the username is correct, the script will ask for a password, which actually happened:

27b9e3a1-f2c8-4479-b87c-2b5bee55808f.png

Since we solved only the first part, we do not know the password. After analyzing the code for the password function, I found these lines:

4404a843-9326-4df7-8877-3062552100e9.png

Passes - password. The only catch is that passes is not a variable. Accordingly, it will not work as well as with a username (because the password can be displayed in the console only after it is announced, and it is announced when it is correct, but we do not know it, a vicious circle). But I came up with a rather tricky thing: Display the password if it is incorrectly filled, that is, enter any characters, and after the line "Wrong password try harder" display the real password, because it has already been declared.

5f19e888-b961-4eae-8e4a-840f9ab58890.png

print '\ nP455W0RD; '+ str (chr (char))

Launch, enter the correct username and WRONG pass:

3ed638b7-5f5f-4432-9a64-943acc2e9469.png

u? Really?

84d4eba1-e4e3-4028-bca6-a021511c3f1f.png

Apparently seriously ...

But we do not stop at this, I will tell you more ways to solve this problem.

Option 1.

Just change the value of the slither variable, for example to D $ _Admin, why not?

6de96b32-5d34-4694-9693-3e780e3c17bd.png

slither = 'D $ _Admin'

6b81f6e0-d1ad-4bbc-9adb-1cb028db832e.png

Option 2.

In this version, absolutely any username is suitable by demand from the user:

fce08a76-c401-4d56-991b-ac8c89dbb050.png

slither = raw_input ('Who? \ n')

9f2e8c4a-adb2-49f0-886a-7fa1b3c2ff5d.png



There were many more solutions, but these are the simplest ones.



I showed only one of hundreds of tasks in Hack The Box. The rest, to develop practice in hacking, you will have to decide for yourself ...

Nice thread!
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх