WEB SAFE AUDIT
ОТЧЁТ · ПРИМЕР
SCAN ID SCN-A7C4-19F2 · 2026-04-22 14:31 МСК · ДОМЕН acme-corp.io · ПРОФИЛЬ default · 4 м 12 с

Периметр
под напряжением.

Найдено 47 findings, из них 6 критичных, 14 средних. Самый дорогой риск — захват e-mail-домена через DMARC=none + dangling-CNAME у mail-staging.

TLS88w 0.10 · ✓
HEADERS62w 0.08 · ⚠
DNS41w 0.07 · ⚠
SURFACE58w 0.20 · ⚠
TECH71w 0.15 · ⚠
PENTEST52w 0.40 · ✗
01 / FINDINGS · 6 КРИТИЧНЫХ

Что нужно чинить сегодня.

F-001

Reflected XSS на /search?q=

Пользовательский ввод параметра q попадает в DOM без экранирования. Воспроизведено на главном поиске и на поддомене docs.acme-corp.io. Эксплуатация: один HTTP-запрос, без авторизации.

// payload
GET /search?q=<svg/onload=alert(1)> HTTP/1.1
Host: acme-corp.io

// response (200, in <h1>)
<h1>Результаты по запросу: <svg/onload=alert(1)></h1>
CRITICAL · 9.1PENTESTCWE-79OWASP A03
CRITICAL
CVSS 9.1
Confidence 100%
Reproduced
FIX ≈2ч
Тип код
F-002

DMARC=none + dangling CNAME для mail-staging

Запись mail-staging.acme-corp.io указывает на удалённый Heroku-инстанс — кандидат на subdomain takeover. В сочетании с DMARC p=none позволяет провести фишинг от имени домена.

// CNAME chain
mail-staging.acme-corp.io CNAME acme-mail-stg.herokuapp.com
acme-mail-stg.herokuapp.com → 404 No such app

// DMARC
_dmarc.acme-corp.io TXT "v=DMARC1; p=none; rua=mailto:..."
CRITICAL · 8.6DNSCWE-1395
CRITICAL
CVSS 8.6
Confidence 100%
Reproduced
FIX ≈30мин
Тип конфиг
F-003

SQLi (boolean-based) в /api/v1/orders?status=

Параметр status склеивается в SQL-запрос без bind. Time-based проверка: ' AND SLEEP(5)-- — отклик 5.07 сек.

GET /api/v1/orders?status=open' AND SLEEP(5)-- HTTP/1.1
Authorization: Bearer eyJ...

// 200 OK · 5.07s (baseline 0.12s)
CRITICAL · 9.4PENTESTCWE-89
CRITICAL
CVSS 9.4
Confidence 95%
Reproduced
FIX ≈4ч
Тип код
F-004

Открытый /actuator на admin-api.acme-corp.io

Spring Boot Actuator доступен без аутентификации. Доступны /env, /heapdump, /loggers. Утечка переменных окружения, в том числе строк подключения.

GET /actuator/env HTTP/1.1
Host: admin-api.acme-corp.io

// 200 OK
{ "propertySources":[{ "name":"systemEnvironment",
  "properties": { "DATABASE_URL": "postgres://app:Z9q...@..." }}]}
CRITICAL · 9.0TECHCWE-200
CRITICAL
CVSS 9.0
Confidence 100%
Reproduced
FIX ≈1ч
Тип конфиг
F-005

SSRF через параметр /api/preview?url=

Эндпоинт превьюшек принимает произвольный URL. Удалось обратиться к internal IMDS (169.254.169.254) и получить метаданные инстанса.

CRITICAL · 8.8PENTESTCWE-918
CRITICAL
CVSS 8.8
Confidence 100%
Reproduced
FIX ≈3ч
Тип код
F-006

Открытый /.git на legacy.acme-corp.io

Каталог /.git доступен по HTTP. Скачивание дерева восстанавливает исходный код проекта 2022 года, включая статичные ключи Yandex Cloud.

CRITICAL · 8.2SURFACECWE-538
CRITICAL
CVSS 8.2
Confidence 100%
Reproduced
FIX ≈15мин
Тип конфиг
02 / СРЕДНЕЕ — 14 ПУНКТОВ

Можно отложить на спринт.

IDFindingМодульCVSSSeverityХост
F-007Отсутствует Content-Security-PolicyHeaders5.4MEDacme-corp.io
F-008X-Frame-Options не установленHeaders4.3MEDapp.acme-corp.io
F-009HSTS max-age=300 (рекомендуется ≥31536000)TLS3.7MEDacme-corp.io
F-010Открытый swagger.json на /api/docsSurface5.0MEDapi.acme-corp.io
F-011jQuery 1.11.3 (CVE-2020-11023)Tech6.1MEDlegacy.acme-corp.io
F-012SPF + ~all вместо -allDNS3.4MEDacme-corp.io
F-013Cookie без флага HttpOnly (sessionId)Headers5.0MEDapp.acme-corp.io
F-014Открытый /robots.txt раскрывает /internal/Surface3.1MEDacme-corp.io
F-015Reflected open-redirect /go?to=Pentest6.4MEDacme-corp.io
F-016Поддомен dev.acme-corp.io доступен извнеSurface5.5MEDdev.acme-corp.io
03 / ROADMAP — ПО ВЛИЯНИЮ

Что чинить и в каком порядке.

Ранжировано по impact ÷ effort. Можно экспортировать в Jira / Linear / GitHub Issues одной кнопкой.

→ 01
Удалить dangling CNAME mail-staging

Удалите неиспользуемую DNS-запись и перейдите на DMARC p=quarantine

▲ +9.0
30 мин
→ 02
Закрыть /.git на legacy

Удалите каталог из публичного root, отзовите Yandex Cloud ключи

▲ +6.5
15 мин
→ 03
Закрыть /actuator

Включите management.endpoints.web.exposure.include=health,info

▲ +7.2
1 ч
→ 04
Экранирование XSS в /search

Server-side escape + CSP script-src 'self'

▲ +6.8
2 ч
→ 05
Параметризовать SQL в /api/v1/orders

Прерывистые prepared statements; ревью соседних эндпоинтов

▲ +8.0
4 ч
→ 06
Whitelist URL для /api/preview

Allow-list схем + блок IMDS, RFC1918, link-local

▲ +6.4
3 ч
04

Это пример отчёта.
Ваш — будет про вас.

Сканировать свой домен