JavaScript для простого взлома: экспертное руководство |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2024-11-20 23:34 Погрузившись в мир пентестинга, вы обнаружите, что освоение JavaScript для взлома является ценным навыком из-за его широкого использования в современных веб-приложениях. Применяя те же тактики и методы, что и злоумышленники, вы можете обнаружить недостатки безопасности и рекомендовать соответствующие контрмеры для снижения рисков. JavaScript — один из наиболее широко используемых языков программирования в Интернете, что делает его главной целью для киберпреступников. Его распространенность, наряду с его выполнением на стороне клиента, создает возможности для различных векторов атак. В этой статье вы узнаете некоторые основы JavaScript для выявления и использования уязвимостей в веб-приложениях, таких как межсайтовый скриптинг (XSS), подделка межсайтовых запросов (CSRF), а также некоторые упоминания других распространенных недостатков безопасности. Понимание и изучение использования этих уязвимостей может лучше защитить ваши приложения и способствовать более безопасному цифровому ландшафту. Итак, давайте начнем это захватывающее путешествие по использованию JavaScript для этичного хакинга. Понимание JavaScript JavaScript — универсальный и широко используемый язык программирования в производственных средах. Он позволяет разработчикам создавать динамический и интерактивный контент для веб-сайтов и веб-приложений. Как клиентский язык сценариев, он работает непосредственно в веб-браузере пользователя, делая веб-страницы более отзывчивыми и улучшая веб-опыт. JavaScript может:
Эти функции обеспечивают расширенные пользовательские интерфейсы, проверку форм и динамическое обновление контента. Язык стал неотъемлемым компонентом современной веб-разработки благодаря своей гибкости, простоте использования и совместимости с различными платформами. Фактически, согласно опросу разработчиков Stack Overflow 2022 года , JavaScript уже десятый год подряд является самым популярным языком программирования среди разработчиков. Чтобы лучше понять роль JavaScript в веб-приложениях, полезно ознакомиться с консолью разработчика браузера. Этот встроенный инструмент в веб-браузерах позволяет вам проверять, отлаживать и анализировать код HTML, CSS и JavaScript, работающий на веб-странице. Чтобы получить доступ к консоли разработчика в браузере, выполните следующие действия:
Показан браузер Firefox с консолью разработчика. Консоль разработчика предоставляет различные вкладки и панели для разных целей, например:
Исследуя консоль разработчика, вы сможете получить представление о том, как JavaScript взаимодействует с другими веб-технологиями, а также научиться отлаживать и оптимизировать свои веб-приложения или искать уязвимости. Прежде чем погрузиться в процесс идентификации, давайте убедимся, что мы знакомы с распространенными уязвимостями JavaScript. Чтобы лучше понять тему, вы можете обратиться к JavaScript Security: How to Mitigate the Top Risks Now . Отказ от ответственности Мы хотим быть абсолютно ясными относительно важности соблюдения применимых законов относительно сканирования и эксплуатации уязвимостей веб-приложений. Перед проведением любой формы этичного взлома или тестирования на проникновение в систему убедитесь, что вы получили явное разрешение от владельца системы или сети. Несанкционированный взлом или сканирование могут показаться мелочью, но они могут повлечь за собой серьезные правовые последствия, включая штрафы или тюремное заключение, в зависимости от вашей юрисдикции. Не делайте этого. Вот некоторые законы, регулирующие эту деятельность:
Если вы сомневаетесь в том, что действуете честно, ознакомьтесь с соглашением или сферой разрешенной деятельности с конкретной организацией или ознакомьтесь с кодексом поведения или правилами раскрытия информации в рамках любой из программ вознаграждения за обнаруженные ошибки, упомянутых в конце этой статьи. По мере того, как мы дойдем до остальной части этой статьи, вы обнаружите, что следование этим шагам глубоко повлияет на вашу способность понимать эту тему. Это касается того, как небезопасный код позволяет вам эксплуатировать уязвимость, и того, как эта полезная нагрузка выполняет действия внутри уязвимости. Мы рассмотрим каждый шаг достаточно подробно в этой статье, чтобы вы могли оставаться с нами. Однако, если вам нужна дополнительная информация о настройке вашей собственной практической среды, взгляните на наше руководство, Как создать виртуальную хакерскую лабораторию: окончательная настройка хакера . Выявление уязвимостей В тестировании на проникновение веб-приложений есть несколько инструментов, которые можно использовать для выявления уязвимостей JavaScript. Два самых популярных инструмента включают Burp Suite и OWASP ZAP . В этой статье будет использоваться OWASP ZAP (Zed Attack Proxy). OWASP ZAP — это сканер безопасности веб-приложений с открытым исходным кодом, разработанный сообществом OWASP (Open Web Application Security Project). Специалисты по безопасности и разработчики широко используют его для выявления и устранения потенциальных проблем безопасности в веб-приложениях. Вы можете загрузить и узнать больше о OWASP ZAP с их официального сайта . Теперь давайте рассмотрим, как выявлять уязвимости JavaScript с помощью OWASP ZAP. Настройка и конфигурирование OWASP ZAP:
Сканирование целевого веб-приложения: Запустите сканирование, нажав кнопку «Атака» или выбрав опцию «Паук» в меню «Инструменты». Это запустит процесс сканирования веб-приложения и выявления потенциальных уязвимостей. Просмотрите результаты: После завершения сканирования OWASP ZAP отобразит список уязвимостей, выявленных на вкладке «Оповещения». Вы можете нажать на каждое оповещение, чтобы просмотреть дополнительные сведения, такие как тип уязвимости, ее серьезность (легко визуализируется цветными флажками) и краткое описание. Исследуйте уязвимости: Чтобы лучше понять выявленные уязвимости, вы можете изучить вкладки «Запрос» и «Ответ», чтобы увидеть HTTP-запросы и ответы каждой уязвимости. Эта информация может помочь вам определить точное местоположение уязвимости в коде веб-приложения. Пример уязвимости и запрашиваемая информация. Та же самая уязвимость, что и сверху, и тот же ответ, который был получен. Пройдя эти шаги, вы можете использовать OWASP ZAP для выявления уязвимостей JavaScript в веб-приложениях. Это часто требует поиска интересных событий, таких как OWASP ZAP — это всего лишь один инструмент из многих, которые помогут вам выявить или обнаружить потенциальные уязвимости в веб-приложениях. Их просто слишком много, чтобы подробно рассмотреть их в одной статье. Если вы хотите прочитать отличный обзор других инструментов для проникновения, ознакомьтесь с 25 лучшими инструментами для тестирования на проникновение для Kali Linux . Использование уязвимостей В оставшейся части этой статьи будут рассмотрены две распространенные уязвимости в веб-приложениях: Reflected XSS (Cross-Site Scripting) и CSRF (Cross-Site Request Forgery). Мы будем использовать Damn Vulnerable Web Application (DVWA) , уязвимое веб-приложение, разработанное для учебных целей, чтобы продемонстрировать процесс эксплуатации. Мы шаг за шагом продемонстрируем каждую из уязвимостей и применяемые против них эксплойты, чтобы вы могли следить за процессом. Основные различия между Reflected XSS и CSRF заключаются в способе реализации атаки и в том, аутентифицирован ли пользователь в веб-приложении. Отражённый XSS
CSRF
Если вам нужен пример того, как это выглядит в действии, посмотрите видео « Демо-ролик о том, как можно подвергнуться взлому, сёрфингуя в Интернете» . Отраженный межсайтовый скриптинг (XSS) Отраженный межсайтовый скриптинг (XSS) — это распространенная уязвимость веб-приложений, хотя они существуют с 1990-х годов. Проще говоря, отраженный XSS происходит, когда злоумышленник внедряет вредоносный код JavaScript на веб-сайт, который затем отражается в браузере пользователя. Это может привести к несанкционированному доступу к конфиденциальным данным, перехвату сеанса или другим вредоносным действиям. Если форма ввода ожидает только имя (например), следует принимать только буквенно-цифровой текст (и, возможно, дефис или апостроф); все остальные следует очищать, чтобы не дать злоумышленнику загрузить вредоносный код. Это будет применяться ко всем полям ввода. Если ожидается номер телефона, вам не нужно принимать специальные символы или буквы. Даже поля комментариев должны очищать символы, обычно используемые в скриптах или кодировании URL, такие как < или %. Преступник-хакер может использовать этот тип атаки для кражи информации у пользователя. Это может включать учетные данные пользователя, информацию о сеансовых куки или другие данные, сгенерированные пользователем. После того, как информация будет извлечена, злоумышленник может использовать ее в вредоносных целях. Мы пройдем это поэтапно, прогрессивно. Сначала мы опишем ручное тестирование для определения наличия уязвимости XSS. Затем мы настроим сервер прослушивания для подготовки к настоящей атаке. Наконец, мы воспользуемся уязвимостью с помощью учебной атаки. Этап 1: Ручное тестирование на уязвимость Ручное тестирование веб-приложения на уязвимость — один из методов определения наличия уязвимости. Наиболее распространенный ручной тест включает использование JavaScript в поле ввода или формы, чтобы проверить, будет ли запущена команда. Существует много других типов ручного тестирования ( OWASP курирует XSS Filter Evasion Cheat Sheet ), но это часто первый шаг. Шаг 1: Настройка DVWA
Шаг 2: Выявление уязвимости Первая часть этого — наблюдение за полями ввода пользователя, поскольку это элементы, которые нам нужны для этого типа атаки XSS. В консоли разработчика изучите исходный код уязвимой страницы, чтобы найти поле ввода, которое может быть подвержено атаке Reflected XSS. Когда мы заполняем форму своим именем и нажимаем «Отправить», мы получаем ожидаемый ответ. Шаг 3: Создание полезной нагрузки Теперь мы хотим создать простую полезную нагрузку JavaScript, которая при выполнении выведет на экран предупреждение с сообщением «Атака XSS на станцию». Пример полезной нагрузки: Шаг 4: Эксплуатация уязвимости Введите созданную полезную нагрузку в уязвимое поле. После отправки формы отображается оповещение, подтверждающее наличие уязвимости. Хорошо, это была простая демонстрация определения уязвимости ввода формы для взлома JavaScript, но вызывать всплывающее окно не очень интересно. Давайте перейдем к более продвинутому методу, который лучше представляет, как злонамеренный хакер может использовать эту уязвимость. Этап 2: Подготовка к атаке Мы хотим показать вам, как работает следующая атака с обеих сторон. Для этого мы проведем вас через настройку простого сервера прослушивания с использованием Node.js и Express для захвата данных, отправляемых полезной нагрузкой XSS, которую мы будем использовать позже. Это будет краткий обзор, призванный предоставить основные элементы сервера прослушивания для наших целей в следующем разделе о захвате пользовательского ввода. Шаг 1: Установка Node.js
Шаг 2: Создайте новый проект Node.js
Шаг 3: Установка Express В терминале запустите Шаг 4: Создание скрипта сервера В
Пояснение кода:
Шаг 5: Запустите сервер В терминале перейдите в каталог listen-server. Запустите Теперь сервер будет работать в режиме Теперь у вас есть простой сервер прослушивания, настроенный на захват данных, отправленных вашей полезной нагрузкой XSS. Журналы сервера будут отображать полученные данные всякий раз, когда выполняется полезная нагрузка, что мы сейчас и сделаем. Вы можете изменить код, чтобы захватывать другую информацию, такую как файлы cookie, URL-адреса и многое другое. Хотя все, что мы рассмотрели до сих пор, может показаться сложным для восприятия, эти навыки можно развивать и направлять на плодотворную карьеру. Прочитайте нашу статью Сложно ли изучать кибербезопасность? для хорошего обзора отрасли. Этап 3: Эксплуатация отраженного XSS Теперь мы продемонстрируем продвинутую технику эксплуатации уязвимости Reflected XSS для захвата конфиденциальных данных пользователя, таких как учетные данные для входа, и отправки их на сервер, контролируемый злоумышленником. Для этой демонстрации мы снова будем использовать DVWA. Шаг 1: Перейдите в раздел «Отраженный XSS».
Шаг 2: Создание полезной нагрузки Теперь мы создаем полезную нагрузку JavaScript, которая при выполнении захватывает вводимые пользователем данные в определенном поле формы и отправляет их на сервер под вашим контролем. В этом случае, прослушивающий сервер, который вы только что настроили. Пример полезной нагрузки, которую мы будем использовать, выглядит следующим образом:
В этой полезной нагрузке мы используем Хотя этот скрипт просто перехватывает отправленные данные и отправляет их на сервер прослушивания, более продвинутая атака, скорее всего, также передаст эти данные обратно и завершит действие, предпринятое пользователем. Например, вход на веб-сайт. Это сделано для того, чтобы предотвратить удивление или подозрение пользователя, когда его действие не сработало. Возврат данных и выполнение действия от имени пользователя снижает риск обнаружения эксплойта. Шаг 3: Воспользуйтесь уязвимостью Вернитесь к разделу «Отражённый XSS» в DVWA. Установите «Уровень безопасности» на «Низкий» в DVWA, чтобы убедиться в наличии уязвимости. Введите созданную полезную нагрузку в поле ввода «Как вас зовут?». Обратите внимание на URL-адрес до атаки. Нажмите кнопку «Отправить». URL в адресной строке теперь будет содержать полезную нагрузку в качестве параметра запроса. Это URL, который вам нужно будет отправить жертве. Обратите внимание, как URL-адрес отражает скрипт, который мы передали через поле ввода пользователя. Шаг 4: Доставка полезной нагрузки Теперь, когда у нас есть URL с полезной нагрузкой, мы должны доставить его жертве. Вы можете использовать различные методы социальной инженерии для доставки URL, например, отправку фишингового письма или прямого сообщения на платформе социальных сетей. Сообщение должно быть составлено так, чтобы побудить жертву (это может быть сотрудник компании, для которой вы уполномочены проводить тестирование на проникновение) нажать на ссылку, содержащую URL с эксплойтом. Как только жертва нажмет на ссылку, будет выполнена полезная нагрузка, что позволит вам захватить вводимые пользователем данные и отправить их на указанный сервер регистрации. Помните, что эта демонстрация предназначена только для образовательных или этических/юридических целей . Использование этих методов для компрометации данных реальных пользователей является незаконным и неэтичным. Как этичному хакеру, вам необходимо выявлять и сообщать об этих уязвимостях, чтобы помочь защитить пользователей и повысить общую безопасность веб-приложений. Шаг 5: Получите доступ к захваченным входным данным Проверьте журналы вашего сервера на предмет захваченного пользовательского ввода. Вы должны увидеть данные, добавленные к URL в качестве параметра запроса. Мы слышим вас громко и отчетливо. Эта продвинутая атака демонстрирует, как уязвимость Reflected XSS может быть использована для захвата конфиденциальных данных пользователя, таких как учетные данные для входа, и отправки их на сервер, контролируемый злоумышленником. Хотя эта конкретная полезная нагрузка не захватывает файлы cookie сеанса напрямую, она все равно может привести к несанкционированному доступу или компрометации пользовательских данных. Атаки Reflected XSS (Cross-Site Scripting) могут иметь ряд последствий в зависимости от характера веб-приложения и обрабатываемой им информации. Возможные последствия и наихудшие сценарии, связанные с Reflected XSS, включают:
Понимание потенциальных последствий Reflected XSS имеет решающее значение для разработчиков и специалистов по безопасности. Эти знания могут помочь вам расставить приоритеты и смягчить такие уязвимости, снижая риски, связанные с этой атакой. CSRF: Подделка межсайтовых запросов Теперь, когда мы подробно рассмотрели XSS, давайте углубимся в подделку межсайтовых запросов (CSRF), скрытую уязвимость безопасности в веб-приложениях. CSRF происходит, когда злоумышленник обманывает пользователя, заставляя его выполнять непреднамеренные действия на сайте, на котором он уже аутентифицирован , часто без того, чтобы пользователь об этом осознавал. Пока хватит об этом говорить; давайте сделаем это. Перед началом убедитесь, что DVWA настроен и запущен на локальном компьютере или сервере. Шаг 1: Войдите в DVWA
Шаг 2: Получите доступ к форме CSRF Vulnerable
Мы увидим, что наше имя пользователя и пароль работают, если воспользуемся опцией «Проверить учетные данные». Шаг 3: Анализ уязвимой формы На этом этапе мы проанализируем уязвимую форму, чтобы собрать всю информацию, необходимую для создания эксплойта CSRF. Основные сведения для сбора — это имя действия формы, метода и поля ввода. Вернитесь на главную страницу CSRF (из всплывающего окна тестовых учетных данных), щелкните правой кнопкой мыши по форме (в частности, по полю ввода пароля или кнопке «Изменить») и выберите «Проверить» в контекстном меню. Это откроет инструменты разработчика браузера с уже выделенным соответствующим HTML-кодом. В противном случае прокрутите и разверните код, чтобы найти его. Найдите Давайте проанализируем атрибуты формы и поля ввода: a. Действие формы: атрибут б. Метод формы: атрибут Изменение метода с c. Имена полей ввода: Это атрибуты имени полей ввода в форме. В нашем примере у нас есть три поля ввода с именами Обратите внимание на имена полей формы Шаг 4: Создание полезной нагрузки CSRF Создайте новый HTML-файл (мы назвали наш
Замените Пояснение кода:
Шаг 5: Размещение полезной нагрузки CSRF На этом этапе мы будем использовать веб-сервер Apache2, который предварительно установлен на Kali Linux, для размещения полезной нагрузки CSRF. Сохраните HTML-файл полезной нагрузки CSRF: Выберите место для сохранения созданного HTML-файла, например, Запустите веб-сервер Apache2: Откройте терминал и введите следующие команды для запуска веб-сервера Apache2:
Убедитесь, что веб-сервер Apache запущен, перейдя Найдите корневую веб-папку, обычно по адресу Сохраните HTML-файл полезной нагрузки CSRF (например, Exploit_csrf.html) в корневой папке веб-сайта. Для выполнения этого действия вам могут потребоваться права root:
Установите соответствующие разрешения для файла :
Получите доступ к полезной нагрузке, открыв веб-браузер и перейдя по адресу Вы можете сделать полезную нагрузку доступной для компьютеров за пределами вашей локальной сети для целей тестирования, разместив ее на удаленной машине или используя переадресацию портов с вашим публичным IP-адресом. В качестве альтернативы вы можете использовать службу Dynamic DNS для создания согласованного доменного имени, указывающего на ваш динамический IP-адрес. Шаг 6: Эксплуатация уязвимости CSRF Поделитесь с жертвой URL-адресом созданной HTML-страницы (в практических целях вы можете использовать в качестве «жертвы» свой собственный сеанс DVWA). Когда жертва открывает URL в своем браузере, созданная форма автоматически отправляется, запуская атаку CSRF и изменяя пароль жертвы на «взломанный» на платформе DVWA. Мы можем убедиться в этом, открыв меню Inspector и понаблюдав за сетевой активностью. Мы видим POST (которого обычно там не должно быть) и нашу полезную нагрузку, инициирующую трафик. Вы можете видеть, как неожиданный POST и наш файл HMTL используются для осуществления этой атаки. Если мы попробуем ту же опцию «Проверить учетные данные», наш пароль не совпадет. Подделка межсайтовых запросов (CSRF) позволяет злоумышленнику обманом заставить пользователя выполнить нежелательные действия в веб-приложении, пока он аутентифицирован . Возможные последствия и наихудшие сценарии, связанные с атаками CSRF, могут различаться в зависимости от характера целевого приложения и намерений злоумышленника. Некоторые из возможных результатов включают в себя:
Для смягчения уязвимостей CSRF необходимо реализовать соответствующие меры безопасности, такие как использование анти-CSRF-токенов, обеспечение надлежащего управления сеансами и использование атрибута SameSite для файлов cookie. Понимание потенциальных последствий атак CSRF и принятие необходимых мер предосторожности может значительно снизить риски, связанные с этими уязвимостями. Смертельный дуэт Вы попробовали свои силы в XSS и CSRF. Поздравляем с тем, что вы зашли так далеко! Но что, если мы скажем вам, что есть довольно простой способ объединить эти атаки? Давайте посмотрим, как. Эти две атаки, объединенные вместе, могут создать сценарий обхода для веб-приложений и их пользователей. Эта комбинация опасна, поскольку XSS может использоваться для кражи конфиденциальных данных пользователя, в то время как CSRF использует доверие пользователя к веб-сайту для выполнения несанкционированных действий. Это происходит одновременно. Недаром эти две атаки часто называют « Смертельным дуэтом» . Эта атака особенно полезна для хакера-преступника, когда веб-приложение использует защиту от CSRF, например, файлы cookie SameSite, или чтобы избежать обнаружения лучше, чем атака CSRF сама по себе. Кроме того, это может быть более эффективной атакой против пользователей с более высокими привилегиями, таких как администраторы или менеджеры/руководители. Для этой атаки мы сделаем несколько предварительных предположений:
Шаг 1: Создайте HTML-файл с полезной нагрузкой CSRF
Замените Вы также заметите, что этот HTML-файл проще, чем тот, который использовался в CSRF-атаке. Это в значительной степени связано с тем, что мы передаем (или заставляем) веб-приложение отправить форму на другую страницу веб-приложения с помощью токена сеанса, находясь на другой странице в том же веб-приложении. Шаг 2: Разместите HTML-файл на сервере. Этот процесс идентичен шагам, которые мы выполнили ранее при рассмотрении шагов CSRF. Шаг 3: Внедрение полезной нагрузки XSS в DVWA Вернитесь на вкладку «Reflected XSS» в DVWA. Для этого шага вам нужно будет открыть консоль разработчика и перейти на вкладку «Network». Внедрите полезную нагрузку XSS, используя встроенный
Замените « Нажмите «Отправить». Когда вы нажали кнопку и страница зациклилась, произошло два события:
Шаг 4: Эксплуатация уязвимости XSS-CSRF Аналогично предыдущему способу, отправьте жертве URL-адрес, на этот раз включив встроенный JavaScript-код, Когда жертва открывает URL в своем браузере, XSS Если вы сравните сетевую активность этой атаки XSS-CSRF с другими атаками XSS, которые вы провели выше, вы заметите некоторые различия, а именно, что здесь есть дополнительная сетевая активность с Шаг 5: Подтвердите атаку Эта часть может оказаться сложной в зависимости от того, как вы хотите подтвердить, что атака произошла. Самый простой способ — вручную проверить наличие изменений. Например, мы продемонстрировали смену пароля, поэтому периодические попытки войти в систему с новыми учетными данными, которые мы установили, могут это определить. Заключение К настоящему моменту вы должны понимать важность JavaScript для взлома и его роль в этическом взломе и тестировании на проникновение веб-приложений. Мы также изучили процесс выявления распространенных уязвимостей в веб-приложениях и то, как эксплуатировать их в контролируемой среде с использованием уязвимых платформ, таких как WebGoat и DVWA. В этой статье подчеркивается важность хорошего знания JavaScript при работе с безопасностью веб-приложений , как с точки зрения разработчика, создающего веб-приложение, так и с точки зрения этичного хакера, работающего над выявлением уязвимостей. Выявляя и эксплуатируя уязвимости, этичные хакеры могут помочь улучшить безопасность веб-приложений и обеспечить надлежащую защиту. Кроме того, освоение этих навыков может открыть возможности в растущей области этического хакинга и программ вознаграждения за ошибки. Карьера в этой области может быть финансово выгодной и интеллектуально удовлетворяющей, поскольку вы вносите вклад в то, чтобы сделать цифровой мир безопаснее. Мы призываем вас продолжить свое обучение, посещая наши курсы, чтобы повысить уровень своих навыков и оставаться в курсе последних тенденций в области кибербезопасности. Источник: www.stationx.net Комментарии: |
|