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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/whatthefuzz/openssl-fuzz
Анализ уязвимостейЭксплуатацияФаззингКриптографияАнализ Бинарных ФайловОбучение и Образование
GitHubwhatthefuzz/openssl-fuzz

openssl-fuzz

Поиск CVE-2022-3786 (openssl) с помощью Mayhem

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

Популярное

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

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

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

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

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

Фаззинг OpenSSL

В этом репозитории есть сопутствующий пост в блоге под названием "Как найти CVE-2022-3786 (openssl) с помощью Mayhem" по адресу https://www.seandeaton.com.

tl;dr

Всё это уже сделано за вас с помощью включённого Dockerfile (также доступен на DockerHub). Запустить можно так:

root@kitploit:~
# Build the container
docker build --tag openssl-cve-2022-3768 .
# Or if you just want to pull down the existing one:
TODO
# Ensure that you're in this project's root directory (ie you can see ./output/)
# Mount the ./input/ directory to the containers /input. This is for fuzz input.
# This is Linux specific, Windows I think has %CD% in lieu of $(pwd)?
docker run --interactive --tty --volume $(pwd)/input:/input

Точка входа контейнера — просто запустить afl, так что вы можете начать фаззинг немедленно. Чтобы переопределить это поведение, добавьте /bin/bash в конец строки docker run.

Получение уязвимой версии

Последний коммит, содержащий уязвимость, — это коммит SHA 3b421ebc64c7b52f1b9feb3812bdc7781c784332 от 1 ноября 2022 года. Она была исправлена в коммите SHA 680e65b94c916af259bfdc2e25f1ab6e0c7a97d6. Уязвимую версию легко получить с помощью git:

root@kitploit:~
# Clone the repository.
git clone git://git.openssl.org/openssl.git
# Change into the working directory.
cd openssl
# Detach HEAD from origin to examine the code as it was when it was vulnerable.
git checkout 3b421ebc64c7b52f1b9feb3812bdc7781c784332

Компиляция

Для компиляции мы используем gcc-компилятор AFL (потому что у меня постоянно возникали неопределённые ссылки с clang). Из-за небольшого смещения переполнения буфера мы также хотим использовать санитайзер адресов (ASAN), включаемый через переменную окружения AFL AFL_USE_ASAN. Поскольку ASAN использует большие объёмы памяти, нам также нужно ограничить адресное пространство, что можно сделать, скомпилировав программу для 32-битной архитектуры. Подробнее здесь.

Конфигурация OpenSSL для 32-бит принимает флаги -m32 и linux-generic32. Скрипт compile.sh делает это за вас.

root@kitploit:~
# Configuration
AFL_USE_ASAN=1 CC=afl-gcc-fast CXX=afl-g++-fast ./Configure -m32 linux-generic32
# Make
AFL_USE_ASAN=1 CC=afl-gcc-fast CXX=afl-g++-fast CFLAGS="-m32" CXXFLAGS="-m32" make

В зависимости от ресурсов вашей системы это может занять некоторое время. После компиляции нам нужно скомпилировать наш харнесс. Прилагается Makefile.

root@kitploit:~
# Compile the harness.
$ make harness
# Run the harness.
$ ./harness input/seed0.txt
ossl_a2ulabel returned: 1

И всё, теперь вы можете приступить к фаззингу ossl_a2ulabel в openssl. С AFL команда выглядит примерно так (или просто используйте включённый скрипт run.sh).

root@kitploit:~
afl-fuzz -i /input -o /output /harness/harness @@
Скачать инструмент