Собираем docker образ:
docker build --network=host --tag=pdfparser_php_workshop_img .Запускаем контейнер:
docker run --rm -v "$(pwd)/assets/:/root/assets" -it --network=host pdfparser_php_workshop_img /bin/bashПрименяем патч:
cd /root/pdfparser
git apply ../assets/add_fuzz.patchВ качестве корпуса будут использоваться тестовые pdf файлы из библиотеки
Создаем директорию для найденных падений
cd /root
mkdir crashes && cd crashesЗапускаем фаззинг PDF парсера
cd /root/crashes
php-fuzzer fuzz /root/pdfparser/tests/fuzz/fuzz_target.php /root/pdfparser/samples/Использование словаря
cd /root/crashes
php-fuzzer fuzz /root/pdfparser/tests/fuzz/fuzz_target.php /root/pdfparser/samples/ --dict /root/assets/pdf.dictВ случае нахождения падения есть возможность минимизировать его и посмотреть на его вывод
cd /root/crashes
php-fuzzer minimize-crash /root/pdfparser/tests/fuzz/fuzz_target.php /root/crashes/crash-HASH.txt
php-fuzzer run-single /root/pdfparser/tests/fuzz/fuzz_target.php minimized-HASH.txt Копируем результат фаззинга на хост
cp -r /root/crashes/root/assetsСоздаем директорию для покрытия
cd /root
mkdir coverageГенерируем html отчёт
cd /root
php-fuzzer report-coverage pdfparser/tests/fuzz/fuzz_target.php pdfparser/samples/ coverage/Копируем результат покрытия на хост
cp -r /root/coverage /root/assetsgit clone https://github.com/gehaxelt/phuzz.git
cd phuzz/code/
docker compose up -d db --build --force-recreate
docker compose up -d web --build --force-recreatedocker compose up db --force-recreate
docker compose up web --force-recreateПосле этого приложение должно быть доступно между контейнерами по порту 80 (http://web/), а также извне контейнеров по адресу http://localhost:8080, который сопоставлен с портом 80 веб-контейнера.
docker compose up fuzzer-dvwa-sqli-low-1 --build --force-recreateРезультат будет выведен на экран и в /fuzzer/output/