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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/joakimbulow/cve-2026-23907
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийАнализ вредоносных программТестирование на ПроникновениеАнализ Бинарных Файлов
GitHubjoakimbulow/cve-2026-23907

CVE-2026-23907

Доказательство концепции эксплуатации уязвимости обхода пути в Apache PDFBox (CVE-2026-23907), демонстрирующее произвольную запись файлов через вредоносные PDF-файлы со встроенными файлами.

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

Популярное

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

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

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

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

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

Уязвимость Path Traversal в Apache PDFBox

Сводка по уязвимости

Описание

Пример кода ExtractEmbeddedFiles в Apache PDFBox не санирует имена файлов при извлечении встроенных файлов из PDF-документов. Злоумышленник может внедрить файлы с последовательностями обхода каталогов (../), чтобы записать файлы в произвольные места файловой системы.

Уязвимый код

Файл: pdfbox/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractEmbeddedFiles.java

root@kitploit:~
private static void extractFile(String filePath, String filename, PDEmbeddedFile embeddedFile)
        throws IOException
{
    String embeddedFilename = filePath + filename;  // NO SANITIZATION
    File file = new File(embeddedFilename);
    File parentDir = file.getParentFile();
    if (!parentDir.exists())
    {
        parentDir.mkdirs();  // Creates arbitrary directories
    }
    try (FileOutputStream fos = new FileOutputStream(file))
    {
        fos.write(embeddedFile.toByteArray());  // Writes to arbitrary location
    }
}

Параметр filename поступает напрямую из PDF-файла без проверки.

Воздействие

  • Произвольная запись файлов: Запись файлов в любые места, где у приложения есть разрешения
  • Повышение привилегий: Перезапись SSH-ключей, конфигурационных файлов
  • Удалённое выполнение кода: Перезапись исполняемых файлов, cron-заданий, systemd-сервисов
  • Уничтожение данных: Перезапись критически важных системных файлов

Сценарии атак

  1. Внедрение SSH-ключа

    • Имя встроенного файла: ../../.ssh/authorized_keys
    • Содержимое: Открытый ключ злоумышленника
    • Результат: Доступ по SSH
  2. Внедрение cron-задания

    • Имя встроенного файла: ../../../etc/cron.d/malicious
    • Содержимое: Вредоносный скрипт
    • Результат: Повышение привилегий + закрепление в системе
  3. Перезапись конфигурации

    • Имя встроенного файла: ../../config/database.yml
    • Содержимое: Вредоносные учётные данные
    • Результат: Хищение данных

Доказательство концепции

Включённые файлы

  • create_malicious_pdf.py — Генерирует вредоносный PDF-файл с обходом каталогов
  • TestPathTraversal.java — Демонстрирует уязвимость
  • test_path_traversal.sh — Автоматизированный тестовый скрипт
  • malicious_path_traversal.pdf — Предварительно сгенерированный вредоносный PDF-файл

Запуск PoC

Быстрый тест

root@kitploit:~
./test_path_traversal.sh

Ручной тест

root@kitploit:~
# 1. Сгенерировать вредоносный PDF-файл
python3 create_malicious_pdf.py

# 2. Скомпилировать тест (требуется JAR-файл PDFBox)
javac -cp pdfbox-app.jar TestPathTraversal.java

# 3. Запустить тест
java -cp .:pdfbox-app.jar TestPathTraversal malicious_path_traversal.pdf

# 4. Проверить обход каталогов
cat /tmp/path_traversal_poc

Ожидаемый результат

root@kitploit:~
PATH TRAVERSAL DETECTED!
Expected path prefix: /current/working/directory
Actual path: /tmp/path_traversal_poc

Затронутые версии

  • Apache PDFBox 3.0.6 — Подтверждённая уязвимость

Затронутые компоненты

  • Пример кода ExtractEmbeddedFiles.java
  • Приложения, использующие аналогичные шаблоны
  • Любой код, вызывающий PDComplexFileSpecification.getFilename() без санизации
Скачать инструмент