Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-8088 — CVE-2025-8088 | Kitploit
Инструменты/GitHubGitHub/nhattanhh/cve-2025-8088
Механизмы персистентностиАнализ уязвимостейЭксплуатацияАнализ Бинарных ФайловОбучение и ОбразованиеРазработка Полезной Нагрузки
GitHubnhattanhh/cve-2025-8088

CVE-2025-8088

CVE-2025-8088

Репозиторий
131 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Технический разбор: CVE-2025-8088 — Устойчивый обход пути

Отказ от ответственности: этот материал предназначен исключительно для образовательных и исследовательских целей. Не используйте эту информацию в любых вредоносных целях.

Сегодня мы подробно разберем интересную уязвимость обхода пути, известную как CVE-2025-8088. Эта уязвимость позволяет атакующему записать произвольный файл в любое место в системе жертвы, когда она извлекает специально созданный RAR-архив. Что делает этот эксплойт особенно интересным, так это его подход «дробовика» для гарантированной доставки полезной нагрузки независимо от того, куда пользователь извлечет архив.

В этом посте мы разберем технику, использованную в приведенном Python Proof-of-Concept (PoC), для создания вредоносного .rar-файла.


Цель: закрепление

Конечная цель этого PoC — классическая и эффективная: закрепление. Используя уязвимость обхода пути, эксплойт пытается поместить полезную нагрузку (payload.bat) в папку автозагрузки Windows (AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup). Любой исполняемый файл или скрипт, помещенный сюда, автоматически запустится при следующем входе пользователя в систему, что предоставит атакующему постоянный доступ.


Стратегия эксплойта: пошаговый разбор

Python-скрипт автоматизирует многоэтапный процесс создания итогового файла exploit.rar. Разберем его логику.

Шаг 1: Подготовка — приманки, полезная нагрузка и заполнитель

Первым делом скрипт подготавливает компоненты:

  1. Полезная нагрузка: Создается простой пакетный файл с именем payload.bat. Это вредоносный файл, который мы хотим доставить на машину жертвы.
root@kitploit:~
PAYLOAD = "@echo off\necho Payload executed!\npause\n"
  1. Приманки: Скрипт генерирует несколько безобидных на вид текстовых файлов (например, file1.txt, file2.txt и т.д.). Эти файлы служат двум целям: они делают архив похожим на легитимный и, что более важно, выступают носителями нашей скрытой полезной нагрузки.
root@kitploit:~
def create_files() -> Tuple[List[Path], Path]:
    # ...
    for i in range(NUM_DEPTHS):
        decoy = Path(f"{DECOY_FILE_PREFIX}{i+1}.txt")
  1. Заполнитель: Определяется длинная строка из повторяющихся символов (" X " * 200). Этот заполнитель будет внедрен в метаданные архива, а затем заменен на наш вредоносный путь.

Шаг 2: Скрытое оружие — альтернативные потоки данных (ADS)

Это ключевая часть техники. Вместо того чтобы называть файл путем обхода, скрипт использует возможность файловой системы NTFS под названием альтернативные потоки данных (ADS). ADS позволяет «прятать» данные внутри существующего файла.

Скрипт присоединяет payload.bat в качестве ADS к каждому файлу-приманке. Имя этого потока — как раз то место, где используется заполнитель. По сути, создаются пути, которые для файловой системы выглядят так: file1.txt:XXXXXXXXXXXXXXXXXXXX...

Содержимое payload.bat теперь тайно хранится внутри file1.txt.

root@kitploit:~
def attach_ads(decoy: Path, placeholder: str):
    """Attach payload to decoy as Alternate Data Stream"""
    ads_path = f"{decoy}:{placeholder}"
    with open(ads_path, "wb") as f:
        f.write(Path("payload.bat").read_bytes())

Шаг 3: Создание основы — «чистый» RAR-архив

Затем скрипт находит в системе инструмент командной строки Rar.exe и использует его для создания легитимного базового архива (base.rar). Этот архив содержит все файлы-приманки, которые теперь тайно несут полезную нагрузку в своих альтернативных потоках данных.

На этом этапе base.rar — совершенно корректный, не вредоносный архив. WinRAR может извлечь его без каких-либо проблем, и он создаст файлы-приманки с их длинными странными именами ADS.

root@kitploit:~
def create_base_rar(rar_exe: str, decoys: List[Path]) -> Path:
    # ...
    subprocess.run(
        f'"{rar_exe}" a -ep -os "{base_rar}" {files}',
        # ...
    )

Шаг 4: Подход «дробовика» — генерация множества путей обхода

Вот здесь эксплойт становится хитрым и устойчивым. Атакующий не знает, куда жертва извлечет архив. Будет ли это C:\Users\victim\Downloads? C:\? D:\Temp?

Чтобы преодолеть эту неопределенность, скрипт генерирует список различных строк обхода пути, каждая с разной глубиной:

  • ..\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
  • ..\..\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
  • ..\..\..\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
  • ...и так далее.

Идея в том, что при наличии нескольких глубин по крайней мере одна из них успешно пройдет путь из каталога извлечения к корню файловой системы (например, C:\), а затем в целевую папку автозагрузки.

root@kitploit:~
def build_relative_paths() -> List[str]:
    """Generate paths with different traversal depths"""
    paths = []
    for depth in range(1, NUM_DEPTHS + 1):
        paths.append(("..\\" * depth) + RELATIVE_DROP_PATH)
    return paths

Шаг 5: Магия — бинарное патчирование заголовков RAR

Это сердце эксплойта. Скрипт открывает base.rar в бинарном режиме и проводит «хирургию» над ним.

Он перебирает внутреннюю структуру архива в поисках заголовка каждого файла (file1.txt, file2.txt и т.д.). Внутри каждого заголовка он находит имя заполнителя ADS (:XXXXXXXXXXXXXXXXXXXX...) и заменяет его одним из вредоносных путей обхода, сгенерированных на предыдущем шаге.

  • Заголовок для file1.txt получает путь с ..\.
  • Заголовок для file2.txt получает путь с ..\..\.
  • И так далее.
root@kitploit:~
def patch_rar(base_rar: Path, placeholder: str, relative_paths: List[str]) -> Path:
    # ...
    while pos + 4 <= len(data) and current_file_index < len(target_paths_utf8):
        # ...
        # Find the placeholder and replace it with the target path
        c = patch_placeholder_in_header(hdr, placeholder_utf8, target_utf8)
        # ...

Шаг 6: Заметание следов — пересчет контрольных сумм CRC

Простое изменение данных заголовка повредило бы архив. WinRAR использует контрольную сумму CRC32 для проверки целостности каждого блока заголовка. Если контрольная сумма не совпадает с содержимым заголовка, будет выдана ошибка.

PoC предвидит это. После патчирования заголовка вредоносным путем он пересчитывает правильную контрольную сумму CRC32 для всего измененного блока заголовка и записывает новую контрольную сумму обратно в файл. Это делает модифицированный архив абсолютно корректным с точки зрения WinRAR.

root@kitploit:~
def rebuild_all_header_crc(buf: bytearray) -> int:
    """Recalculate CRC checksums for all headers"""
    # ...
    while pos + 4 <= len(buf):
        # ...
        # Calculate CRC for the header region
        region = buf[block_start + 4:header_end]
        crc = zlib.crc32(region) & 0xFFFFFFFF
        # Write the new CRC back into the buffer
        struct.pack_into("<I", buf, block_start, crc)
        # ...
Скачать инструмент