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

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

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

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

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

Категории

Все категории
Loading categories
malicious-pdf — Генерирует вредоносные тестовые PDF-файлы для тестирования на проникновение, баг-баунти и редтиминга. Проверяет SSRF, XSS, XXE, кражу учетных данных NTLM и эксфильтрацию данных в просмотрщиках PDF, конвертерах и веб-приложениях. Интегрируется с Burp Collaborator и Interact.sh. | Kitploit
Инструменты/GitHubGitHub/jonaslejon/malicious-pdf
Инструменты фишингаСканеры уязвимостейГенерация полезной нагрузкиЭксплуатацияЭксплуатация веб-приложенийЭксфильтрация данныхТестирование на ПроникновениеОбучение и ОбразованиеRed Teaming
GitHubjonaslejon/malicious-pdf

malicious-pdf

Генерирует вредоносные тестовые PDF-файлы для тестирования на проникновение, баг-баунти и редтиминга. Проверяет SSRF, XSS, XXE, кражу учетных данных NTLM и эксфильтрацию данных в просмотрщиках PDF, конвертерах и веб-приложениях. Интегрируется с Burp Collaborator и Interact.sh.

4.1k5462 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

malicious-pdf.png

made-with-python OpenSSF Best Practices

Генератор вредоносных PDF ☠️

Создаёт 67 вредоносных PDF-файлов для тестирования phone-home обратных вызовов, SSRF, XSS, XXE, кражи учётных данных NTLM и утечки данных в PDF-просмотрщиках, конвертерах и веб-приложениях. Можно использовать с Burp Collaborator или Interact.sh

Используется для пентеста, охоты за багами и/или red-teaming и т.п. Я создал этот инструмент, потому что мне нужен был инструмент для генерации набора PDF-файлов с различными ссылками. Только для образовательных и профессиональных целей.

Использование```

pip install -r requirements.txt python3 malicious-pdf.py burp-collaborator-url

root@kitploit:~
Результат будет записан в каталог `output/` как: test1.pdf, test2.pdf, test3.pdf и т. д.

### Параметры```
--output-dir DIR    Directory to save generated PDF files (default: output/)
--no-credit         Do not embed credit/attribution metadata in generated PDFs
--obfuscate LEVEL   Obfuscation level (0-3):
                      0 = None (default)
                      1 = PDF name hex encoding + string octal/hex encoding
                      2 = Level 1 + JS bracket notation + javascript: URI case/whitespace obfuscation
                      3 = Level 2 + FlateDecode stream compression

Пример с обфускацией:``` python3 malicious-pdf.py https://your-interact-sh-url --obfuscate 2

root@kitploit:~
Максимальная обфускация (уровень 4 оборачивает JS-пейлоады в заглушку-декодер base64, чтобы исходные вызовы API никогда не появлялись в виде литеральных подстрок):```
python3 malicious-pdf.py https://your-interact-sh-url --obfuscate 4

Purpose

  • Тестирование веб-страниц/сервисов, принимающих PDF-файлы
  • Тестирование продуктов безопасности
  • Тестирование PDF-ридеров
  • Тестирование конвертеров PDF
  • Тестирование серверных библиотек обработки PDF (PDFBox, iText и т. д.)
  • Тестирование инструментов статического анализа PDF — поэтапные JS-нагрузки (поле формы /V, base64-декодер) обходят наивные regex-сканеры /JS
  • Охота за багами (bug bounty) — полезно для поиска SSRF, XXE, слепых обратных вызовов и утечек NTLM в точках загрузки файлов, конвертерах PDF в изображения и конвейерах обработки документов в программах, принимающих PDF-файлы

Благодарности

  • Небезопасные возможности PDF
  • Burp Suite UploadScanner
  • Bad-Pdf
  • Любопытное исследование вредоносных PDF-документов
  • Доклад «Portable Document Flaws 101» на Black Hat USA 2020
  • Adobe Reader — обратный вызов PDF через XSLT-таблицу стилей в XFA
  • PoC для Foxit PDF Reader, DoHyun Lee
  • Тестовый файл EICAR от Stas Yakobov
  • Множественные уязвимости PDF — FormCalc и XXE
  • PDF — Mess with the web — внедрение заголовков FormCalc
  • Adobe Reader PDF — внедрение запроса на стороне клиента
  • ImageMagick — внедрение команд через пароль PDF
  • Портативная эксфильтрация данных — исследование PortSwigger
  • CVE-2024-4367 — произвольное выполнение JS в PDF.js
  • Безопасность форматов PDF — Philippe Lagadec
  • CVE-2016-2175 — XXE в Apache PDFBox
  • CVE-2017-9096 — XXE в iText
  • CVE-2020-29075 — тихое DNS-отслеживание в Acrobat Reader

В СМИ

  • Brisk Infosec
  • Daily REDTeam
  • Вредоносный PDF-файл | Red Team | Тестирование на проникновение
  • John Hammond — Может ли PDF-файл быть вредоносным ПО?
  • Black Hat Ethical Hacking
  • 0x1 Pentesting Collection
  • Security Toolkit / WADComs
  • unsafe.sh
  • Cristi Zot в LinkedIn
  • Siva R. в LinkedIn

Полная матрица тестов

Нажмите, чтобы развернуть все 70 тестовых случаев

Todo: Новые тестовые случаи

  • API-разведки и снятия отпечатков Acrobat JS — Добавить тестовые случаи для API-разведки/снятия отпечатков, использованных в цепочке эксплойтов 0-day Adobe от апреля 2026 (ссылка): Collab.isDocReadOnly (зондирование файловой системы), app.plugIns (перечисление установленных плагинов), app.viewerVersion (определение версии)

Todo: Методы обфускации, ещё не реализованные

  • Шифрование PDF с пустым паролем — Зашифровать все строки/потоки пустым пользовательским паролем. Документ открывается без запроса, но инструменты статического анализа не могут прочитать содержимое. Самый большой пробел в текущей обфускации. См.: Didier Stevens, Насколько безопасно шифрование PDF?
  • Потоки объектов (ObjStm) — Спрятать PDF-объекты внутри сжатых потоков-контейнеров. Простые парсеры (включая PDFiD без флага -O) полностью пропускают объекты. См.: Спецификация PDF ISO 32000 §7.5.7
  • Хранение кода через getAnnots() — Разбить JavaScript-нагрузку по полям метаданных аннотации (subject, author). Извлекать во время выполнения через app.doc.getAnnots()[n].subject и выполнять через eval. См.: Julia Wolf — обфускация PDF с помощью getAnnots()
  • Извлечение данных из словаря Info — Хранить закодированную нагрузку в полях трейлера /Info (/Title, /Author). Извлекать во время выполнения через info.Title в JS. См.: трюки с PDF от corkami
  • Извлечение значений полей AcroForm — Хранить фрагменты нагрузки в значениях /V полей формы. Извлекать через getField("name").value в JS. См.:

Не будет реализовано

  • CVE-2023-26369 — переполнение кучи вне границ при обработке TTF-шрифта в Adobe Acrobat — Требует бинарной эксплуатации (heap spray, ROP-цепочки, шеллкод). Публичного PoC нет. Нельзя получить простой обратный вызов.
  • CVE-2021-28550 — Use-After-Free в Adobe Acrobat — Требует цепочки бинарной эксплуатации + обхода песочницы (CVE-2021-31199/31201). Публичного PoC нет. Нельзя получить простой обратный вызов.

История звёзд

Star History Chart

Скачать инструмент
  • CVE-2022-28244 — обход CSP в Acrobat Reader
  • CVE-2018-5158 — внедрение PostScript-калькулятора в PDF.js Firefox
  • CVE-2018-20065 — URI-действие в PDFium без жеста пользователя
  • ExpMon — анализ сложной 0-day уязвимости Adobe Reader (апрель 2026) — вдохновение для test33_13/14/15 и уровня обфускации 4
  • Тестовый файлФункцияCVE/СсылкаВектор атакиМетодВоздействие
    test1.pdfcreate_malpdf()CVE-2018-4993Доступ к внешнему файлуДействие /GoToE с UNC-путёмСетевой обратный вызов через файловую систему
    test1_1.pdfcreate_malpdf()CVE-2018-4993Доступ к внешнему файлуДействие /GoToE с HTTPS-URLСетевой обратный вызов через HTTPS
    test2.pdfcreate_malpdf2()Отправка XFA-формыЭксфильтрация данных формыXDP-форма с событием submitАвтоматическая отправка формы
    test3.pdfcreate_malpdf3()Внедрение JavaScriptВыполнение кода/OpenAction с app.openDoc()Загрузка внешнего документа
    test4.pdfcreate_malpdf4()CVE-2019-7089Внедрение XSLTXFA с внешней XSLT-таблицей стилейОбратный вызов UNC-пути
    test5.pdfcreate_malpdf5()Исследование PDF101URI-действиеТип действия /URIDNS-префетчинг/HTTP-запрос
    test6.pdfcreate_malpdf6()Исследование PDF101Действие Launch/Launch с внешним URLВыполнение внешнего ресурса
    test7.pdfcreate_malpdf7()Исследование PDF101Удалённый PDFДействие /GoToRЗагрузка удалённого PDF
    test8.pdfcreate_malpdf8()Исследование PDF101Отправка формы/SubmitForm с HTML-флагамиОтправка данных формы
    test9.pdfcreate_malpdf9()Исследование PDF101Импорт данныхДействие /ImportDataИмпорт внешних данных
    test10.pdfcreate_malpdf10()CVE-2017-10951Выполнение JavaScriptОбратный вызов Foxit this.getURL()Сетевой обратный вызов через Foxit Reader
    test11.pdfcreate_malpdf11()Тест EICARОбнаружение антивирусомВстроенная строка EICARТестирование антивируса
    test12.pdfcreate_malpdf12()CVE-2014-8453Эксфильтрация данных FormCalcФункция XFA FormCalc Post()Эксфильтрация данных с cookies в пределах того же источника
    test13.pdfcreate_malpdf13()Внедрение запросаВнедрение CRLF-заголовковОтправка XFA с textEncoding CRLFМанипуляция HTTP-заголовками
    test14.svgcreate_malpdf14()Внедрение команд в ImageMagickВнедрение команд через SVG/MSLПолиглот SVG-MSL с атрибутом authenticateУдалённое выполнение кода через ImageMagick
    test15.pdfcreate_malpdf15()Спецификация PDFВнедрение заголовков FormCalcXFA FormCalc Post() с пользовательскими заголовкамиПроизвольное внедрение HTTP-заголовков
    test16.pdfcreate_malpdf16()Спецификация PDFJavaScript через GotoE/GoToE с URI javascript:XSS в браузере при встраивании PDF через <embed>/<object>
    test17.pdfcreate_malpdf17()CVE-2014-8452Внедрение XXEВнешняя сущность XMLData.parse()Разрешение внешних XML-сущностей
    test18.pdfcreate_malpdf18()Исследование PortSwiggerВнедрение URI в аннотациюНеэкранированные скобки внедряют JS-действие через дублирующий ключ /AXSS через вывод PDF-Lib/jsPDF
    test19.pdfcreate_malpdf19()Исследование PortSwiggerАвтовыполнение PVЭкранная аннотация /AA /PV запускает JS при отображении страницыАвтоматическое выполнение кода (Acrobat)
    test20.pdfcreate_malpdf20()Исследование PortSwiggerТриггер закрытия PCАннотация /AA /PC запускает JS при закрытии страницыВыполнение кода при закрытии (Acrobat)
    test21.pdfcreate_malpdf21()Исследование PortSwiggerSubmitForm SubmitPDF/SubmitForm с флагом 256 отправляет весь PDFЭксфильтрация полного содержимого PDF
    test22.pdfcreate_malpdf22()Исследование PortSwiggerJS submitForm()this.submitForm() с cSubmitAs: "PDF"Отправка содержимого PDF (Acrobat)
    test23.pdfcreate_malpdf23()Исследование PortSwiggerВнедрение виджета-кнопкиНевидимый виджет /Btn, перекрывающий страницу, JS по кликуВыполнение кода (Chrome/PDFium)
    test24.pdfcreate_malpdf24()Исследование PortSwiggerSSRF через текстовое полеПоле виджета /Tx с POST через submitForm()Слепой SSRF через данные формы
    test25.pdfcreate_malpdf25()Исследование PortSwiggerИзвлечение содержимогоgetPageNthWord() читает весь текст и эксфильтрует егоЭксфильтрация отображаемого текста
    test26.pdfcreate_malpdf26()Исследование PortSwiggerТриггер наведения мышиАннотация /AA /E запускает JS при входе курсораВыполнение кода при наведении (PDFium)
    test27——УдалёнДубликат test3 (Acrobat OpenAction JS) + test23 (Chrome Widget Btn)—
    test28.pdfcreate_malpdf28()Исследование PortSwiggerПерехват URLНеэкранированные скобки внедряют новое действие /URIПеренаправление по клику через PDF-Lib/jsPDF
    test29.pdfcreate_malpdf29()CVE-2024-4367Внедрение FontMatrixСтрока FontMatrix шрифта Type1 выходит за пределы c.transform()Произвольное выполнение JS в PDF.js (Firefox < 126)
    test30.pdfcreate_malpdf30()Исследование PDF101Внешний поток XObjectImage XObject загружает данные с удалённого URL через /FS /URLТихий обратный вызов при рендеринге страницы (без действий/JS)
    test31.pdfcreate_malpdf31()Исследование PDF101Действие Thread/S /Thread с удалённым FileSpecСетевой обратный вызов через ссылку на поток
    test32.pdfcreate_malpdf32()Исследование PDF101Launch с печатью/Launch с /Win << /O /print >> принудительно выполняет удалённую загрузкуСетевой обратный вызов через операцию печати
    test33_1.pdfcreate_malpdf33_1()Исследование PDF101JS: this.submitForm()Обратный вызов отправки формы через JS AcrobatAcrobat Reader
    test33_2.pdfcreate_malpdf33_2()Исследование PDF101JS: this.getURL()Получение URL через JS AcrobatAcrobat Reader
    test33_3.pdfcreate_malpdf33_3()Исследование PDF101JS: app.launchURL()Запуск URL через JS AcrobatAcrobat Reader
    test33_4.pdfcreate_malpdf33_4()Исследование PDF101JS: app.media.getURLData()Получение медиаданных через JS AcrobatAcrobat Reader
    test33_5.pdfcreate_malpdf33_5()Исследование PDF101JS: SOAP.connect()SOAP-подключение через JS AcrobatAcrobat Reader
    test33_6.pdfcreate_malpdf33_6()Исследование PDF101JS: SOAP.request()SOAP-запрос через JS AcrobatAcrobat Reader
    test33_7.pdfcreate_malpdf33_7()Исследование PDF101JS: this.importDataObject()Импорт данных через JS AcrobatAcrobat Reader
    test33_8.pdfcreate_malpdf33_8()Исследование PDF101JS: app.openDoc()Открытие документа через JS AcrobatAcrobat Reader
    test33_9.pdfcreate_malpdf33_9()Исследование PDF101JS: fetch()Web API-обратный вызов (PDF.js/браузер)Firefox/PDF.js
    test33_10.pdfcreate_malpdf33_10()Исследование PDF101JS: XMLHttpRequestWeb API-обратный вызов (PDF.js/браузер)Firefox/PDF.js
    test33_11.pdfcreate_malpdf33_11()Исследование PDF101JS: new Image()Web API-обратный вызов изображения (PDF.js/браузер)Firefox/PDF.js
    test33_12.pdfcreate_malpdf33_12()Исследование PDF101JS: WebSocketWeb API-обратный вызов WebSocket (PDF.js/браузер)Firefox/PDF.js
    test33_13.pdfcreate_malpdf33_13()Блог Adobe 0-day (апрель 2026)JS: RSS.addFeed()Обратный вызов RSS-канала через JS AcrobatAcrobat Reader
    test33_14.pdfcreate_malpdf33_14()Блог Adobe 0-day (апрель 2026)JS: util.readFileIntoStream() + SOAP.request()Чтение локального файла + цепочка эксфильтрации (путь ошибки try/catch тоже вызывает обратный вызов)Acrobat Reader
    test33_15.pdfcreate_malpdf33_15()Блог Adobe 0-day (апрель 2026)JS-загрузчик с поэтапной загрузкой через поле формыBase64-нагрузка в виджете /Tx в /V, декодируется через getField() + util.stringFromStreamAcrobat Reader
    test34_1.pdfcreate_malpdf34_1()Исследование PDF101UNC: поток XObjectImage XObject с UNC-путёмКража NTLM через рендеринг страницы
    test34_2.pdfcreate_malpdf34_2()Исследование PDF101UNC: GoToRДействие /GoToR с UNC FileSpecКража NTLM через удалённый PDF
    test34_3.pdfcreate_malpdf34_3()Исследование PDF101UNC: ThreadДействие /Thread с UNC FileSpecКража NTLM через ссылку на поток
    test34_4.pdfcreate_malpdf34_4()Исследование PDF101UNC: URIДействие /URI с UNC-путёмКража NTLM через URI-действие
    test34_5.pdfcreate_malpdf34_5()Исследование PDF101UNC: JS submitFormthis.submitForm() с UNC-путёмКража NTLM через отправку формы JS
    test34_6.pdfcreate_malpdf34_6()Исследование PDF101UNC: JS getURLthis.getURL() с UNC-путёмКража NTLM через получение URL JS
    test34_7.pdfcreate_malpdf34_7()Исследование PDF101UNC: JS launchURLapp.launchURL() с UNC-путёмКража NTLM через запуск JS
    test34_8.pdfcreate_malpdf34_8()Исследование PDF101UNC: JS SOAPSOAP.connect() с UNC-путёмКража NTLM через JS SOAP
    test34_9.pdfcreate_malpdf34_9()Исследование PDF101UNC: JS openDocapp.openDoc() с UNC-путёмКража NTLM через открытие документа JS
    test35.pdfcreate_malpdf35()Исследование PDF101Словарь имён (Names)Триггер автовыполнения на уровне каталога /Names /JavaScriptАльтернативный триггер выполнения JS
    test36.pdfcreate_malpdf36()CVE-2016-2175 / CVE-2017-9096XXE в метаданных XMPXXE <!ENTITY> в потоке XMP /MetadataСерверный обратный вызов (PDFBox, iText)
    test37.pdfcreate_malpdf37()CVE-2016-2175 / CVE-2017-9096XXE в данных формы XFAXXE <!ENTITY> в потоке /AcroForm /XFAСерверный обратный вызов (PDFBox, iText)
    test38.pdfcreate_malpdf38()CVE-2020-29075Тихое отслеживание DNSКаталог /AA с триггерами /WC, /WS, /DSDNS-обратный вызов без запроса (Acrobat)
    test39.pdfcreate_malpdf39()CVE-2022-28244Обход CSPАннотация RichMedia со встроенными HTML/JSМеждоменный запрос (Acrobat)
    test40.pdfcreate_malpdf40()CVE-2018-5158Внедрение PostScript-калькулятораJS-инъекция через /FunctionType 4 в Image XObjectВыполнение JS в воркере PDF.js (Firefox)
    test41.pdfcreate_malpdf41()CVE-2018-20065URI без жеста пользователя/OpenAction с автопереходом /S /URIТихая навигация (PDFium/Chrome)
    test42.pdfcreate_malpdf42()CVE-2025-66516XXE OOB параметрическая сущность в XFAПараметрическая сущность %xxe; в /AcroForm /XFA принудительно загружает DTDСерверный слепой XXE (Tika, Confluence, Jira)
    test43.pdfcreate_malpdf43()CVE-2025-70401XSS в поле /T аннотацииТег `` в поле /T (автор) текстовой аннотацииXSS-обратный вызов (Apryse WebViewer, веб-просмотрщики)
    test44.pdfcreate_malpdf44()CVE-2024-12426Разворачивание URL в LibreOffice/URI с vnd.sun.star.expand: разворачивает ${HOME}Эксфильтрация переменных окружения (LibreOffice < 24.8.4)
    test45.pdfcreate_malpdf45()CVE-2025-59803Триггер JS через OCG при подписании/AA /WP+/DP запускают JS через OCG в процессе подписанияОбратный вызов во время подписания (Foxit < 2025.2.1)
    test46.pdfcreate_malpdf46()CVE-2026-25755Внедрение объекта jsPDFСломанная JS-строка + внедрённое авто-действие /AA /OАвтоматический обратный вызов в любом просмотрщике (jsPDF < 4.2.0)
    test47.pdfcreate_malpdf47()Спецификация PDF 2.0Встраивание HTML через Associated FilesHTML через каталог /AF + /EF EmbeddedFileОбратный вызов через встроенный HTML (просмотрщики PDF 2.0)
    test48.pdfcreate_malpdf48()Спецификация XFAXFA SOAP-обратный вызов<submit method="soap"> с событием initializeSOAP HTTP-запрос (движок XFA Acrobat)
    трюки с PDF от corkami
  • Раздельное выполнение через дерево Names — Разбить JavaScript по нескольким записям /Names, выполняемым последовательно. См.: трюки с PDF от corkami
  • Инкрементальные обновления после %%EOF — Добавлять новые объекты/действия после исходного маркера %%EOF через инкрементальное обновление. См.: маскирование контента PDF101, Didier Stevens
  • Кодирование JS через unescape() — Оборачивать JS-нагрузку в eval(unescape("%61%6C%65%72%74...")). См.: трюки с PDF от corkami
  • Фальшивые заголовки файлов — Добавлять магические байты JPEG/HTML/других форматов перед заголовком %PDF- (спецификация допускает заголовок в первых 1024 байтах). Сбивает определение типа файла. См.: corkami, Decalage
  • Проверки против эмуляции — Определять реальный Adobe Reader через event.target.zoomType == "FitPage" или проверки типов глобальных переменных перед выполнением нагрузки. См.: трюки с PDF от corkami