Всякий раз встретив FTP мы должны попробовать поискать его data-порт среди всех 65к портов. При нормальных условиях data-порты открываются только в момент подключения клиентов и будут практически неуловимы для нас. Но если перед нами постоянно открытый и не меняющийся tcp-порт - возможно это прокси на FTP-data (его nmap -sV должен быть пустой).
Если мы найдем такой data-порт и будем к нему постоянно подключаться
while :; do nc -nv target 54321; done
то в какой то момент мы начнем получать данные вместо легитимных клиентов (Confidentiality:High). А если писать туда while :; do nc -nv target 54321 < rce.bat; done
, то соответственно записывать произвольный контент вместо клиентов (Integrity: High). Ну и всё это время сами клиенты не смогут получать доступ к серверу (Availability: High).Почему так происходит? Данная атака называется
port stealing
и была открыта ещё в прошлом тысячелетии. Защита от неё проста - сервер должен сверять IP.src. Но если перед FTP-сервером с DMZ происходит проксирование/форвард, с подменой IP.src, тогда FTP-служба видит всех клиентов как один IP и начинает путаться в сокетах, руководствуясь лишь временем подключения.Получается некий FTP Smuggling. Эту давно забытую уязвимость мы обнаружили на одном из проектов вместе с @levatein.