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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2021-21017 | Kitploit
Инструменты/GitHubGitHub/zeusbox/cve-2021-21017
Криминалистика памятиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийФаззингЭксплуатация Бинарных Файлов
GitHubzeusbox/cve-2021-21017

CVE-2021-21017

Репозиторий
44125 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

CVE-2021-21017

Очередной баг Adobe Reader с меткой порядка байтов :)

root@kitploit:~
# IA32 plugin, ver. 2020.013.20074.
char * __cdecl FUN_2581894c(char *base_url,LPCSTR rel_url)
{
  ............................................................
  ............................................................
  if ((base_url != (char *)0x0) && (rel_url != (LPCSTR)0x0)) {
    if ((*base_url == -2) && (base_url[1] == -1)) {
      iVar6 = bytes_len(base_url);
      pcVar7 = base_url + iVar6;
      pcVar8 = rel_url + 2;
      do {
        do {
          cVar3 = *pcVar8;
          pcVar1 = pcVar8 + 2;
          *pcVar7 = cVar3;
          pcVar2 = pcVar7 + 2;
          cVar4 = pcVar8[1];
          pcVar7[1] = cVar4;
          pcVar7 = pcVar2;
          pcVar8 = pcVar1;
        } while (cVar3 != '\0');
      } while (cVar4 != '\0');
    }
    else {
      lstrcatA(base_url,rel_url);
    }
    return base_url;
  }
  .............................................................
  .............................................................
}

При построении абсолютного URL из относительного на основе baseURL PDF-документа для использования в таких API, как: app.launchURL, document.submitForm или app.media.createPlayer, если baseURL выглядит как строка UTF-16BE, то при конкатенации относительная строка также обрабатывается как UTF-16BE, хотя на самом деле это ANSI-строка.

С одной стороны, это может привести к чтению за пределами буфера (Out-of-bounds read). С другой стороны, при выделении памяти под буфер назначения относительный URL «измеряется» как ANSI-строка. Этого, конечно, недостаточно, если происходит чтение за пределами границ (строка + NULL-терминатор заполняют целый heap-чанк).

Что это означает?

Путаница типов => Чтение за пределами буфера => Переполнение кучи => FULL BUKAKE!

PoC прилагается

Чаще всего это приводит к сбою, а иногда — к перезаписи byteLength объекта ArrayBuffer значением 0xFF.

Если есть вопросы, смело обращайтесь ко мне в Twitter: https://twitter.com/Zeusb0x

Обнаружение

В каталоге PDF-документа будет запись URI, содержащая косвенную ссылку на объект-словарь. В нём, в свою очередь, будет запись Base, которая и является фактическим baseURL. Скорее всего, он будет представлен в шестнадцатеричном виде и будет начинаться с символов \xFE\xFF (см. PoC). К счастью, это единственный способ изменить baseURL документа в обычном, непривилегированном контексте. Попытка сделать это из JavaScript вызовет исключение безопасности.

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