PDA

Просмотр полной версии : Почему не работает Уязвимости: частые причины


Maxigen7
12.07.2026, 07:20
Введение

Всем привет! Много раз сталкивался с тем, что ты запускаешь сканер уязвимостей, а он либо молчит, либо выдает что-то странное, неочевидное, или вообще "ничего не найдено". В итоге начинаешь думать, что "у меня всё идеально" или что "инструмент сломался". Но обычно проблема кроется не в инструментах, а в том, как их используешь или в самом тестируемом приложении. Вообще найти реальные уязвимости — это целая наука и опыт, и не всегда это просто. В этом топике хочу рассказать из своего практического опыта, с чем сталкивался, почему уязвимости не хотят проявляться, и как с этим бороться.

Что такое уязвимость и зачем их искать

Для начала кратко — уязвимость (Vulnerability) в IT-безопасности — это слабина в системе, которая может привести к нежелательным последствиям: краже данных, взлому, повреждению сайта, продвижению вредоносного кода и т. п. В вебе это могут быть SQL-инъекции (когда в запрос к базе данных вставляется вредоносный код), XSS (кросс-сайтовый скриптинг — возможность вставить вредоносный код в страницы, которые видят другие пользователи), CSRF (атаки с подделкой запросов), ошибки в настройках серверов или неправильные механизмы авторизации. Задача сканера уязвимостей или пентестера — найти такие “дырки” и помочь их закрыть до того, как ими воспользуются злоумышленники.

В каких местах обычно ищут уязвимости

Практически во всех веб-сервисах — от интернет-магазинов до личных кабинетов, в административных панелях, API, мобильных приложениях с публичным и приватным доступом. Особенно важно проверять сервисы, к которым можно попасть извне, чтобы предотвратить взлом. Иногда уязвимости встречаются и в локальных сетях, особенно если там есть уязвимые сервисы или слабые настройки доступа. В общем, область поиска — очень широкая.

Типичные причины, почему уязвимости "не даются"

1. Не та конфигурация инструментов

Очень частая ошибка — запускать стандартные сканеры из коробки, без адаптации под конкретный ресурс. Например, сайты могут использовать нестандартные токены в формах, сложные механизмы CAPTCHA, уникальные заголовки, динамическую подгрузку контента через JS. Если сканер не умеет с этим работать, он просто промолчит. Вот у меня был кейс: сканер показывал 0 уязвимостей, хотя элементарный SQLi проходил вручную. Причина — формы требовали особого токена, который сканер не подставлял. Вывод — надо настраивать инструменты под сайт, иногда писать свои скрипты.

2. Ложные срабатывания

Обратная сторона проблемы — когда сканер показывает десятки багов, но по факту это либо не уязвимости, либо фальшивки, ошибки настройки. К примеру, фильтрация данных может работать нестандартно, и сканер не понимает, что, например, XSS срабатывает только в специализированных условиях. Нужно всегда перепроверять вручную, делать минимальные PoC, а не верить слепо отчетам.

3. Ограниченные возможности бесплатных и упрощенных инструментов

Бесплатные версии сканеров обычно сильно урезаны по функционалу — иногда они не умеют искать сложные баги или выполняют только поверхностное сканирование. Если нужен реальный, глубокий аудит, то либо платные инструменты, либо собственные скрипты и ручное тестирование. В моем опыте бесплатные инструменты хорошо подходят для первичного просмотра, но серьезные уязвимости с них как правило не выловить.

4. Динамический контент и API

Современные сайты часто сделаны на SPA (Single Page Application), много где используется JavaScript для динамической загрузки данных. Некоторые сканеры просто не видят содержимое после JS-обработки, поэтому "не находят" уязвимости. Аналогично с API — если сканер не умеет работать с API-запросами, он пропустит их. В таких случаях нужно либо использовать инструменты, умеющие запускать JS, либо тестировать API вручную.

5. Неправильный подход к тестированию

Иногда, если работать тупо "по чек-листу" и не смотреть логи, не анализировать ответы сервера, можно упустить важные детали. Уязвимость — это не только "красный баг в отчете", это данные из логов, поведение сессии, нюансы ответа сервера на необычные запросы.

Практические примеры из жизни

- В одном проекте работал с интернет-магазином, где по стандарту формы отправляли CSRF-токены. Но сайт обновили, токены стали генерироваться через JS с определенным алгоритмом. Стандартный сканер просто игнорировал их. Решение — написать свой обход токенов руками и правильно их подставлять в запросы.

- Была ситуация с сайтом, который фильтровал ввод в полях необычным образом — фильтр отбрасывал скобки и кавычки, но только в форме, а напрямую через API эти символы проходили. Вручную это выяснил только через перехватчик и ручные тесты.

- Иногда plugin или CMS меняет структуру запросов и URL, и сканер, не зная маршруты, проходит мимо важных точек входа.

Чек-лист перед началом сканирования и поиска уязвимостей

- Проверить, как устроена форма входа, есть ли нестандартные токены
- Оценить, есть ли динамический контент и сможет ли сканер его обработать
- Проанализировать, как работает фильтрация вводимых данных
- Проверить настройки заголовков HTTP и cookie
- Изучить документацию API (если есть) и понять, каким образом к нему делаются запросы
- Подумать, какие права и роли есть у пользователей, проверить доступы
- Настроить прокси для перехвата и ручного тестирования запросов
- Определить ограничения бесплатных инструментов и подумать об использовании платных или создании скриптов под задачу
- Провести ручной аудит на ключевых точках (формы, запросы, загрузки файлов)

Типичные ошибки, с которыми сталкивался

- Запускать сканеры сразу, не изучив сайта вообще
- Верить вслепую отчетам сканеров без ручного подтверждения
- Игнорировать особенности работы с JWT, OAuth и другими видами авторизации
- Не обращать внимание на задержки и асинхронную загрузку, из-за чего данные не подгружаются и не проверяются
- Использовать устаревшие базы данных известных уязвимостей
- Вручную не проверять критические места (регистрация, авторизация, загрузка файлов)

FAQ

Q: Почему сканер показывает 0 уязвимостей, но мне кажется, что они точно есть?
A: Самое частое — сканер не может получить нужные токены или выполнять динамические запросы. Нужна ручная проверка и настройка инструмента.

Q: Как проверить, что сканер корректно работает на моем проекте?
A: Попробуйте заведомо уязвимый небольшой тестовый сайт или добавить открытые тестовые уязвимости и посмотреть, обнаружит ли их сканер.

Q: Какие инструменты лучше использовать для сложных сайтов на JavaScript?
A: Например, Burp Suite с плагинами, OWASP ZAP с поддержкой JS, а также специальные фреймворки для пентеста типа Puppeteer + custom скрипты.

Q: Можно ли полагаться на бесплатные сканеры?
A: Для поверхностного анализа — да, но для серьезного аудита нужна комбинация инструментов и ручная работа.

Q: Как учиться искать уязвимости самостоятельно?
A: Учитесь читать HTTP-запросы и ответы, разбирайтесь в HTML/JS/PHP/SQL, играйте с уже известными уязвимостями на тестовых стендах, участвуйте в CTF.

Заключение

В итоге, уязвимости могут “не работать” или не виднеться по самым разным причинам — начиная от особенностей сайта и заканчивая ограничениями инструментов. Главное — не сдаваться и помнить, что инструменты — всего лишь помощники, а клиентоориентированный подход и изучение деталей конкретного приложения всегда дают наилучший результат. Заодно — всегда держите под рукой ручной тестинг и будьте готовы экспериментировать с настройками, иначе уязвимости останутся “невидимками”. Всем удачи в поиске и закрытии дыр!