Пентест завершён, уязвимости найдены, но как донести результаты заказчику так, чтобы они были понятны и технарям, и бизнесу? Непонятный отчёт может обесценить вашу работу: баги останутся неисправленными, а риски — недооценёнными. В этой статье разберём, как составить отчёт о пентесте, который будет полезен, нагляден и мотивирует заказчика действовать. Вы получите чёткую структуру документа, советы по изложению и разбор типичных ошибок.
Зачем нужен отчёт и как сделать его полезным
Отчёт о пентесте — это не просто список багов. Его задача — показать ценность вашей работы: какие риски вы выявили, как их устранить и почему это важно для бизнеса. Хороший отчёт отвечает на три вопроса:- Что было проверено?
- Какие угрозы обнаружены?
- Что делать дальше?
Структура отчёта: что включить
Чтобы отчёт был логичным и понятным, придерживайтесь следующей структуры.1. Краткое резюме (Executive Summary)
Краткое резюме пишется для руководства, которое не вникает в технические детали. Опишите:- Цель пентеста (например, проверка веб-приложения на уязвимости).
- Ключевые находки (например, "обнаружены 3 критические уязвимости, позволяющие получить доступ к данным").
- Общий уровень риска и рекомендации в 2–3 предложениях.
В ходе пентеста веб-приложения выявлено 5 уязвимостей, включая 2 критические (SQL-инъекция и XSS), которые могут привести к утечке данных. Рекомендуем немедленно обновить зависимости и внедрить WAF.
2. Введение и методология
Опишите, что тестировали (приложение, сеть, API) и какие подходы использовали (например, OWASP Top 10, PTES). Укажите сроки, инструменты (Burp Suite, Nmap) и ограничения (например, запрет на DoS-атаки). Это покажет заказчику, что работа была системной.Пример методологии:
Тестирование проводилось с 10 по 15 июля 2025 года по методологии OWASP. Использовались инструменты Burp Suite, Nikto и ручной анализ. Проверялись веб-приложение и API на SQL-инъекции, XSS, CSRF и другие уязвимости.
3. Список уязвимостей
Сердце отчёта. Для каждой уязвимости: название, описание, критичность (по CVSS v4.0), доказательства, последствия, рекомендации.Подробный пример для SQL-инъекции:
- Название: SQL-инъекция в поисковой форме.
- Описание: Уязвимость позволяет вводить SQL-код в поле поиска, обходя фильтры и извлекая данные из БД.
- Критичность: Высокая (CVSS: 9.8 — высокая доступность, конфиденциальность).
- Доказательства: Шаги: 1. Войти в форму поиска. 2. Ввести ' OR '1'='1; --. 3. Получить все записи пользователей.
Python:
import requests
url = "https://example.com/search"
payload = {"query": "' OR '1'='1; --"}
response = requests.post(url, data=payload)
print(response.text) # Выводит все данные
- Последствия: Утечка ПДн, возможный доступ к админ-панели, штрафы по 152-ФЗ.
- Рекомендации: Использовать параметризованные запросы (Prepared Statements). Пример на PHP:
PHP:
$stmt = $pdo->prepare("SELECT * FROM users WHERE name = :name");
$stmt->execute(['name' => $input]);
4. Оценка рисков
Составьте таблицу или график, показывающий критичность уязвимостей. Это помогает бизнесу понять приоритеты.Пример таблицы:
Уязвимость | CVSS Score | Критичность | Вероятность | Рекомендации |
---|---|---|---|---|
SQL-инъекция | 9.8 | Высокая | Высокая | Параметризация, WAF |
XSS | 6.1 | Средняя | Средняя | CSP, экранирование |
Weak Passwords | 5.3 | Низкая | Низкая | Политика паролей |
График: используйте инструменты вроде Tableau или даже Excel для экспорта.
В 2025 тренд — интеграция с SIEM: показывайте, как уязвимости коррелируют с логами.
5. Рекомендации и план действий
Сформулируйте шаги по устранению уязвимостей, начиная с самых критичных. Укажите, что можно сделать быстро (low-hanging fruit), а что требует времени. Например:- Краткосрочные: обновить библиотеки, включить заголовки безопасности.
- Долгосрочные: внедрить SIEM, обучить разработчиков безопасному коду.
Инструменты для генерации отчётов: Dradis vs Faraday
Выбор инструмента для генерации отчётов может сэкономить время и повысить качество. Рассмотрим два популярных решения: Dradis и Faraday.Dradis: коллаборация и кастомизация
Dradis — это платформа для управления проектами пентеста с акцентом на совместную работу. Она помогает командам собирать данные, структурировать отчёты и экспортировать их в Word, PDF или HTML.- Плюсы:
- Поддержка шаблонов (OWASP, PTES).
- Интеграция с Burp Suite, Nessus, Nmap.
- Коллаборация в реальном времени для команд.
- Кастомизация: добавляйте свои поля и форматы.
- Open-source версия (Community Edition) бесплатна.
- Минусы:
- Требует настройки (особенно для интеграций).
- Интерфейс может быть неинтуитивным для новичков.
- Платная версия (Pro) дорогая для фрилансеров.
YAML:
# template.yml
title: Pentest Report
sections:
- Executive Summary
- Methodology
- Findings
- Recommendations
export_format: docx
Faraday: автоматизация и аналитика
Faraday — платформа для управления уязвимостями и генерации отчётов с акцентом на автоматизацию. Подходит для больших проектов, где нужно консолидировать данные из разных источников.- Плюсы:
- Интеграция с 70+ инструментами (Metasploit, Qualys, OpenVAS).
- Автоматическое объединение дубликатов уязвимостей.
- Дашборды для визуализации рисков.
- API для кастомных скриптов.
- Поддержка Bug Bounty программ.
- Минусы:
- Сложная начальная настройка.
- Нет бесплатной версии (только trial).
- Меньше гибкости в шаблонах по сравнению с Dradis.
Пример экспорта данных в Faraday (Python API):
Python:
import faraday_api
client = faraday_api.Client("http://faraday-server:5985")
client.add_vulnerability(
name="SQL Injection",
severity="high",
description="SQLi in search form",
poc="curl -X POST --data \"query=' OR '1'='1; --\"",
recommendation="Use prepared statements"
)
Что выбрать?
- Dradis — Идеально для небольших проектов или фриланса.
- Faraday — для крупных пентестов с множеством инструментов и необходимостью автоматизации.
- Совет: Попробуйте Community Edition Dradis для старта. Если работаете с большими данными, протестируйте Faraday (trial доступен на 14 дней).
Как писать понятно и профессионально
- Минимум жаргона. Вместо "RCE позволяет выполнить произвольный код" напишите "Уязвимость позволяет хакеру запустить вредоносный код на сервере".
- Наглядность. Используйте таблицы, графики, скриншоты. Например, график распределения уязвимостей по критичности.
- Избегайте обвинений. Вместо "разработчики не настроили CORS" пишите "отсутствие настройки CORS создаёт риск утечки данных".
- Краткость. Не перегружайте отчёт сырыми логами. Если нужно, вынесите их в приложение.
Частые ошибки и как их исправить
- Неструктурированность. Плохой отчёт — это свалка логов и терминов. Решение: следуйте структуре выше, выделяйте главное.
- Отсутствие приоритизации. Не все уязвимости одинаково важны. Указывайте, что исправить в первую очередь.
- Сухой технический стиль. Бизнес не поймёт отчёт, полный аббревиатур. Пишите проще, добавляйте примеры последствий.
Улучшенная версия:Обнаружен SQLi в /login. Ввод ' OR '1'='1 возвращает доступ.
В форме авторизации (/login) обнаружена SQL-инъекция. Злоумышленник может ввести специальный запрос (' OR '1'='1), чтобы обойти авторизацию и получить доступ к данным. Рекомендуем использовать параметризованные запросы.
Проверка и доработка
Перед отправкой заказчику:- Проверьте орфографию и структуру. Ошибки снижают доверие.
- Дайте отчёт коллеге на вычитку — он заметит, что непонятно.
- Убедитесь, что заказчик после чтения знает, что делать: исправить уязвимости, внедрить процессы, обучить сотрудников.
- Все уязвимости описаны с доказательствами?
- Рекомендации конкретны и выполнимы?
- Резюме понятно для руководства?
Заключение и призыв к действию
Хороший отчёт о пентесте — это не просто документ, а инструмент, который помогает заказчику повысить безопасность. Структурируйте свои находки, пишите ясно, показывайте риски и решения. Так вы не только закроете проект, но и укрепите доверие к вашей работе.Есть свои лайфхаки по составлению отчётов? Делитесь в комментариях!
Если вы новичок и только начинаете прокладывать свой путь в ИБ, рекомендую ознакомиться с рядом статей:
FAQ
1. Нужно ли включать все логи?Нет, только ключевые. Полные логи вынесите в приложение или предоставьте по запросу.
2. Какие инструменты упрощают написание отчётов?
Dradis, Faraday, PlexTrac. Для визуализаций — Canva, Tableau. Для черновиков — AI-инструменты с ручной доработкой.
3. Можно ли использовать шаблоны?
Да, но кастомизируйте под проект. GitHub (например, pentest-report-template) — хороший старт.