• [ Регистрация ]Открытая и бесплатная
  • Tg admin@ALPHV_Admin (обязательно подтверждение в ЛС форума)

Статья Эксплуатируем LaTeX-инъекцию для доступа к серверу

stihl

Moderator
Регистрация
09.02.2012
Сообщения
1,178
Розыгрыши
0
Реакции
510
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
В этом райтапе я покажу, как использовать инъекцию команд в LaTeX, чтобы прочитать файлы на сервере и получить критически важные данные. Затем повысим привилегии через gnuplot.
Проходить будем тренировочную машину Topology с площадки Hack The Box. Уровень ее — легкий.

warning​

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

Разведка​


Сканирование портов​

Добавляем IP-адрес машины в /etc/hosts:

10.10.11.217 topology.htb
И запускаем сканирование портов.

Справка: сканирование портов​

Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:

Код:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1

Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Результат работы скрипта
Скрипт нашел всего два открытых порта:
  • 22 — служба OpenSSH 8.2p1;
  • 80 — веб‑сервер Apache 2.4.41.
Брутить SSH смысла нет, поэтому сразу переходим к сайту.

Главная страница сайта
Главная страница сайта

Точка входа​

На главной странице есть ссылка, которая переносит нас на новый домен latex.topology.htb.

Ошибка при переходе на latex.topology.htb
Ошибка при переходе на latex.topology.htb
Заносим и этот домен в /etc/hosts и обновляем страницу.

10.10.11.217 topology.htb latex.topology.htb
Главная страница latex.topology.htb
Главная страница latex.topology.htb
На странице видим поле ввода, которое принимает от пользователя формулу на языке LaTeX. Но к этому вернемся позже, а сначала просканируем другие поддомены при помощи ffuf.

Справка: сканирование веба c ffuf​

Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде Для просмотра ссылки Войди или Зарегистрируйся и Для просмотра ссылки Войди или Зарегистрируйся.
Я предпочитаю легкий и очень быстрый Для просмотра ссылки Войди или Зарегистрируйся. При запуске указываем следующие параметры:
  • -w — словарь (я использую словари из набора Для просмотра ссылки Войди или Зарегистрируйся);
  • -t — количество потоков;
  • -u — URL;
  • -H — заголовок HTTP.
Место перебора помечается словом FUZZ.
Задаем все параметры и получаем вот такую команду:

ffuf -u [URL]http://topology.htb/[/URL] -w subdomains-dnsscan-10000.txt -t 256 -H 'Host: FUZZ.topology.htb'
Результат сканирования поддоменов с помощью ffuf
Результат сканирования поддоменов с помощью ffuf
Но в вывод попадают абсолютно все варианты из списка, а значит, нужно использовать фильтры, к примеру по размеру страницы. Для этого добавим параметр -fs, который отсеет все страницы заданного размера.

ffuf -u [URL]http://topology.htb/[/URL] -w subdomains-dnsscan-10000.txt -t 256 -H 'Host: FUZZ.topology.htb' -fs 6767
Результат сканирования поддоменов с помощью ffuf
Результат сканирования поддоменов с помощью ffuf
Находим еще два поддомена: dev и stats. Поэтому обновляем запись в файле /etc/hosts и просматриваем новые сайты.

10.10.11.217 topology.htb latex.topology.htb dev.topology.htb stats.topology.htb
На первом нас встречает HTTP-аутентификация, а на втором просто отображается картинка.

Главная страница сайта dev.topology.htb
Главная страница сайта dev.topology.htb
Главная страница сайта stats.topology.htb
Главная страница сайта stats.topology.htb
Больше ничего не получив, возвращаемся к форме LaTeX.

Точка опоры​

LaTeX позволяет автоматизировать многие задачи при подготовке научных публикаций и самых разных пособий. Он облегчает нумерацию разделов, ввод формул, добавление перекрестных ссылок и многие другие вещи. Готовя свой документ, автор указывает логическую структуру текста, а LaTeX решает вопросы его отображения. То есть содержание отделено от оформления.

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

\input{/etc/passwd}
Ответ сервера
Ответ сервера
Как оказалось, не все нагрузки выполняются на сервере, и мы получаем сообщение о том, что наша инъекция обнаружена. Добиться выполнения команд не вышло, а вот найти нагрузку для чтения файлов мне удалось. Следующий код позволит прочитать первую строку из файла /etc/passwd.

Код:
\newread\file
\openin\file=/etc/passwd
\read\file to\line
\text{\line}
\closein\file

Строка из файла /etc/passwd
Строка из файла /etc/passwd
Итак, мы узнали, что на сервере есть фильтр, а у нас есть возможность его обходить. Идем дальше и используем другую нагрузку для чтения всего файла.

$\lstinputlisting{/etc/passwd}$
Содержимое файла /etc/passwd
Содержимое файла /etc/passwd
Таким образом мы получаем возможность читать локальные файлы на сервере.


Чтение произвольного файла​

Что первым делом смотреть на сервере? Нас в первую очередь интересуют файлы, содержимое которых может раскрыть нам важную информацию для продвижения. Это могут быть какие‑то учетные данные, настройки и даже исходники сайтов.

Помнишь сайт dev, закрытый HTTP-аутентификацией? В его каталоге на сервере наверняка найдется файл .htpasswd, содержащий имя пользователя и хеш его пароля в формате Apache MD5. Ведь именно их запрашивает сервер, отображая окошко HTTP-аутентификации. Давай получим эти учетные данные:

$\lstinputlisting{/var/www/dev/.htpasswd}$
Содержимое файла .htpasswd
Содержимое файла .htpasswd
Используем справку hashcat, чтобы узнать режим перебора хеша.

hashcat --example | grep -A5 -B5 '$apr1'
Справка hashcat
Справка hashcat
Получаем режим 1600, который и указываем при переборе в параметре -m.

hashcat -m 1600 -a 0 hash.txt rockyou.txt
Результат перебора хеша
Результат перебора хеша
С полученными учетными данными мы можем посмотреть сайт.

Главная страница сайта dev.topology.htb
Главная страница сайта dev.topology.htb
На сайте ничего не находим и пробуем с теми же учетными данными авторизоваться по SSH. Получилось! Забираем первый флаг.

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

Локальное повышение привилегий​

Теперь нам необходимо собрать информацию. Я буду использовать для этого скрипты PEASS.

Справка: скрипты PEASS​

Что делать после того, как мы получили доступ в систему от имени пользователя? Вариантов дальнейшей эксплуатации и повышения привилегий может быть очень много, как в Linux, так и в Windows. Чтобы собрать информацию и наметить цели, можно использовать Для просмотра ссылки Войди или Зарегистрируйся (PEASS) — набор скриптов, которые проверяют систему на автомате и выдают подробный отчет о потенциально интересных файлах, процессах и настройках.
Загружаем на хост скрипт для Linux, даем право на выполнение и запускаем сканирование. В выводе будет много информации, давай посмотрим, что именно может помочь нам повысить привилегии.

Среди файлов, доступных для записи, есть каталог /opt/gnuplot. Это единственный проект в каталоге /opt.

Файлы, доступные для записи
Файлы, доступные для записи
Пробуем прочитать содержимое этого каталога и получаем сообщение об ошибке. Оказывается, каталог /opt/gnuplot доступен для записи и исполнения, но недоступен для чтения.

Для просмотра ссылки Войди или Зарегистрируйся
Разрешения каталога gnuplot
Разрешения каталога gnuplot
Тогда попробуем отследить запускаемые процессы, так как аргументы одного из них могут раскрыть содержимое засекреченного каталога. Для этого используем утилиту Для просмотра ссылки Войди или Зарегистрируйся.

Логи pspy64
Логи pspy64
Видим, что происходит поиск файлов с расширением .plt в каталоге /opt/gnuplot. Найденные файлы выполняются с помощью gnuplot, причем от имени пользователя root. Так мы можем создать файл privesc.plt и записать в него функцию system. Она выполнит команду chmod, чтобы назначить S-бит командной оболочке /bin/bash.

echo 'system "chmod u+s /bin/bash"' > /opt/gnuplot/privesc.plt
Спустя время проверим разрешения на файл /bin/bash.

Разрешения файла /bin/bash
Разрешения файла /bin/bash

Справка: бит SUID​

Когда у файла установлен атрибут setuid (S-атрибут), обычный пользователь, запускающий этот файл, получает повышение прав до пользователя — владельца файла в рамках запущенного процесса. После получения повышенных прав приложение может выполнять задачи, которые недоступны обычному пользователю. Из‑за возможности состояния гонки многие операционные системы игнорируют S-атрибут, установленный shell-скриптам.
Заходим как суперпользователь и забираем флаг.

/bin/bash -p
Флаг рута
Флаг рута

Машина захвачена!
 
Activity
So far there's no one here
Сверху Снизу