- PVSM.RU - https://www.pvsm.ru -
Анализ публично доступных HTTP-ответов и DNS-записей без аутентификации и активного вмешательства. Проверке подвергается только внешняя конфигурация: HTTP-заголовки, TLS/SSL, DNS, открытые порты.
Уязвимости не эксплуатируются, нагрузки на сервер нет.
curl — ответ HTTP сервера.
openssl s_client — проверка TLS-соединения.
dig — чтение DNS-записей домена.
/dev/tcp — выявление открытых портов без nmap
Всё это доступно на android через Termux, без root.
Домен: любой, главное — разрешение владельца на аудит. В качестве цели взят продукт ИИ-генерации, поддомен Nellify — adorable-dodol-5ab32d.netlify.app [1]
Время: ~15 минут. С скриптом автоматизации сокращается до 2-3 минут от проверки до формирования PDF-отчёта.
Метод: только публично доступные данные, без аутентификации и нагрузки на сервер.
Команда:
curl -s -D - adorable-dodol-5ab32d.netlify.app -o /dev/null | grep -i "security|frame|content-type|referrer|permissions"
Вывод:
content-type: text/html; charset=UTF-8
strict-transport-security: max-age=31536000; includeSubDomains; preload
Конкретные выводы и их значение:
content-type: text/html — заголовок параметров сервера, к безопасности не относится.
**charset=UTF-8 strict-tranport-security**: max-age=31536000 — HSTS (см.ниже*) включён, память браузера об обязательном https соединении на 1 год
includeSubDomains — протокол HSTS распространяется на поддомены
preload — домен включен в предзагруженный в браузер список доменов с HSTS, т.е. HSTS стоит "по умолчанию".
Минимум для безопасности: max-age=31536000, для максимума добавить: includeSubDomains; preload
Без этого протокола возможно внедрение скрипта с любого домена — браузер выполнит. В целевом домене отсутствует — уязвимость.
Защита:
content-security-policy: default-src 'self'; script-src 'self'
Формальная защита (практически — бесполезная):
content-security-policy: default-src ( — разрешены все источники)
content-security-policy: script-src 'unsafe-inline' (unsafe-inline — встроенные скрипты разрешены).
Без него возможен clickjacking — атака через iframe, основанная на взаимодействии с вредоносным скриптом, скрытым содержанием целевого сайта в окне iframe. В целевом домене отсутствует — уязвимость.
Защита:
x-frame-options: DENY (запрещено всем) или x-frame-options: SAMEORIGIN (разрешение только для своего домена).
Защита:
x-content-type-options: nosniff (nosniff — принудительное соблюдение content-type)
Защита:
referrer-policy: strict-origin-when-cross-origin (cross-origin — передача источника без пути и параметров: https://.../). При настройке same-origin передаётся полный URL, включая путь и параметры: https://.../path?options=secret_token (уязвимость). При понижении c https на http с активным referrer-policy referrer не будет отправлен.
Защита:
permissions-policy: camera (), microphone (), geolocation ()
Пустые скобки — запрещено всем.
Команда:
echo | openssl s_client -connect adorable-dodol-5ab32d.netlify.app:443 -cipher RC4 2>/dev/null | grep Cipher
echo | openssl s_client -connect adorable-dodol-5ab32d.netlify.app:443 -cipher 3DES 2>/dev/null | grep Cipher
Пустой вывод — отказ сервера использовать слабые шифры RC4 и 3DES
Команда:
echo | openssl s_client -connect adorable-dodol-5ab32d.netlify.app:443 -servername adorable-dodol-5ab32d.netlify.app 2>/dev/null | openssl x509 -noout -dates
Вывод:
notBefore=Feb 16 00:00:00 2026 GMT
notAfter=Mar 19 23:59:59 2027 GMT
Конкретные выводы и их значение:
notAfter — дата истечения срока сертификата, если дата notAfter в прошлом — уязвимость.
Команда:
echo | openssl s_client -connect adorable-dodol-5ab32d.netlify.app:443 -servername adorable-dodol-5ab32d.netlify.app 2>/dev/null | grep -i "self signed|verify error"
Пустой вывод — сертификат выдан доверенным центром (Let's Encrypt, DigiCert и др.)
Если вывод: verify error:num=18:self signed certificate — уязвимость.
Досупны только для собственных доменов, использование поддоменов не обеспечивает конфиденциальности трафика. Для целевого домена не применимо. Рассмотрение общих правил защиты.
Команда:
dig +short TXT example.com
Вывод и его значение:
v=spf1 — версия
-all — reject (жёстко)*
~all — softfail (мягко)
?all — neutral (слабо)
+all — accept all (опасно)
Нет вывода — SPF не настроен
*при отсутствии перечисления серверов домен не используется для рассылки почты, корректная настройка для непочтового домена.
Команда:
dig +short TXT селектор._domainkey.example.com
Важно. Селектор — произвольное имя, выбранное владельцем домена при настройке DKIM. Для аудита нужно знать точное имя селектора. Если оно неизвестно, достоверно установить наличие DKIM не выйдет.
Вывод:
Найден — порядок.
Не найден — отсутствует или неверно указан селектор.
Команда:
dig +short TXT _dmarc.example.com
Вывод и его значения:
p=none — только отчёты. Слабо.
p=quarantine — в спам. Приемлемо.
p=reject — отклонить. Защита.
Пустой вывод — DMARC не настроен.
Дополнительно:
adkim=s / aspf=s — (s — strict) требует строгого совпадения домена, поддомены не принимаются. Максимум контроля.
adkim=r / aspf=r (r — relaxed) мягкое, допускает совпадение по организационному домену, допускает поддомены. Риск обхода через поддомены.
sp=reject — защита поддоменов без собственного DMARC.
adkim — для DKIM.
aspf — для SPF.
Команда:
timeout 5 bash -c "echo >/dev/tcp/adorable-dodol-5ab32d.netlify.app/порт" 2>/dev/null && echo "открыт" || echo "закрыт"
Вывод и его значение:
|
Порт |
Служба |
Неожиданное открытие |
|---|---|---|
|
80 |
HTTP |
Норма при редиректе на 443 |
|
443 |
HTTPS |
Норма |
|
22 |
SSH |
Норма при доступе по ключу |
|
21 |
FTP |
Уязвимость |
|
3306 |
MySQL |
Уязвимость |
|
5432 |
PostgreSQL |
Уязвимость |
|
8080 |
Альернатива HTTP |
Норма при контроле доступа |
|
8443 |
Альтернатива HTTPS |
Норма при контроле доступа |
Проверка редиректа с 80 на 443:
curl -sI http://adorable-dodol-5ab32d.netlify.app | grep -i "location|301|302"
Вывод:
HTTP/1.1 301/302 — норма.
Нет — уязвимость.
Уязвимости, выявленные аудитом за 10-15 минут без доступа к серверу:
|
Риск |
Находка |
|---|---|
|
Средний |
Нет CSP |
|
Низкий |
Нет X-Frame-Options |
|
Низкий |
Нет X-Content-Type-Options |
|
Низкий |
Нет Referrer-Policy |
|
Низкий |
Нет Permissions-Policy |
Автор: Pravolog
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android/450909
Ссылки в тексте:
[1] adorable-dodol-5ab32d.netlify.app: http://adorable-dodol-5ab32d.netlify.app
[2] Источник: https://habr.com/ru/articles/1030924/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1030924
Нажмите здесь для печати.