stihl не предоставил(а) никакой дополнительной информации.
В этом райтапе я покажу, как использовать инъекцию команд в LaTeX, чтобы прочитать файлы на сервере и получить критически важные данные. Затем повысим привилегии через gnuplot.
Проходить будем тренировочную машину Topology с площадки Hack The Box. Уровень ее — легкий.
И запускаем сканирование портов.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Скрипт нашел всего два открытых порта:
Главная страница сайта
Ошибка при переходе на latex.topology.htb
Заносим и этот домен в /etc/hosts и обновляем страницу.
Главная страница latex.topology.htb
На странице видим поле ввода, которое принимает от пользователя формулу на языке LaTeX. Но к этому вернемся позже, а сначала просканируем другие поддомены при помощи ffuf.
или Зарегистрируйся и Для просмотра ссылки Войди или Зарегистрируйся.
Я предпочитаю легкий и очень быстрый Для просмотра ссылки Войдиили Зарегистрируйся. При запуске указываем следующие параметры:
Задаем все параметры и получаем вот такую команду:
Результат сканирования поддоменов с помощью ffuf
Но в вывод попадают абсолютно все варианты из списка, а значит, нужно использовать фильтры, к примеру по размеру страницы. Для этого добавим параметр -fs, который отсеет все страницы заданного размера.
Результат сканирования поддоменов с помощью ffuf
Находим еще два поддомена: dev и stats. Поэтому обновляем запись в файле /etc/hosts и просматриваем новые сайты.
На первом нас встречает HTTP-аутентификация, а на втором просто отображается картинка.
Главная страница сайта dev.topology.htb
Главная страница сайта stats.topology.htb
Больше ничего не получив, возвращаемся к форме LaTeX.
Мы же можем использовать служебные конструкции LaTeX в наших целях, а именно попробовать выполнить команды на удаленном хосте либо попытаться прочитать локальные файлы в системе. Первым делом отправим простейшую нагрузку для чтения файла /etc/passwd.
Ответ сервера
Как оказалось, не все нагрузки выполняются на сервере, и мы получаем сообщение о том, что наша инъекция обнаружена. Добиться выполнения команд не вышло, а вот найти нагрузку для чтения файлов мне удалось. Следующий код позволит прочитать первую строку из файла /etc/passwd.
Строка из файла /etc/passwd
Итак, мы узнали, что на сервере есть фильтр, а у нас есть возможность его обходить. Идем дальше и используем другую нагрузку для чтения всего файла.
Содержимое файла /etc/passwd
Таким образом мы получаем возможность читать локальные файлы на сервере.
Помнишь сайт dev, закрытый HTTP-аутентификацией? В его каталоге на сервере наверняка найдется файл .htpasswd, содержащий имя пользователя и хеш его пароля в формате Apache MD5. Ведь именно их запрашивает сервер, отображая окошко HTTP-аутентификации. Давай получим эти учетные данные:
Содержимое файла .htpasswd
Используем справку hashcat, чтобы узнать режим перебора хеша.
Справка hashcat
Получаем режим 1600, который и указываем при переборе в параметре -m.
Результат перебора хеша
С полученными учетными данными мы можем посмотреть сайт.
Главная страница сайта dev.topology.htb
На сайте ничего не находим и пробуем с теми же учетными данными авторизоваться по SSH. Получилось! Забираем первый флаг.
Флаг пользователя
или Зарегистрируйся (PEASS) — набор скриптов, которые проверяют систему на автомате и выдают подробный отчет о потенциально интересных файлах, процессах и настройках.
Загружаем на хост скрипт для Linux, даем право на выполнение и запускаем сканирование. В выводе будет много информации, давай посмотрим, что именно может помочь нам повысить привилегии.
Среди файлов, доступных для записи, есть каталог /opt/gnuplot. Это единственный проект в каталоге /opt.
Файлы, доступные для записи
Пробуем прочитать содержимое этого каталога и получаем сообщение об ошибке. Оказывается, каталог /opt/gnuplot доступен для записи и исполнения, но недоступен для чтения.
Для просмотра ссылки Войдиили Зарегистрируйся
Разрешения каталога gnuplot
Тогда попробуем отследить запускаемые процессы, так как аргументы одного из них могут раскрыть содержимое засекреченного каталога. Для этого используем утилиту Для просмотра ссылки Войдиили Зарегистрируйся.
Логи pspy64
Видим, что происходит поиск файлов с расширением .plt в каталоге /opt/gnuplot. Найденные файлы выполняются с помощью gnuplot, причем от имени пользователя root. Так мы можем создать файл privesc.plt и записать в него функцию system. Она выполнит команду chmod, чтобы назначить S-бит командной оболочке /bin/bash.
Спустя время проверим разрешения на файл /bin/bash.
Разрешения файла /bin/bash
Заходим как суперпользователь и забираем флаг.
Флаг рута
Машина захвачена!
Проходить будем тренировочную машину 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.

Точка входа
На главной странице есть ссылка, которая переносит нас на новый домен latex.topology.htb.
Заносим и этот домен в /etc/hosts и обновляем страницу.
10.10.11.217 topology.htb latex.topology.htb

На странице видим поле ввода, которое принимает от пользователя формулу на языке LaTeX. Но к этому вернемся позже, а сначала просканируем другие поддомены при помощи ffuf.
Справка: сканирование веба c ffuf
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде Для просмотра ссылки ВойдиЯ предпочитаю легкий и очень быстрый Для просмотра ссылки Войди
- -w — словарь (я использую словари из набора Для просмотра ссылки Войди
или Зарегистрируйся); - -t — количество потоков;
- -u — URL;
- -H — заголовок HTTP.
Задаем все параметры и получаем вот такую команду:
ffuf -u [URL]http://topology.htb/[/URL] -w subdomains-dnsscan-10000.txt -t 256 -H 'Host: FUZZ.topology.htb'

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

Находим еще два поддомена: dev и stats. Поэтому обновляем запись в файле /etc/hosts и просматриваем новые сайты.
10.10.11.217 topology.htb latex.topology.htb dev.topology.htb stats.topology.htb
На первом нас встречает HTTP-аутентификация, а на втором просто отображается картинка.


Больше ничего не получив, возвращаемся к форме 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

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

Таким образом мы получаем возможность читать локальные файлы на сервере.
Чтение произвольного файла
Что первым делом смотреть на сервере? Нас в первую очередь интересуют файлы, содержимое которых может раскрыть нам важную информацию для продвижения. Это могут быть какие‑то учетные данные, настройки и даже исходники сайтов.Помнишь сайт dev, закрытый HTTP-аутентификацией? В его каталоге на сервере наверняка найдется файл .htpasswd, содержащий имя пользователя и хеш его пароля в формате Apache MD5. Ведь именно их запрашивает сервер, отображая окошко HTTP-аутентификации. Давай получим эти учетные данные:
$\lstinputlisting{/var/www/dev/.htpasswd}$

Используем справку hashcat, чтобы узнать режим перебора хеша.
hashcat --example | grep -A5 -B5 '$apr1'

Получаем режим 1600, который и указываем при переборе в параметре -m.
hashcat -m 1600 -a 0 hash.txt rockyou.txt

С полученными учетными данными мы можем посмотреть сайт.

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

Локальное повышение привилегий
Теперь нам необходимо собрать информацию. Я буду использовать для этого скрипты PEASS.Справка: скрипты PEASS
Что делать после того, как мы получили доступ в систему от имени пользователя? Вариантов дальнейшей эксплуатации и повышения привилегий может быть очень много, как в Linux, так и в Windows. Чтобы собрать информацию и наметить цели, можно использовать Для просмотра ссылки ВойдиЗагружаем на хост скрипт для Linux, даем право на выполнение и запускаем сканирование. В выводе будет много информации, давай посмотрим, что именно может помочь нам повысить привилегии.
Среди файлов, доступных для записи, есть каталог /opt/gnuplot. Это единственный проект в каталоге /opt.

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

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

Видим, что происходит поиск файлов с расширением .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.

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

Машина захвачена!