28 Oct
Posted by alexf as новичкам, палю тему, хакерство, холокост, шняга
« Registrant Search | Рейтинг блогов тепеть с пеаром »
Вычитал про хитрую технологию хака, думаю всем веб-разработчикам и сочувствующим кто ещё не в курсе, будет интересно про неё узнать: Cross-site request forgery. На русский можно перевести как “межсайтовая подделка запроса”. Смысл такой, что если у вас есть сайт с аутентификацией, на сайте человек залогинился с кукой и сабмитит форму, которая что-то меняет, например пароль, то вы (разработчик) думаете что у вас всё чики-пуки. А на самом деле, если это дело было запрограммировано не совсем правильно, то форму вам может сабмитнуть молдавский хакер, с понятными последствиями.
Делается это путём подсовывания по мышку юзеру специально сформированной ссылки или показа картинки у которой вместо файла всунута опять же ссылка. Ссылка должна быть такой, какую ожидает сайт-жертва при сабмите формы. Причём хакеры могут подделать не только гет, но и пост запрос, с помощью жаба-скрипта.
Как бороться: самый очевидный способ – во все формы вбивать уникальное скрытое поле, которое перед вбиванием записывать в кибермозг компьютера и потом сверять с тем что получено от юзера, либо перед записью в форму, кодировать поле по секретному ключу, а при получении назад раскодировать и сверять. В вики пишут про ещё один способ – перед сабмитом форм зачитывать скриптом авторизирующую куку, при этом будут применены более строгие правила на кросс-доменные запросы и хакер обломается. Но способ со скрытыми полями мне кажется всё-же надёжней, он не зависит от браузера.
Английские братья по разуму пишут что таким способом в аккаунте адсенса можно поменять адрес с Англии на Молдавию.
Что-то мне подсказывает, что для этой уязвимости вордпресс тоже должен быть одной большой дырой. Пойду просматривать на своих сайтах, если ли у меня такие формы.
14 Responses
October 29th, 2007 at 09:33:24
// php gravatar() ?>1В ASP.NET по-умолчанию есть защита от такого типа атак.
October 29th, 2007 at 11:03:05
// php gravatar() ?>2Довольно старая уязвимость, в свое время с её помощью меняли пароли на mail.ru и прочих сервисах — присылали письмо с ифреймом или ссылкой.
Именно после этого при смене важных данных в форме стали ставить поле пароль.
October 31st, 2007 at 10:46:03
// php gravatar() ?>3Написано так, что самому пришлось читать на википедии…
Кука привязывается к конкретному ip. Соответственно молдавский хацкер ничего с ней сделать не сможет. Это уже достаточно давно реализуется на форумах – писать с другого ip можно, а если что-то поменять в админке – требует подтвердить паролем.
November 7th, 2007 at 23:17:55
// php gravatar() ?>4[...] означающий подбор пароля. Предположим что вы опять же, веб-разработчик из Саратова (из глуши). У вас на сайте есть формочка, [...]
November 8th, 2007 at 11:02:12
// php gravatar() ?>5Брутфорс не актуален даже для веб-разработчика из Саратова
Интересно, нужно жить в Москве, чтобы знать каким образом защититься от брутфорса?
November 8th, 2007 at 15:41:54
// php gravatar() ?>6Greignar, Как показывают комментарии, почти все москвичи тоже не знают, включая вас.
Про брутфорс лучше писать в сообщении о брутфорсе, тут пишут про CSRF.
November 9th, 2007 at 02:29:47
// php gravatar() ?>7alexf, действительно немного недопонял… На страницу подсовывается скрипт, который самостоятельно изменяет данные от имени и с компьютера пользователя.
Вопрос в том, сможет ли скрипт подделать реферер (изменение данных разрешено только при переходе с конкретных форм, к примеру http://???.ru/users/edit.htm)?
А если он самостоятельно сможет ввести символы с капчи (подтвердить изменения данных) то я сдаюсь…
З.Ы. Хоть я и не разработчик, и живу на другом конце России, получается сам не зная того успел обезопаситься. Или еще пока нет?
November 9th, 2007 at 03:05:35
// php gravatar() ?>8Строго говоря, использовать реферрер для чего либо кроме сбора информации – неправильно. Я могу одной кнопкой в браузере запретить показ реферера. Или реферер может потеряться при переходе по хитро сформированной ссылке. Или я просто адрес нужной страницы введу вручную. И при этом я останусь легитимным пользователем сайта. А поменять информацию не смогу.
В статье написано что нужно делать, зачем пытаться изобрести неправильно работающий велосипед?
November 9th, 2007 at 03:23:40
// php gravatar() ?>9alexf, если я смогу запустить на машине пользователя произвольный ява скрипт, то скрипт сможет в фоне подгрузить форму для изменения пароля, выдернуть из нее “уникальное скрытое поле” и преспокойно отправить все на сервер.
Кстати, про реферер не я придумал, это давняя “защита” от выполнения скрипта при запросе из за пределов сайта, да и на ВИКИ (по указанному вами адресу) этот вариант защиты рассматривается.
Самое интересное, что и куки вы можете запретить, но в нужных местах разрешаете. Чем же реферер провинился? Мне кажется все просто – хочешь работать с данным ресурсом – давай ему то, что он просит.
P.S. Велосипед с реферером “неправильно” работает на многих форумах, и правильно делает что работая таким “неправильным” способом защищает своих посетителей.
November 9th, 2007 at 03:44:45
// php gravatar() ?>101. Запуск произвольного скрипта на машине пользователя не является CSRF.
2. Скрипт не сможет ничего выдернуть из страницы на чужом сайте, это основа основ безопасности, иначе такие танцы с бубнами как CSRF были бы вообще не нужны. Весь серверный АЯКС как раз нужен чтобы обойти запрет на кросс доменные запросы.
November 9th, 2007 at 04:18:54
// php gravatar() ?>111. Внедряя ссылку на якобы рисунок, мы пытаемся запустить ява-скрипт на машине пользователя. Нам нужен ip оригинальной машины и его кука для последующих манипуляций с паролем. С чужого ip и с украденой кукой ничего не получится.
2. Почему не выдернет? Скрипт так же может давать запрос на получение страницы и получать ее. Какая тут основа основ? Можно защититься, но только нелюбимым вами реферером.
Причем сдесь аякс? Серверная честь “аякса” это обычный скрипт, преобразующий запросы клиентской части и отдающий ей все то, что она просит. Яякс нужен не для кроссдоменности, а для асинхронного обмена м-у клиентом и сервером.
November 9th, 2007 at 04:38:13
// php gravatar() ?>12> Скрипт так же может давать запрос на получение страницы и получать ее.
Не может. Попробуйте хоть 1 раз так сделать с нормальными, стандартными настройками безопасности в любом популярном браузере. Я не понимаю зачем спорить ради спора, тем более противоречить общеизвестным элементарным вещам. Поэтому со своей стороны диалог прекращаю.
November 9th, 2007 at 04:55:45
// php gravatar() ?>13Проверьте сами – http://arsengine.org.ru/diary/1189566556512591.htm
Там по ссылке ява скрипт дает запрос скрипту на сервере, получает данные и выводит их на страницу. Можете даже посмотреть исходный текст формы, в нем вы не найдете ни формы, ни комментариев. Работает на Опере и ИЕ, на Фоксе не пробовал.
А что такого, скрипт запускается в контексте оригинальной страницы.
Насколько я понял, в CSRF используется идея внедрение скрипта в контекст страницы, в противном случае он по причинам безопасности не сможет воспользоваться чем-то другим.
November 24th, 2009 at 03:58:10
// php gravatar() ?>14[...] через CSRF - при клике открывается ссылка с ифреймом, который [...]
RSS feed for comments on this post · TrackBack URI
Написать комментарий
Про что писал
Календарь
Куйворды
Архив
Подписка на блог
Статистика подписки
Страницы
Комментарии
Последние посты
Blogroll
Счётчики
Свежие записи
Последние комментарии
Интересное на блоге
Самое комментируемое
SEO блог где палят темы is proudly powered by WordPress - BloggingPro theme modified by alexf