ساختهشده توسط هوش مصنوعیبهبودیافته توسط مردم
Riqli · اسناد زنده · بهطور مداوم بهروزرسانی میشوند
جایی که دانش هوش مصنوعی با تجربه انسان گره میخورد.
اشتراکگذاری با دوستان

Этичный веб-хакинг в реальном мире - XSS и SQLi
(xss атака пример, sql инъекция защита, этичный хакинг обучение, типы xss уязвимостей, sql injection blind, как найти xss на сайте, prepared statements против sql инъекций, обход фильтров xss через событие onerror, sql injection в json полях api, защита от xss в react с помощью dangerouslySetInnerHTML)
Введение в этичный веб-хакинг и настройка лаборатории
Добро пожаловать на комплексный курс по этичному веб-хакингу и охоте за ошибками. Этот курс создан для тех, кто готов глубоко погрузиться в практическую сторону кибербезопасности, где теория немедленно применяется на практике. Мы не будем просто говорить об уязвимостях; мы рассмотрим реальные сценарии, с которыми ежедневно сталкиваются этичные хакеры, и научимся их использовать для защиты, а не для атак.
Прежде чем начать, мы подготовим нашу лабораторию, установив Kali Linux на виртуальную машину VMware Workstation Pro. Это стандартная среда для тестирования на проникновение, которая предоставляет все необходимые инструменты. Мы пройдем весь процесс от загрузки образа до настройки сетевых адаптеров, чтобы вы могли практиковаться в безопасной, изолированной среде.
Теория и практика SQL-инъекций (SQLi)
SQL-инъекция (SQLi) — это атака, при которой злоумышленник внедряет вредоносный SQL-код в запросы к базе данных. Если приложение не фильтрует входные данные, этот код может быть выполнен, позволяя извлечь, изменить или удалить конфиденциальные данные. В этом модуле мы научимся не только обнаруживать, но и использовать эту критическую уязвимость для получения доступа к данным.
Мы детально разберем информационную схему (information_schema) в базах данных MySQL, которая хранит метаданные обо всех таблицах. Это ключевой объект для эксплуатации, так как он позволяет перечислить таблицы и столбцы, чтобы затем извлечь из них полезную информацию, такую как имена пользователей и хеши паролей. Мы также рассмотрим отличия для других СУБД, например, Microsoft SQL Server.
Для автоматизации процесса мы будем использовать sqlmap — мощный инструмент для обнаружения и эксплуатации SQL-инъекций. Вы узнаете, как использовать параметры --level и --risk для более глубокого сканирования и обхода защит. Мы научимся извлекать текущую базу данных, таблицы и дамп данных, а также комбинировать ручные методы с автоматизированными для достижения наилучших результатов.
На реальных целях мы покажем, как обойти брандмауэры (WAF) при помощи случайного агента (--random-agent), который маскирует запросы под обычный трафик браузера, и техникой замещения пробелов (например, `/**/`). Это критически важные навыки, так как современные веб-приложения редко бывают полностью беззащитны, и вам нужно уметь преодолевать их барьеры для успешного тестирования.
Практические атаки на реальные цели и обход защиты
Мы начнем с атак на учебные цели, где извлечем данные из базы данных вручную. Например, мы обнаружим, что параметр `id` уязвим, и с помощью UNION-запроса определим количество столбцов, чтобы затем выбрать нужные для вывода. Вы увидите, как определить имя базы данных 'goodmorning' и извлечь таблицу 'users', получив учетные данные администратора.
В одном из примеров мы столкнемся с сайтом, где ошибки скрыты, но его поведение искажается при внедрении кавычек. Это признак слепой SQL-инъекции. Мы используем ручные методы, чтобы определить количество столбцов (их оказалось 33), и с помощью расширения HackBar выполним UNION-запрос для извлечения пароля администратора из таблицы пользователей, даже несмотря на наличие брандмауэра.
Мы также изучим атаки, основанные на ошибках, где сервер сам раскрывает информацию о своей структуре. Это позволяет очень быстро определить уязвимость. В таких случаях sqlmap легко находит путь, и мы можем автоматизировано извлечь не только учетные данные, но и, например, адреса электронной почты и номера телефонов из базы данных, используя дамп данных.
Обход административных панелей и мощных WAF
В этом разделе мы сосредоточимся на обходе аутентификации. Мы покажем, как использовать простые логические атаки, например, внедрение полезной нагрузки `' OR '1'='1`, чтобы обойти вход в систему администратора. Мы протестируем различные варианты, чтобы понять, как работает защита, и найдем способ обойти панель управления, получив доступ к конфиденциальным данным, таким как регистрационные формы и контактные данные.
В более сложных сценариях мы столкнемся с мощным брандмауэром веб-приложений (WAF), который блокирует наш IP-адрес. Мы научимся обходить его, используя поиск поддоменов с помощью `sublist3r`. Иногда WAF настроен только на основной домен, и поддомен, например, 'mail.', не имеет такой жесткой защиты, что позволяет нам провести атаку в обход основного барьера.
Основы атак межсайтового скриптинга (XSS)
Межсайтовый скриптинг (XSS) — это атака, при которой злоумышленник внедряет вредоносный код (обычно JavaScript) в веб-страницу, которую просматривают другие пользователи. Целью часто является кража файлов cookie сессии, что позволяет выдать себя за жертву. В отличие от SQLi, XSS атакует не сервер, а пользователей, поэтому эти уязвимости также критически важны и высоко ценятся в программах Bug Bounty.
Мы изучим два основных типа: отраженный XSS, когда вредоносный скрипт немедленно отражается от сервера в ответе, и хранимый XSS, когда скрипт сохраняется на сервере (например, в комментариях) и выполняется при каждом просмотре страницы. Мы сосредоточимся на отраженном XSS, так как он очень распространен и является отличной отправной точкой для понимания принципа атаки.
Практические атаки XSS на реальных сайтах
Мы начнем с простых примеров, внедряя тег `` в строку поиска и видя, как он выполняется. Это подтверждает наличие уязвимости. Затем мы перейдем к более сложной цели: краже cookies с помощью `document.cookie`. Мы покажем, что даже такие простые сайты, как демонстрационные магазины, часто уязвимы, что демонстрирует важность правильной обработки пользовательского ввода.
На реальном сайте Land Rover мы столкнемся с тем, что WAF блокирует стандартные теги `
Для поиска уязвимых параметров мы будем использовать инструмент waybackurls и `gau` (Get All URLs) для извлечения всех исторических URL-адресов сайта. Это помогает найти скрытые параметры и эндпоинты, которые могут быть уязвимы. Мы объединим его с `gf` для фильтрации потенциально опасных параметров, что значительно ускоряет процесс поиска XSS.
В одном из примеров мы столкнемся с мощной защитой Cloudflare. Несмотря на то, что нам удастся выполнить JavaScript, мы не сможем украсть `document.cookie` из-за ограничений политики безопасности. Это хороший пример того, как современные WAF могут блокировать самую критическую часть атаки. Однако, само обнаружение XSS все равно считается валидной находкой для Bug Bounty, хоть и с меньшей наградой.
Мы также рассмотрим примеры, где XSS-уязвимости позволяют не только получать cookies, но и изменять содержимое страницы или перенаправлять пользователей. Например, используя шрифт и цвет, чтобы пометить страницу. Это показывает, что даже если кража cookies невозможна, XSS может быть использован для других вредоносных действий, таких как дефейс или фишинг, поэтому их всегда важно находить и устранять.
Questions and answers
Что представляет собой атака SQL-инъекция (SQLi) и какова её основная цель?
SQL-инъекция — это атака, при которой злоумышленник внедряет вредоносный SQL-код в запросы к базе данных для выполнения несанкционированных команд.
Если веб-приложение не фильтрует входные данные, внедренный код может быть выполнен, позволяя злоумышленнику извлечь, изменить или удалить конфиденциальные данные из базы данных.
Основная цель SQL-инъекции — получение несанкционированного доступа к данным, таким как имена пользователей и хеши паролей, и их последующая эксплуатация.
В курсе мы учимся обнаруживать и использовать эту критическую уязвимость для получения доступа к данным, что является ключевым навыком для этичного хакера.
SQL-инъекция — это атака на пользователей с целью кражи их файлов cookie.
Цель SQL-инъекции — это только изменение внешнего вида веб-страницы.
Почему знание структуры базы данных, в частности information_schema в MySQL, критически важно для эксплуатации SQL-инъекций?
Information_schema хранит метаданные обо всех таблицах, что позволяет злоумышленнику перечислить таблицы и столбцы для извлечения полезной информации.
Это ключевой объект для эксплуатации, так как он предоставляет карту базы данных. Зная её структуру, мы можем целенаправленно извлекать данные, например, имена пользователей и хеши паролей.
Information_schema используется только для администрирования базы данных и не имеет отношения к атакам.
Это стандартный инструмент для резервного копирования данных.
Для каких целей в курсе используется инструмент sqlmap и какие ключевые параметры для его настройки изучаются?
Sqlmap используется для автоматизации процесса обнаружения и эксплуатации SQL-инъекций, что позволяет ускорить тестирование.
Мы изучаем параметры --level и --risk для более глубокого сканирования и обхода защит, что позволяет комбинировать ручные методы с автоматизированными для лучших результатов.
С помощью sqlmap мы учимся извлекать текущую базу данных, таблицы и выполнять дамп данных.
Это делает процесс тестирования на проникновение более эффективным, особенно при работе с большими и сложными веб-приложениями.
Sqlmap — это инструмент для поиска XSS-уязвимостей.
Это графический интерфейс для управления базами данных, который не используется в пентесте.
Какие методы обхода брандмауэров (WAF) изучаются в курсе при проведении атак SQL-инъекций?
Использование случайного агента (--random-agent) для маскировки запросов под обычный трафик браузера.
Это помогает скрыть вредоносный характер запросов и обойти простые правила WAF, которые блокируют подозрительные User-Agent строки.
Техника замещения пробелов (например, использование `/**/` вместо пробелов) для обхода сигнатур WAF.
Многие WAF блокируют запросы с явными SQL-командами, содержащими пробелы. Замена пробелов на комментарии SQL позволяет обойти эту защиту.
Для обхода WAF достаточно просто сменить IP-адрес.