CC performing-ssrf-vulnerability-exploitation
Тестирует параметры URL веб-приложений на предмет подделки запросов на стороне сервера (SSRF), проверяя конечные точки метаданных облака (AWS/GCP/Azure по адресу 169.254.169.254), внутренние сетевые службы и обработчики протоколов (file://, gopher://, dict://) с помощью скрипта Python, включая обход IP-кодирования и проверки DNS-перепривязки. Используйте во время авторизованного тестирования на проникновение для подтверждения SSRF в параметре получения URL и создания отчета об уязвимости.
машинный переводПоказать оригиналСкрыть оригинал«Tests web application URL parameters for Server-Side Request Forgery b…»
Tests web application URL parameters for Server-Side Request Forgery by probing cloud metadata endpoints (AWS/GCP/Azure at 169.254.169.254), internal network services, and protocol handlers (file://, gopher://, dict://) using a Python script, including IP-encoding bypass and DNS rebinding checks. Use during authorized penetration testing to confirm SSRF in a URL-fetching parameter and generate a vulnerability report.
Тестирует параметры URL веб-приложений на предмет подделки запросов на стороне сервера (SSRF), проверяя конечные точки метаданных облака (AWS/GCP/Azure по…
Как процесс C 59/100 · Есть пробелы — слабые места: результат и критерий готовности, когда включается, отчётность по ходу
Чем это грозит
Находки средней серьёзности: скорее всего скилл честный, но прочитайте, что именно насторожило сканер.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
Инструкции или скрипты отправляют данные наружу: переменные окружения, ключи, содержимое файлов, историю чата. Вы можете не заметить этого в диалоге, потому что агент выполнит отправку как «часть задачи».
Если отправка не нужна для задачи, уберите её: каталоги помечают такие скиллы как подозрительные и снимают с выдачи. Если нужна, назовите адрес явно, объясните, что именно уходит, и дайте пользователю выключатель.
Как улучшить
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 5
✓ Критических и высоких находок нет
Средние и низкие: 5
-
средняя Утечка данных
exfil-webhook-urlscripts/agent.py:33URL вебхука / коллбэка, типичный для эксфильтрации (проверьте адрес) (в кавычках — упоминание, а не команда){"name": "Redirect bypass", "url": "http://spoofed.burpcollaborator.net/redirect?url=…"},в кавычках -
низкая Секреты в коде
secret-high-entropy-tokenreferences/api-reference.md:7Строка, похожая на токен (может быть id, хеш или секрет) (строка таблицы в документации)| AWS IMDSv2 | `http://169.254.169.254/latest/api/token` | `X-aw…ds: 21600` |
таблица -
низкая Рискованное назначение
intent-offensive-securityreferences/api-reference.md:34Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)| Internal service access | Lateral movement | High |
-
низкая Рискованное назначение
intent-offensive-securitySKILL.md:8Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)rebinding checks. Use during authorized penetration testing to confirm SSRF
-
низкая Рискованное назначение
intent-offensive-securitySKILL.md:62Наступательная безопасность / двойное назначение (допустимо для авторизованного тестирования; проверьте назначение)# For authorized penetration testing and lab environments only
Просканировано файлов: 4. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- заметка
frontmatter-keyнеизвестное поле фронтматтера "domain" - заметка
frontmatter-keyнеизвестное поле фронтматтера "subdomain" - заметка
frontmatter-keyнеизвестное поле фронтматтера "nist_csf" - заметка
frontmatter-keyнеизвестное поле фронтматтера "mitre_attack"
Процессный рейтинг: все десять параметров 59/100
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 55Ошибки и развилки. Развилок: 1
- 60Инструменты и файлы. Используются инструменты (python), но во frontmatter они не объявлены
- 70Входы и предусловия. Входные данные и предусловия перечислены
- 100Шаги. Шагов: 17
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 385 токенов
- 100Повторный запуск. Изменяющих операций нет
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- -2Ссылки на localhost: у другого пользователя не заработает
- -41 справочных файлов, но SKILL.md на них не ссылается: модель их не откроет
- +2Инструкции на одном языке
- +3Длина description 420 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 5 заголовков
- +3Пошаговые инструкции: 17 пунктов
- +4Есть примеры (2 блоков кода)
- +3Все 1 скриптов описаны в инструкциях
- +1Лицензия указана
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 79.