
Совместное тестирование безопасности приложений между людьми и агентами через CLI и MCP
<img width="400" height="160" alt="go-appsec/toolbox" src="https://assets.kitploit.com/production/public/readmes/12195/899658aaebd95d74c5a2eb8eff64d2234300b95d43084d8dd1153d2edb6a9107.png" /> [](https://github.com/go-appsec/toolbox/blob/main/LICENSE) [](https://github.com/go-appsec/toolbox/actions/workflows/tests-main.yml) [-Significant%20AI%2C%20fully%20reviewed-1f77b4)](https://github.com/vibesdk/vibe-scale/blob/main/scale/vibe-1.md#v2-u0-t0-score-10--significant-ai-fully-reviewed) **Инструменты тестирования безопасности приложений на основе MCP для вашего агента-программиста.** Это не сканер — это совместная рабочая среда. Агенты плохо справляются с UI и API с сохранением состояния; вы хороши в обоих. Sectool позволяет вам исследовать приложение через его прокси, пока агент анализирует и манипулирует тем же аутентифицированным трафиком, который вы генерируете. Вы занимаетесь аутентификацией и взаимодействием с UI, агент запрашивает потоки, модифицирует запросы, находит отражения, отслеживает внешние взаимодействия и пробует другие перестановки. Объединение ваших возможностей упрощает рутинные задачи, снижает вероятность пропустить скрытые индикаторы и делает сложное тестирование более тщательным. ## Начало работы ### 1. Установите sectool ```bash go install github.com/go-appsec/toolbox/sectool@latest ``` **Нет Go?** Скачайте бинарный файл для вашей платформы (Linux, macOS, Windows — amd64 и arm64) из [последнего релиза](https://github.com/go-appsec/toolbox/releases). ### 2. Запустите сервер MCP (Model Context Protocol) ```bash sectool mcp ``` Это запускает сервер MCP на порту 9119 со встроенным HTTP-прокси на порту 8080. ### 3. Настройте браузер Укажите в настройках прокси вашего браузера `127.0.0.1:8080` (или порт, заданный через `--proxy-port`). Для перехвата HTTPS установите CA-сертификат из `~/.sectool/ca.pem` (автоматически создаётся при первом запуске). Большинство браузеров принимают его через свои настройки сертификатов; на macOS вы также можете добавить его в системную связку ключей. **Используете Burp?** Вместо этого следуйте [настройке прокси Burp](https://portswigger.net/burp/documentation/desktop/external-browser-config), затем запустите sectool с `sectool mcp --burp`. ### 4. Подключите вашего агента **Claude Code:** ```bash claude mcp add --transport http sectool http://127.0.0.1:9119/mcp ``` **Codex** (`~/.codex/config.toml`): ```toml [mcp_servers.sectool] url = "http://127.0.0.1:9119/mcp" ``` ### 5. Совместная работа Работайте с агентом над составлением плана тестирования и выполняйте его вместе. Агент может запрашивать историю прокси, воспроизводить модифицированные запросы, сканировать эндпоинты и тестировать внешние взаимодействия, пока вы выполняете действия в браузере, такие как аутентификация или взаимодействие с UI и его проверка. ## Параметры сервера ### Бэкенды прокси **Нативный:** Встроенный прокси с точностью до провода и поддержкой HTTP/1.1, HTTP/2 и WebSocket. Разработан, чтобы быть столь же функциональным, как Burp, для MITM-тестирования. Единый бинарный файл предоставляет сервер MCP, прокси и CLI — полностью самодостаточный и пригодный для использования в headless-средах. **Burp (опционально):** Если вы предпочитаете GUI для просмотра действий агента или у вас уже запущен Burp, установите расширение MCP из BApp Store и убедитесь, что сервер MCP работает на `http://127.0.0.1:9876/`. | Опция | Описание | |--------|-------------| | (по умолчанию) | Автоопределение: сначала пробует Burp MCP, при неудаче переключается на нативный прокси | | `--proxy-port 8080` | Принудительно использовать нативный прокси на указанном порту | | `--burp` | Принудительно использовать Burp MCP (завершается ошибкой, если недоступен) | ### Параметры сессии #### Рабочий процесс Sectool автоматически определяет подходящий рабочий процесс, когда агент вызывает инструмент `workflow` в начале сессии. Вы можете пропустить этот шаг и сэкономить токены, указав рабочий процесс заранее: ```bash sectool mcp # По умолчанию: агент выбирает тип задачи через инструмент workflow sectool mcp --workflow explore # Предустановленный режим исследования sectool mcp --workflow test-report # Предустановленный режим валидации sectool mcp --workflow none # Без инструкций рабочего процесса sectool mcp --workflow multi # Несколько агентов используют один сервер ``` | Режим | Описание | |------|-------------| | (по умолчанию) | Агент выбирает тип задачи, вызывая инструмент `workflow`, и получает инструкции по совместной работе | | `explore` | Исследовательское тестирование безопасности; доступны все инструменты | | `test-report` | Валидация конкретного отчёта об уязвимости; инструменты сканирования исключены | | `none` | Без инструкций рабочего процесса, все инструменты доступны сразу | | `multi` | Для случаев, когда несколько пользователей или агентов используют один сервер; скрывает функции, где один агент может запутать другого | Инструкции рабочего процесса направляют агентов к совместному тестированию, а не к попыткам сделать всё автономно или провести вас через процесс без добавления ценности. Если у вас есть идеи по улучшению совместной работы агентов, [откройте issue](https://github.com/go-appsec/toolbox/issues). #### Заметки Флаг `--notes` включает инструменты `notes_save` и `notes_list` для сохранения наблюдений, связанных с потоками. Отключено по умолчанию, чтобы минимизировать использование контекста для коротких сессий. Включайте его, когда ожидаете множество находок или сжатие диалога. ### Транспорты MCP Сервер предоставляет две конечные точки: - `/mcp` - Streamable HTTP (рекомендуется) - `/sse` - SSE (устаревший, для старых клиентов) ## Пример использования CLI CLI разделяет состояние с агентом и предоставляет удобный для человека интерфейс для просмотра, воспроизведения и написания скриптов. Все команды CLI соответствуют инструментам MCP, поэтому агент использует то же состояние. ```bash # Просмотр того, что прокси захватил во время вашего просмотра sectool proxy summary sectool proxy list --host example.com sectool proxy cookies --name session_id # Сканирование приложения для обнаружения эндпоинтов и форм sectool crawl create --url https://example.com sectool crawl summary <session_id> # Воспроизведение захваченного запроса с изменениями sectool replay send --flow <flow_id> --set-header "X-Test: value" # Настройка тестирования внешних взаимодействий и проверка обратных вызовов sectool oast create sectool oast poll <oast_id> sectool oast get <event_id> # Сравнение двух потоков, обнаружение отражений, проверка JWT sectool diff <flow_a> <flow_b> --scope response sectool reflected <flow_id> sectool jwt <token> # Экспорт потока, редактирование офлайн и повторная отправка sectool proxy export <flow_id> # ... отредактируйте ./sectool-requests/<flow_id>/request.http ... sectool replay send --bundle <flow_id> ``` Используйте `sectool <command> --help` для подробных опций. ## Ключевые возможности - **Прокси с точностью до провода** - MITM для HTTP/1.1 и HTTP/2 с сохранением порядка заголовков, регистра и аномалий протокола - **Воспроизведение и мутация** - Перезапись живого трафика через правила сопоставления/замены или повторная отправка захваченных запросов с изменениями через API, оптимизированный для агентов - **Сравнение потоков** - Структурированное сравнение двух потоков с учётом типа контента (на уровне путей JSON, унифицированный текст, размер бинарных данных) для быстрой валидации отчётов - **Анализ поверхности JS** - Извлечение эндпоинтов, маршрутов и секретов из JavaScript/HTML-бандлов, затем развёртывание любого места вызова в пригодные для использования запросы - **Обнаружение отражений** - Поиск значений параметров запроса, отражённых в ответах, в нескольких вариантах кодирования для выявления точек инъекции - **OAST** - Тестирование внешних взаимодействий через Interactsh; создание доменов, опрос обратных вызовов DNS/HTTP/SMTP - **Зондирование перенаправлений** - Сессии OAST могут возвращать 307-перенаправления для обнаружения следования цели перенаправлениям, что полезно для цепочек SSRF и обхода валидации - **Сканирование** - Обнаружение эндпоинтов, форм и структуры приложения; начальные данные из истории прокси или URL - **Поддержка WebSocket** - Перехват на уровне фреймов, проксирование и сопоставление/замена для сообщений WebSocket - **Режимы рабочего процесса** - Ориентированные на задачу инструкции для агента (explore, test-report) для повышения качества совместной работы и сокращения бесполезного расхода токенов - **Утилиты кодирования** - Кодирование/декодирование URL, Base64, HTML, хеширование (MD5/SHA/HMAC), проверка JWT - **Интеграция с Burp Suite** - Опциональный GUI-фронтенд через расширение Burp MCP; или полностью headless-работа с нативным прокси ## Автоматизированное сканирование Объедините sectool с [sidenuclei](https://github.com/go-appsec/toolbox-sidenuclei) — собственным сайдкаром, который запускает [Nuclei](https://github.com/projectdiscovery/nuclei) против каждого эндпоинта, которого вы касаетесь. Запустите sectool с `--notes`, подключите `sidenuclei` к вашей сессии, и он просканирует каждый эндпоинт, используя реальный захваченный запрос, так что тесты выполняются с вашими фактическими параметрами, cookie и аутентифицированной сессией. Находки сохраняются как заметки `finding`, связанные с потоком, который их вызвал, обеспечивая дополнительное покрытие, пока вы и ваш агент сосредоточены на ручном тестировании. ## Поддержка пользовательских протоколов Помимо HTTP и WebSocket, sectool поддерживает пользовательские и бинарные протоколы (обычно запрос / ответ) через модель адаптера-сайдкара. Напишите адаптер для подключения и связи с использованием нашего API сайдкара. Трафик сайдкара попадает в ту же единую временную шкалу потоков, поэтому `flow_get`, `diff_flow`, `replay_send` и другие инструменты работают без изменений. Адаптеры можно писать на любом языке через API JSON-RPC 2.0 или на Go с клиентом SDK, который обрабатывает регистрацию, кеширование правил и генерацию потоков. [SDK и протокол сайдкара](https://github.com/go-appsec/toolbox/blob/main/sidecar/README.md) документируют оба варианта.