Приглашаем вас проанализировать технические сценарии CSRF-атаки.

программист

Резюме обучения

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

(1) Уязвимости и эксплойты CSRF, возникающие в процессе модификации пароля

(2) Уязвимости и эксплойты CSRF, созданные в процессе добавления фонового управления

В недавно опубликованной рукописи кратко перечислены часто используемые методы и меры по предотвращению уязвимостей csrf.

1. Основные понятия CSRF

CSRF (Подделка межсайтовых запросов) Подделка межсайтовых запросов, хакеры используют зарегистрированных пользователей, чтобы побудить их посетить или войти в систему по созданной вредоносной ссылке или странице, а затем использовать имя пользователя без ведома пользователя. В имени была совершена недопустимая операция, не предусмотренная пользователем. Этот тип атаки также называется «Атака одним щелчком» или Session Riding, обычно сокращенно CSRF или XSRF, что представляет собой злонамеренное использование веб-сайтов. По сравнению с XSS-атаками, CSRF-атаки, как правило, менее распространены (и, следовательно, у них довольно мало ресурсов для защиты от них) и их трудно предотвратить, поэтому они считаются более опасными, чем XSS.

2. Изучение и понимание CSRF

На самом деле реализация атаки уязвимости CSRF должна состоять из «трех частей». 

(1) Существует уязвимость в модификации данных на переднем плане или в фоновом режиме или в новом запросе, который не требует фоновой проверки;

(2) Вредоносные ссылки или страницы, которые маскируют запросы операций с данными;

(3) побуждать пользователей к активному доступу или входу по вредоносным ссылкам и запускать незаконные операции;

2.1 Часть 1: Наличие уязвимостей

Ключевые слова: уязвимость межсайтовых запросов (CSR: межсайтовый запрос)

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

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

2.2 Часть II: Сокрытие эксплойтов

Ключевые слова: Поддельный запрос (F: подделка)

Уязвимость CSRF существует. Если ее действительно нужно использовать, необходимо замаскировать запрос операции «изменение или добавление» данных. В настоящее время злоумышленнику достаточно отправить замаскированный запрос «изменение или добавление данных» на подвергся нападению. , или с помощью социальной инженерии, чтобы побудить жертву щелкнуть ссылку запроса, когда файл cookie все еще действует, может быть активирована уязвимость csrf, и информация о данных текущего пользователя может быть успешно изменена или добавлена, например, изменение текущего пользователя пароль, либо текущий пользователь является фоновым администратором, а фоновый администратор добавляется после срабатывания уязвимости.

2.3 Часть 3: Непреднамеренные действия пользователя

Ключевые слова: непреднамеренная операция

Текущий пользователь посещает страницу или ссылки, злонамеренно созданные хакером, не зная об этом, то есть выполняет «незаконную операцию», которую хакер хочет выполнить без намерения, и реализует злонамеренную операцию с личной информацией текущего пользователя.

2.4 Резюме понимания уязвимости CSRF

Резюме: Создание вредоносной ссылки или HTML-страницы

Нам нужно понять, какова «цель CSRF-уязвимости». Фактически, это использование существующей уязвимости для создания «вредоносной ссылки» или «html-страницы», а затем побуждение пользователей щелкнуть, чтобы активировать эту уязвимость. 

Затем, чтобы было понятнее, в обнаруженном целевом сайте есть уязвимость (CSRF), Злоумышленник использует такую ​​уязвимость, чтобы замаскировать ссылку или html-страницу, чтобы побудить злоумышленника войти в систему (то есть текущий файл cookie действителен). случай) щелкнул этот замаскированный запрос, а затем завершил модификацию или добавление текущих пользовательских данных без ведома пользователя, и измененная информация может быть паролем пользователя, ключевой информацией или новым фоновым администратором. Подождите.

3. Воспроизведение CSRF-сцены

Выше было сказано так много, и все это говорит о понимании основных концепций.Далее я покажу вам, где уязвимости CSRF чаще встречаются на практике.Как мы обнаруживаем эту уязвимость шаг за шагом и как использовать его? Пожалуйста, задержите дыхание и пойдем со мной ...

Примечание. Этот документ в основном предлагает вам два сценария использования анализа и обучения.

3.1 Повторное появление CSRF-уязвимости Сценарий модификации пароля

Наиболее вероятным местом для CSRF-уязвимостей является изменение пользовательской информации и данных.Среди них изменение пароля пользователя, изменение почтового адреса и перенос аккаунта чаще всего происходят на некоторых платформах веб-сайтов торговых центров.Здесь мы используем изменение пароля пользователя Например, давайте посмотрим на процесс генерации уязвимости CSRF и на то, как создавать вредоносные ссылки и html-страницы.

Для того, чтобы каждый мог попрактиковаться самостоятельно, это демонстрационная среда платформы упражнений DVWA, чтобы изучить весь процесс уязвимости изменения пароля пользователя CSRF.

3.1.1 Создание среды уязвимости DVWA

Что касается конструкции платформы уязвимости DVWA, я не буду здесь слишком много объяснять.Чтобы узнать конкретное содержание, вы можете обратиться к онлайн-статьям и сослаться на конструкцию.Вот соответствующие справочные ссылки.

Ссылка на ссылку:Ссылка на ссылку

После того, как среда DVWA будет готова, мы можем напрямую ввести имя пользователя и пароль, чтобы войти на платформу для выполнения упражнения. (Пароль учетной записи по умолчанию: admin/passowrd)

image

3.1.2 Процесс изменения пароля для уязвимости CSRF

Здесь я использую модификацию пароля уязвимости CSRF на низком уровне DVWA и предлагаю всем посмотреть, как выглядит уязвимость Прежде всего, давайте посмотрим на процесс модификации пароля в среде уязвимости CSRF.

(1) Войдите в интерфейс изменения пароля

После того, как мы войдем непосредственно на платформу DVWA, установите текущий уровень безопасности = низкий уровень и нажмите CSRF, чтобы войти в рабочий интерфейс для изменения пароля;

image

image

(2) Изменить текущий пароль администратора пользователя

Перейдя к интерфейсу изменения имени пользователя и пароля, мы обнаружили, что работа с текущей страницей модификации очень проста: непосредственно введите новый пароль, выполните два ввода подтверждения и отправьте, без каких-либо других ограничений и требований;

image

(3) Подтверждение входа после изменения пароля

После изменения имени пользователя и пароля я напрямую выхожу из платформы, повторно вхожу в систему и проверяю, успешно ли изменен пароль пользователя. (Здесь я удаляю тип «пароль» поля пароля формы, и вы можете сразу увидеть, что открытый текст текущего имени пользователя и пароля равен 123. После нажатия кнопки «Отправить» вы успешно входите в систему, указывая, что пароль был изменен успешно.)

image

3.1.3 Анализ обнаружения уязвимостей CSRF

Затем мы используем профессиональные инструменты для захвата пакетов, чтобы проанализировать процесс изменения пароля, процесс запроса и отправки данных, а также какие действия мы предприняли.

3.1.3.1 анализ захвата пакетов burpsuite

(1) Подготовка инструмента

• Браузер Firefox

• Прокси-плагин foxyproxy

• набор инструментов Burpsuite

Браузер firefox ни о чем не говорит, а инструмент захвата пакетов burpsuite должен быть всем знаком. персонал инструмент.

(2) конфигурация плагина прокси-сервера foxyproxy

Здесь мы лишь вкратце расскажем о настройке плагина foxyproxy.Перейдем непосредственно к расширению плагина firefox для его поиска, загрузки и установки, и настройка относительно проста. Просто щелкните правой кнопкой мыши значок foxyproxy в строке меню, выберите «Параметры» — выберите рабочий режим «Включить прокси-сервер для всех URL-адресов» — установите флажок «Прокси-сервер по умолчанию» — нажмите «Редактировать выбранные элементы» — добавьте «IP-адрес» и "Порт" прокси Вот и все. 

Каждый раз, когда вы будете использовать прокси в будущем, вам нужно будет просто выбрать параметры конфигурации.Он прост в использовании и рекомендуется.

image

image

image

(3) Подробное объяснение захвата пакетов burpsuite

Ладно, не много чепухи, инструменты готовы, переходим к делу. 

Сначала мы открываем конфигурацию прокси, открываем инструмент захвата пакетов burpsuite, открываем режим перехвата и официально выполняем режим захвата пакетов.

image

image

С помощью анализа захвата пакетов burpsuite мы можем обнаружить, что во всем процессе смены пароля в пакете данных запроса передаются только два ключевых параметра:

3 пары значений ключ:значение для модификации пароля: password_new, password_conf, Change

Значение cookie текущего пользователя: PHPSESSID, Security

Кроме того, во всем пакете запроса на изменение пароля нет другого содержимого, которое может подтвердить или подтвердить запрос клиента, то есть, поскольку нет другой проверки, это последующая «подделка межсайтового запроса» хакера. возможность, а также является основной причиной уязвимости.

3.1.3.2 анализ перехвата пакетов данных о несанкционированных действиях.

Конечно, помимо использования инструмента захвата пакетов burpsuite, я также могу использовать другие инструменты для захвата и анализа содержимого веб-запросов.Здесь я просто поделюсь с вами инструментом анализа, который использует плагин данных о несанкционированном доступе для захвата и изменения пакеты.

(1) Подготовка инструмента

фаерфокс браузер

расширение данных тампера

(2) установка плагина пакета данных тампера

Tamper data — это инструмент захвата и модификации пакетов, а также одно из расширений браузера firefox, так что нам просто нужно искать, скачивать и устанавливать в расширениях.

(3) анализ захвата пакета данных о несанкционированном доступе

image

3.1.4 Использование CSRF-уязвимости

3.1.4.1 Злонамеренная подделка ссылок

После обнаружения уязвимости csrf в изменении пароля на целевом сайте ключом к ее использованию является использование burpsuite для захвата пакета, извлечения URL-адреса GET-запроса для операции изменения пароля, а затем его обработки. соответственно Метод обмана других, чтобы они щелкнули ссылку и изменили информацию об учетной записи и пароле других, заключается в следующем.

(1) Усечение пакета запроса и извлечение запроса URL

image

Значение извлечения URL:Значение извлечения URL

(2) Маскарад URL-ссылок

Упомянув URL-запрос с уязвимостью csrf, мы можем напрямую сократить URL-адрес, выполнить простую обработку маскировки и объединить метод социальной инженерии, чтобы побудить атакуемый объект щелкнуть, чтобы активировать эксплойт.

image

image

3.1.4.2 Вредоносная подделка html-формы

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

• Шаг 1: Извлеките запрос URL для изменения пароля;

• Шаг 2: подделайте выражение формы в соответствии с форматом запроса URL;

• Третий шаг: побудить злоумышленника перейти по вредоносной html-ссылке;

(1) Извлеките запрос URL для изменения пароля

Мы можем использовать инструмент захвата пакетов burpsuite для захвата пакетов данных операции модификации пароля и анализа содержимого запроса пакетов данных.

image

(2) Фальшивая форма

Проанализировав содержимое запроса на изменение данных пароля, мы можем вручную создать простую страницу html-формы для подготовки к атаке csrf;

image

(3) Побуждать злоумышленника переходить по вредоносным html-ссылкам.

Сконструированную html-страницу-форму мы выкладываем в интернет, а затем с помощью социальной инженерии отправляем злоумышленнику, чтобы побудить его посетить эту вредоносную страницу и начать «операцию модификации пароля учетной записи».

image

3.1.5 Краткая информация об уязвимости модификации пароля CSRF

Краткое изложение уязвимости CSRF, связанной с модификацией пароля: благодаря приведенному выше анализу и обучению мы можем обнаружить существование этой уязвимости сценария, которую на самом деле найти проще. Другой особенностью является «модификация пароля пользователя без каких-либо условных ограничений и механизма проверки».

3.2 Повторное появление CSRF-уязвимости, добавленной бэкэнд-администратором

Когда мы проводим тестирование на проникновение, мы также часто проводим некоторое «тестирование черного ящика» системы CMS, то есть сами создаем систему CMS целевой системы, а затем локально выполняем все функциональные тесты безопасности на переднем плане и в фоновом режиме, чтобы найти возможные лазейки. Среди них для операции "добавление системного администратора в фоновую учетную запись" необходимо найти уязвимость csrf. Если я смогу найти эту уязвимость, мы можем создать вредоносную страницу формы html для реальной цели "CMS system" "Для проведения атаки мы добавляем фонового администратора в реальную целевую систему, снимаем его права на фоновое управление и открываем дверь для дальнейшего проникновения. Следующим повторением уязвимости является использование нишевой системы CMS для добавления уязвимости фоновой учетной записи управления в CSRF.

3.2.1 Подготовка среды

Подготовка среды веб-контейнера phpstudy

инструмент захвата пакетов burpsuite

скачать систему lvyecms

3.2.2 Среда веб-контейнера phpstudy

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

ссылка для скачивания:

3.2.3 инструмент захвата пакетов burpsuite

Использование инструментов захвата пакетов burpsuite и подключаемых модулей прокси можно найти в приведенном выше разделе 3.1, который не будет повторяться здесь. Но позвольте мне сказать, что набор инструментов burpsuite действительно мощный. Я настоятельно рекомендую вам его иметь. Позже я покажу вам, как использовать burpsuite для создания формы Csrf POC одним щелчком мыши. Я только что изучил его и поделюсь им. с вами, когда демо воспроизводится.

3.2.4 Создание среды lvyecms

3.2.4.1 Распакуйте исходный пакет

После того, как среда веб-контейнера phpstudy готова, мы можем напрямую распаковать и переименовать исходный пакет lvyecms (lvyecms), а затем скопировать распакованный пакет в папку WWW в основном каталоге phpstudy.

image

3.2.4.2 Настройки имени домена сайта

Для последующего доступа к тестовой среде я просто устанавливаю «настройки имени домена сайта», конкретные настройки следующие. 

Выберите «Меню других параметров» — «Управление доменным именем» — «Добавить доменное имя веб-сайта».www.lvye.com- Настроить «Каталог сайтов»E\phpstudy\www\lvyecms, затем нажмите «Добавить» и, наконец, сохраните настройки и перезапустите службу.

image

3.2.4.3 Настройка файла синтаксического анализа узла hosts

Я иду прямо в каталог «C:\Windows\System32\drivers\etc», чтобы найти файл hosts и добавить запись синтаксического анализа в файл.

127.0.0.1 www.lvye.com, а затем сохраните его. (Обратите внимание, что файл можно успешно изменить, только открыв файл с правами администратора)

image

3.2.5 Проверка процесса добавления фонового управления

(1) Войдите в интерфейс для добавления фоновых администраторов

image

(2) Добавить тест фонового администратора

image

(3) Подтвердите добавление администраторов

image

3.2.6 Анализ обнаружения уязвимостей CSRF

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

(1) Настройте уязвимости безопасности в настройках прокси-сервера Firefox.

(1) Настройте параметры прокси Firefox

Для использования плагина настройки прокси-сервера foxyproxy в браузере Firefox, пожалуйста, обратитесь к главе 3.1.

image

(2) Включите усечение прокси-сервера пакетов burpsuite

image

image

(3) Запросить анализ захвата пакетов

С помощью анализа перехвата пакетов мы видим, что запросы, отправленные в процессе добавления суперадминистраторов в фоновом режиме, содержат только два типа ключевой информации:

Содержит значение cookie текущего пользователя.

Добавить информационные параметры, связанные с администратором;

За исключением двух указанных выше сведений, другой информации для действительной проверки личности текущего пользователя нет. Следовательно, предполагается, что операция добавления администратора здесь может иметь уязвимость csrf.

(4) Напрямую создать вредоносную ссылку csrf типа get

Метод построения относительно прост.Мы напрямую усекаем данные в burpsuite, щелкаем правой кнопкой мыши, выбираем «», а затем щелкаем правой кнопкой мыши «копировать URL», чтобы получить полный URL-запрос «добавить операцию управления» get тип;

image

image

image

В результате проверки было обнаружено, что созданная вредоносная ссылка csrf get-type не может добавлять администраторов.Из этого можно сделать вывод, что скрипт index.php может ограничивать тип запроса данных и принимать только отправку данных post-type.

(5) Создать html-страницу пост-типа

Вот анализ для всех.Я также только что изучил метод прямого построения формы csrf poc с использованием burpsuite. Мы прямо щелкаем правой кнопкой мыши страницу усечения пакета и выбираем «Инструменты взаимодействия» — «Создать CSRF PoC», чтобы получить форму csrf poc.

image

image

(6) Построить проверку формы HTML CSRF

Затем копируем полученное содержимое формы в документ csrf.html и сохраняем его, а этот csrf.html публикуем на сайт (здесь я прямо помещу poc house в основную директорию сайта lvye.com), а затем находим способ пройти социальную инженерию, чтобы заманить администраторов на посещение этой вредоносной страницы, запуская действия, добавленные администрацией. (Конечно, мы лишь вкратце демонстрируем здесь процесс эксплуатации, в чем собственно состоит содержание социальной работы, давайте включим собственные мозги...) Конкретный процесс эксплуатации уязвимостей в основном демонстрируется следующим образом.

image

image

image

4. Защита от CSRF-уязвимостей

На самом деле, защита от уязвимостей CSRF в настоящее время является относительно зрелой.Основная идея защиты состоит в том, чтобы добавить эффективные меры проверки личности текущего пользователя во время фоновой операции модификации данных, не ограничиваясь идентификацией файлов cookie.Вот простые меры защиты: перечислено ниже.

(1) Проверка источника

Используйте источник реферера в заголовке http-запроса, чтобы проверить подлинность источника клиента.Этот метод использовался больше в первые дни, но его все еще легко обойти, поэтому не рекомендуется использовать его здесь.

(2) Проверка токена пользователя

Добавить механизм случайной проверки действительных токенов на основе идентификатора текущего пользователя, то есть при отправке запроса на операцию с данными в бэкэнд добавить случайное значение проверки токена на основе текущего пользователя.В настоящее время этот метод проверки используется чаще;

(3) Подтверждение текущего пароля пользователя

При изменении ключевой информации запрашивать у текущего пользователя его собственный пароль для проверки подлинности личности текущего пользователя и предотвращения несанкционированных злонамеренных операций;

(4) Добавить механизм проверки

Перед отправкой данных запроса вам необходимо заполнить информацию о коде подтверждения для отправки, чтобы повысить эффективность проверки источника пользователя и предотвратить злонамеренные несанкционированные операции. Этот артикул переведен из класса безопасности