МистБлэкХэт: Учебное пособие по уязвимостям CSRF
Преподаватель: gh0stkey (https://www.zhihu.com/people/gh0stkey/answers)
Редактор: Летающий дракон (https://github.com/)
Лицензия: CC BY-NC-SA 4.0 (http://creativecommons.org/licenses/by-nc-sa/4.0/)
CSRF (Cross-site request forgery, также называемая «One Click Attack» или Session Riding, обычно сокращаемая до CSRF или XSRF) — это злонамеренное использование веб-сайта. Хотя это звучит похоже на межсайтовый скриптинг (XSS), оно сильно отличается от него и использует разные методы атаки. XSS использует доверенных пользователей сайта, в то время как CSRF использует запросы, которые выглядят так, будто они исходят от доверенного пользователя, чтобы атаковать доверенный сайт. По сравнению с атаками XSS, атаки CSRF менее распространены (поэтому ресурсы для их предотвращения также относительно редки) и их сложнее предотвратить, поэтому они считаются более опасными.
Принцип атаки CSRF заключается в том, что злоумышленник создаёт ссылку, и после того, как жертва нажимает на неё, злоумышленник может выполнить желаемую операцию, такую как удаление статьи или создание пользователя. Например, если ссылка для удаления статьи на определённом сайте имеет вид http://www.xxx.com/post/<id>/delete
, злоумышленник может напрямую создать её и отправить человеку с соответствующими правами доступа, который затем сможет удалить статью, нажав на эту ссылку. Конечно, злоумышленники также могут использовать популярные в настоящее время сервисы коротких URL-адресов, чтобы скрыть подозрительность.
В отличие от традиционного понимания, метод POST не может предотвратить CSRF, потому что браузеры имеют возможность отправлять запросы POST. Например, злоумышленник может написать страницу с формой, содержащей целевой URL и все необходимые поля, а затем использовать JavaScript для отправки формы. Затем эта форма может быть размещена в доступном месте в сети, и ссылка на неё может быть отправлена жертве, побуждая её нажать на неё.
Поэтому этот метод также называется «One Click», что означает, что вся атака выполняется одним щелчком мыши. С другой стороны, операции, выполняемые в два этапа, не будут иметь этой проблемы.
Мы можем использовать CSRF-Tester от OWASP для полуавтоматического использования уязвимости CSRF и создания страниц для эксплуатации.
Следует отметить, что инструмент не определяет, существует ли уязвимость CSRF. На самом деле, на любом сайте есть множество операций, но не все из них являются уязвимыми для CSRF. Это решение, которое не может быть принято машиной. Поэтому сначала необходимо определить, где существует уязвимость CSRF, прежде чем использовать инструмент.
Мы используем его для атаки на yzcms, открытую CMS. Сначала мы заходим в бэкенд:
Затем мы нажимаем «Добавить администратора» в правом верхнем углу:
Когда мы создаём нового администратора, браузер отправляет запрос на сервер. Мы можем подделать этот запрос, создать страницу для эксплуатации и позволить уже вошедшему в систему администратору посетить эту страницу, чтобы успешно создать нового администратора.
После запуска инструмента он начинает прослушивать порт 8008 на локальном хосте:
Нам нужно настроить прокси-сервер браузера на 127.0.0.1:8008
. Затем мы нажимаем Start Recording, и он начинает захватывать запросы.
Теперь мы возвращаемся на страницу CMS и имитируем создание администратора:
Мы видим, что он захватил несколько запросов, и тот, который использует метод POST, является запросом на создание администратора. Мы щёлкаем по этой строке запроса и проверяем параметры формы ниже. Здесь нет проверки токена.
Значения параметров можно изменить произвольно. Мы смотрим на тип отчёта внизу, который является способом создания, и выбираем между <form>
, <iframe>
, <img>
, AJAX и <a>
. Здесь мы выбираем Forms. Затем мы щёлкаем Generate HTML справа и сохраняем его в выбранном месте.
Этот файл можно отправить жертве для открытия или разместить в Интернете, чтобы отправить ссылку жертве. Если мы попробуем открыть его, мы увидим, что новый администратор успешно добавлен.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )