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

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

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

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

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

Категории

Все категории
Loading categories
poodle-PoC — :poodle: Атака Poodle (Padding Oracle On Downgraded Legacy Encryption) CVE-2014-3566 :poodle: | Kitploit
Инструменты/GitHubGitHub/mpgn/poodle-poc
Инструменты шифрования/дешифрованияАнализ уязвимостейЭксплуатацияВеб-безопасностьКриптографияТестирование на ПроникновениеОбучение и Образование
GitHubmpgn/poodle-poc

poodle-PoC

🐩 Атака Poodle (Padding Oracle On Downgraded Legacy Encryption) CVE-2014-3566 🐩

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

Популярное

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

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

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

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

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

Poodle PoC 🐩 🐩 🐩

Концепт-доказательство атаки Poodle (Padding Oracle On Downgraded Legacy Encryption):

эксплойт типа «человек посередине», использующий откат клиентов интернет- и охранного ПО к SSL 3.0

Атака Poodle позволяет восстановить зашифрованные данные, отправленные клиентом на сервер, если используется протокол защиты транспортного уровня SSLv3. Она не позволяет восстановить закрытый ключ, используемый для шифрования запроса.

imgonline-com-ua-twotoone-luefsrwi2n8iqy

1. 🐩 Концепция атаки 🐩

SSLv3 и режим шифрования CBC

SSLv3 — это протокол для шифрования/дешифрования и защиты ваших данных. В нашем случае он использует режим сцепления блоков шифра CBC. Открытый текст делится на блоки в зависимости от алгоритма шифрования (AES, DES, 3DES), а длина кратна 8 или 16. Если открытый текст не заполняет длину, в конец добавляется padding для заполнения недостающего пространства. Настоятельно рекомендую открыть изображения шифрования и дешифрования, чтобы читать этот README.

ШифрованиеДешифрование
Ci = Ek(Pi ⊕ Ci-1), and C0 = IVPi = Dk(Ci) ⊕ Ci-1, and C0 = IV

По сути, это простое XOR, также можно посмотреть это видео (не моё) https://www.youtube.com/watch?v=0D7OwYp6ZEc.

Запрос, отправленный по HTTPS с использованием SSLv3, шифруется с помощью AES/DES в режиме CBC. Особенность SSLv3 по сравнению с TLS1.x — это padding. В SSLv3 padding заполняется случайными байтами, кроме последнего байта, который равен длине padding.

Пример:

T|E|X|T|0xab|0x10|0x02, где 0xab|0x10|0x02 — это padding.
T|E|X|T|E|0x5c|0x01, где 0x5c|0x01 — это padding.

Кроме того, последний блок может быть полностью заполнен padding, то есть последний блок может быть заполнен случайными байтами, кроме последнего байта.

T|E|X|T|E|0x5c|0x01|0x3c|0x09|0x5d|0x08|0x04|0x07, где |0x5c|0x01|0x3c|0x09|0x5d|0x08|0x04|0x07 — это padding, из которого атакующему известен только 0x07. Поэтому если атакующий может влиять на блок padding, он сможет узнать, что последний байт последнего блока равен длине блока.

Влияние на padding

Атакующий должен иметь возможность заставить жертву отправлять запросы (например, с помощью JavaScript при эксплуатации XSS). Затем он может контролировать путь и данные каждого запроса:

Пример: добавление байта «A» к пути запроса

GET / HTTP/1.1\r\nSECRET COOKIE\r\n\r\n
GET /AAA HTTP/1.1\r\nSECRET COOKIE\r\n\r\nDATA

С помощью этого приёма он может влиять на padding.

HMAC

SSLv3 также использует HMAC для проверки целостности и аутентичности открытого текста.

код аутентификации сообщений на основе хеш-функции с ключом (HMAC) — это особый тип кода аутентификации сообщений (MAC), использующий криптографическую хеш-функцию (отсюда «H») в сочетании с секретным криптографическим ключом

Благодаря этому атакующий не может перехватить и изменить запрос, а затем отправить его обратно. Если сервер столкнётся с проблемой, он отправит ошибку HMAC.

MAC-then-encrypt

Протокол SSLv3 использует следующую процедуру: получает данные от клиента, расшифровывает данные, проверяет целостность с помощью HMAC.

MAC-then-Encrypt (MAC затем шифрование): Не обеспечивает никакой целостности шифротекста, поскольку до расшифровки сообщения невозможно узнать, было ли оно подлинным или подделанным. Целостность открытого текста. Если схема шифрования пластична (malleable), возможно изменить сообщение так, чтобы оно выглядело валидным и имело корректный MAC. Это, конечно, теоретический момент, поскольку на практике секрет MAC > должен обеспечивать защиту. Здесь MAC также не может предоставить никакой информации об открытом тексте, поскольку он зашифрован.

https://crypto.stackexchange.com/questions/202/should-we-mac-then-encrypt-or-encrypt-then-mac

Это означает, что мы можем изменять зашифрованный текст без ведома сервера. Это здорово, правда :)

2. 🔑 Криптография 🔑

Сначала последний блок должен быть полностью заполнен padding, как мы видели ранее: атакующий использует путь запроса и проверяет длину запроса.

  • Он сохраняет длину исходного шифротекста
  • Он добавляет один байт в путь и проверяет длину.
    • Если длина не меняется, он добавляет ещё один байт и т.д.
    • Если же длина зашифрованного запроса меняется, он знает, что последний блок полностью заполнен padding.

Поскольку последний блок, кроме последнего байта, заполнен случайными байтами, он может заменить этот последний блок Cn на блок, который хочет расшифровать, Ci. Изменённый запрос отправляется на сервер.

Сервер:

  • удаляет padding в соответствии с длиной последнего байта
  • получает HMAC из запроса = HMAC
  • получает открытый текст
  • сравнивает hmac(открытый текст) и HMAC
    • если равны => корректный padding
    • иначе => некорректный padding

Заменяя последний блок, атакующий также изменяет последний байт последнего блока (длину padding). Существует вероятность 1/256, что последний байт, заменённый в блоке padding, совпадает с исходным; в этом случае ошибки padding не будет, и атакующий может использовать операцию XOR, чтобы восстановить последний байт блока Ci, следуя этой операции:

Pn = Dk(Cn) ⊕ Cn-1
Pn = Dk(Ci) ⊕ Cn-1
Pn = Dk(Ci) ⊕ Cn-1
xxxxxxx7 = Dk(Ci) ⊕ Cn-1
Dk(Ci) = xxxxxxx7 ⊕ Cn-1
Pi ⊕ Ci-1 = xxxxxxx7 ⊕ Cn-1
Pi = Ci-1 ⊕ xxxxxxx7 ⊕ Cn-1

(xxxxxxx7 или xxxxxxx15, где x — случайный байт)

Последний байт блока можно получить: Pi[7] = Ci-1[7] ⊕ xxxxxxx7 ⊕ Cn-1[7] В случае ошибки padding атакующему нужно закрыть SSL-сессию, чтобы выполнить ещё одно рукопожатие (новый ключ AES), получить новый шифротекст и снова заменить последний блок и т.д. (обычно требуется около +300 рукопожатий).

После восстановления одного байта он получит все остальные байты блока, добавляя один байт в путь и удаляя один байт из данных:

Запрос для восстановления байтов E,I,K,O
GET /a SECRET_COOKIE dataazerty PADDING_7
GET /aa SECRET_COOKIE dataazert PADDING_7
GET /aaa SECRET_COOKIE dataazer PADDING_7
GET /aaaa SECRET_COOKIE dataaze PADDING_7

О TLS1.0

Хотя спецификации TLS требуют от серверов проверки padding, некоторые реализации не проверяют его должным образом, из-за чего некоторые серверы уязвимы к POODLE, даже если SSL 3.0 отключён.

TLS обычно безопасен против Poodle, но некоторые реализации не проверяют padding — это как если бы мы использовали SSLv3, поэтому некоторые версии TLS уязвимы.

3. 💥 Запуск атаки 💥

В этом репозитории три файла:

  • poodle-poc.py -> концепт-доказательство (Proof of Concept), не требующее предварительных условий
  • parallelization-poodle.py -> ещё одно концепт-доказательство, но с использованием параллелизации (очень быстрое)
  • poodle-exploit.py -> эксплойт для реального сценария
1. Файл poodle-poc.py

Этот PoC исследует криптографию, лежащую в основе атаки. Этот файл позволяет простым способом понять, как работает атака.

python3 poodle-poc.py
2. Файл poodle-poc.py
Скачать инструмент