401 Unauthorized на службе зла

    image
    Столкнулись со следующей ситуацией. На форуме (свежий IPB) злоумышленник выкладывает картинку, которая находится в закрытой зоне. Пользователь запрашивает страницу и получает ошибку 401 со всем присущим — окошко ввода логина и пароля. Развод, понятное дело, рассчитан на крайне неопытного пользователя и скорее всего не нов, но тем не менее.

    Тем не менее, IPB от этого не защищен, а вместе с ним, смею предположить, еще очень много ресурсов, в том числе и наш любимый Хабр. В последнем любой может убедиться, воспользовавшись черновиком; по понятным причинам сам приводить пример не стану.

    Было бы интересно (и думаю, не только мне) узнать ваши мысли и предложения по этому поводу.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 69
    • +11
      Это не баг, это фича.
      А леммингов, кидающихся вводить свой пароль в любое выскочившее окошко, ничто не спасет. Только обжигание на своих ошибках. Для особо одаренных — многократное обжигание.
      • +3
        Три варианта:
        0. Отключить тег img для пользователей.
        1. Армия модераторов, постоянно просматривающих все темы. Модераторов можно заменить скриптами, периодически запрашивающими картинки, вставленные через img.
        2. Создание белого списка файлообменников (с которых разрешена подгрузка картинок в img). Плюс создание собственного хостинга jpg / png / gif.
        • +3
          реальным выглядит лишь вариант 2.
          Но это все костыли и повязки, создающие стерильную среду для пользователя на конкретном ресурсе, что их еще больше расслабит и поможет фишерам поймать их на другом ресурсе.
          Правильный путь — повышение грамотности пользователей, обучение азам использования Интернета, просвещение их на тему возможных уловок мошенников.
          • +3
            Грамотный пользователь или нет, но факт появления на странице окна авторизации (в большинстве случаев блокирующего работу со страницей) раздражает всех.
            • 0
              раздражает — это да. Но это не относится к теме инфобеза. Находить нарушителей и банить по почкам.
            • +3
              Нужно делать так что бы пользователь НЕ МОГ навредить себе. Защита от дурака нужна всегда, нас так учили.))
              • –1
                Клятва Итипократа: не навреди пользователю своему!
                • НЛО прилетело и опубликовало эту надпись здесь
                • 0
                  Вариант 2 обходится тоже довольно просто — на сервере кулхацкеров айпишники хостинг-провайдеров заносятся в список для 403-ей ошибки.
                  В итоге скрипты блокируются, а люди из домашних сетей — нет.
                  • 0
                    Э… а кто будет добавлять сервера кухлацкеров в белых список серверов с которых разрешена загрузка картинок?
                    • 0
                      Я ошибся с номером — имел в виду второй по счету, т.е. «1»
                • +1
                  На free-lance.ru была такая проблема, насколько я понял.

                  Решается просто, как и на многих чатах: картинки, которые присутствуют в сообщении как <img … />, хостятся на самом free-lance.ru, путём аттача к сообщению. Видеофлешки принимаются только с крупных хостеров (ютуб, рутуб, вимео).

                  Переход на все внешние ссылки (включая чужие картинки) проходит через страницу выхода с уведомлением, типа: «Ахтунг, вы покидаете сайт фри-ланс.ру, осторожно, дальше может случиться трипер.» (опция отключается в настройках).
                  • 0
                    Обьясните нубу: вариант №4 с простейшим ботом проверяющим картинки — по сути фильтр запрещенных урл + проверка поверка ситуаций подобно вышеописанной, чем плох?
                    • 0
                      дополнительная нагрузка на сервер, лишнее время обработки скрипта, скажем для очень большого проекта это будет достаточно плохо.
                      • 0
                        Ботов найдут и обезвредят. Или у вас есть лишний бот-нет?
                    • –1
                      … Вариант 3: шлюз на Хабре для всех IMG. Принимает страницу на сервере. Если это рисунок, пропускает на публикацию, если html — выводит свой рисунок с текстом «Изображение недоступно». Чтобы не замедляло выдачу, делать это в отдельных процессах, запускаемых по .
                      • 0
                        Нагрузка? Новые уязвимости для сервера?
                        Например, придется проверять, что отдали картинку не больше какого-то размера, а то найдутся любители отгружать iso-шки :)
                        • 0
                          Есть ещё какой-то вариант, кроме проксирования? Ещё вариант — хранить изначально всё у себя и заранее проверить, что в src.
                          • –2
                            есть в HTTP такая штука, HEAD называется…
                            • 0
                              Который обмануть ну никак нельзя :)
                              • –2
                                ну хм, читаем размер «картинки» из заголовка, потом обрываем соединение после принятия нужного количества байт.
                                • 0
                                  А если в HEAD вам вернут 10МБ?
                                  Проще мо-моему сразу запросить картинку, размер присланного все равно надо проверять, чтобы не зафлудили сервер.
                              • 0
                                ага, делается простейший .htaccess, хабру отдается размерк картинки и т.д., т.к. он в белом списке, а пользователю шлется 401.
                                браво.
                          • 0
                            предположу что найдется довольно мало сайтов/скриптов защищеных от такого рода подставы. Если я правильно понимаю суть проблемы то это браузеры так обрабатывают ответы. Как вариант то что предложил юзер Hint, хотя вместо модераторов и скриптов которые время от времени что-то проверяют, я бы предложил, так как это форум расширить функциональность тэгов [img], если на форуме используется BB code в противном случае не знаю что еще придумать.

                            ЗЫ конечно же еще где-то нужно предупреждать пользователей что возможны такие казусы и чтоб они были внимательны
                            • +9
                              в добавок есть такая идея, но это больше относится к создателям браузеров.

                              Браузер должен в случае если запрос на авторизацию приходит с другого адреса будь то картинка на странице или еще что-то(на досуге проверю какие еще могут быть казусы) не выводить форму логина и пароля, а выводить просто сообщение указывая что точно и куда запрашивает авторизацию и пользователь уже пусть сам решает что с этим делать.

                              ЗЫ но это не должно блокировать работу страницы/браузера, скажем что-то на подобе оповещения о поп-ап окнах =)
                              • 0
                                вместо картинки, запрашивающей пароль, браузер мог бы выводить ссылку на внешнюю картинку и по переходу — предупреждать. думаю это не сложно реализовать в любом браузере.
                            • +1
                              Давать право на тег IMG (и ссылки?) только по достижении определенного рейтинга (кармы, числа постов) на ресурсе. Тогда злоумышленнику как минимум придется потратить немалое время\мозги на повышение авторитета или ломать существующие учетки для осуществления такого рода зловредства.
                              • НЛО прилетело и опубликовало эту надпись здесь
                                • 0
                                  Я ни слова не сказал о Хабре.
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                • 0
                                  Большая нагрузка на сервер и канал. Это же придется перекачивать все картинки через свой сервер. Уж лучше открыть собственной картинкохранилище для нужд сайта, как на dirty.ru, например.
                                  • +1
                                    Вы перепутали комментарии, Вам выше.
                                    • 0
                                      закешировать в своём хранилище
                                    • –2
                                      А просто проверять скриптом, чтоб код ответа был 200 нельзя? Легко же реализуется
                                      • +2
                                        а толку?
                                        выкладываем картинку, а после проверки меняем правила на сервере.
                                        вуаля!

                                        или с некой переодичностью проверять ВСЕ картинки в постах?

                                        можно запретить тег img, и хостить картинки только у себя.
                                        • +1
                                          Подменяем ссылку на картинку через свой скрипт, типа blabla.com/img.php?img=оригинальная ссылка
                                          скриптом проверяем ответ через HEAD запрос
                                          если 200, то отправлем пользователю путь до оригинальной картинки через location
                                          все просто, и не должно жрать много траффика.
                                          • +1
                                            Очень легко обходится — достаточно кулхацкерам настроить разные ответы для разных ip и внести ip сайта в свою базу.
                                            • 0
                                              а увидев 200 потом что, редиректить?
                                              или через себя картинку прогонять?

                                              а а еще представим на секундочку что у нас посещаемость как на хабре. и картинок несколько больше одной.

                                              имхо, проще хостить картинки у себя.
                                              хотя, зависит конечно от задач.
                                              • 0
                                                Я же написал
                                                >отправлем пользователю путь до оригинальной картинки через location
                                                под «через location» я имею ввиду отправку http header location с оригинальной картинкой.
                                              • +2
                                                Что мешает скрипту злоумышленника проверять тип запроса или IP и вести себя по ситуации?
                                        • 0
                                          Да, HTML несовершенен. Отличная, и, что самое интересное, неисправимая уязвимость.

                                          По идее там должно быть написано «сайт такой-то просит ваш пароль», но эту надпись половина человек все равно не прочтет.
                                          • 0
                                            По идее там пишется зона аутентификации. Но кто ее читает? Тем более ее можно изменить.
                                            Обязательно должен писаться домен, который на самом деле запрашивает авторизацию.
                                            • 0
                                              Это не проблема HTML. Он тут вообще ни при чем. Это проблема обработки HTTP-запросов на внешние ресурсы браузерами.
                                              • +1
                                                Значит мозилле надо в след. версии заблокировать запрос авторизации если это тег img (HTML)
                                                • 0
                                                  Как простое, но не идеальное решение — да.
                                                  • 0
                                                    Можно блокировать авторизацию для img при наличии специального meta-тега или http-заголовка, чтобы сохранить совместимость со старыми сайтами (мало ли). Хотя это само собой костыли. Подобное изначально должно быть прописано в стандарте.
                                              • 0
                                                Помимо этого, там можно будет написать любой текст, вроде: «Введите ваши логин и пароль пароль и доступа к функционалу для зарегистрированных пользователей». Так что это далеко не спасение.
                                              • +3
                                                Я всегда делаю автоматический перезалив картинки на свой хост. Изначально, причиной стало то, что когда читаешь старую информацию, созданную пользователями — многие картинки уже мертвы. Т.е. берем все ссылки вне сайта в теге img и перезаливаем на наш сервер, соответственно заменив URL в теге. И если будет что-то кроме 200 OK — ничего не выйдет.
                                                • +9
                                                  Блин! Зачем вы про это написали!?
                                                  Уже на двух форумах и одном несуществующем блоге мне выпало окошко с предложением ввести логин\пароль для доступа к закрытой части.

                                                  Я негодую :)
                                                  • +1
                                                    Стало быть и старо и ново
                                                    • 0
                                                      Я этого на хабре никогда не понимал, почему просто не качать картинки по URL и перекладывать на свой сервер. Трафик большой но в масштабах проекта копеечный, альтернативно кооперация с каким-то картиночным сервисом. А то картинки и сами дохнут, и под хабраэффектом мрут, если полезть в старые-старые посты там наверное всё уже умерло
                                                      • 0
                                                        картинки давать загружать только «привелигированным юзерам», а простым смертным максимум ссылки
                                                      • +1
                                                        <коварно>Так вот зачем нужна поддержка html в email...</коварно>
                                                        • –2
                                                          Так и хочется написать — «пока писали эту статью, в мире развели еще 20 лохо-леммингов...»
                                                          • –1
                                                            не сдержался =)))
                                                            • 0
                                                              Такое видел только в хроме. В каких еще браузерах вылазит форма?
                                                              • 0
                                                                В любых
                                                                • –1
                                                                  Не в любых — Opera 10.51 форму не показывает, просто не грузит картинку и все.
                                                                  • +1
                                                                    Злые вы — сразу минусовать :)

                                                                    Hint скинул в ПМ письмо с подобной ссылкой на картинку — там да, даже в опере диалог запроса логина и пароля появился.

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

                                                                    Так что и сложилось ложное впечатление что последняя опера этому не подвержена.
                                                                    • 0
                                                                      Я и в предыдущих версиях такого не помню. Если запрашивать файл напрямую — форма, разумеется, появляется.
                                                                • 0
                                                                  хм а подобное получить с помощью iframe получить нельзя? да и вообще можно ли использовать такой способ фишинга через iframe? соглашусь что данный вопрос несколько уже чем с использованием тэга img, но все таки =)
                                                                  • 0
                                                                    Если есть возможность вставить iframe, то почти наверняка есть возможность вставить что угодно (в том числе Javascript). А вот вставка картинок через img по умолчанию разрешена практически во всех форумах и системах комментариев.
                                                                    • 0
                                                                      я больше имел в виду банеры и банерные сети, предположу что организовать это в разы сложнее, но такой вариант все равно остается
                                                                  • +1
                                                                    Хмм. Разве что проксирование-и-сохранение картинок у себя при отправке поста.
                                                                    Заодно как побочный эффект это защищает от подмены картинки после(помнится и на хабре такое бывало :) ).

                                                                    Дабы не забивалось дискоместо, можно установить для картинки время жизни(достаточное для того, чтобы пост утратил актуальность, что сведет к минимуму кол-во успешных атак. Заодно сгладит последствия возможного падения картинкохостинга)

                                                                    Или размещение картинок только у себя(что потребует больше дискоместа).

                                                                    Или как предлагалось выше, продумывание системы репутации.

                                                                    Вопрос в том, кто какими ресурсами располагает.
                                                                    • 0
                                                                      ТС, да Вы прямо Америку нам открыли!
                                                                      Желающие читать подобное обычно ходят на «хак»-сайты в раздел для нубов.

                                                                      Тем не менее, IPB от этого не защищен

                                                                      Спрашивается, причём тут вообще IPB? Подобное прокатит на всех сайтах, где можно вставлять картинки и Flash по внешним ссылкам.
                                                                      • 0
                                                                        После процитированных вами написано еще несколько слов, как раз об этом :)
                                                                      • 0
                                                                        Я вот тут подумал, почему бы ссылки на картинки не преобразовывать с указанием имени и пароля?

                                                                        То есть
                                                                        example.org/evilpict.jpg в user:pass@example.org/evilpict.jpg
                                                                        • 0
                                                                          Тогда при запросе авторизации, злому скрипту уйдёт бесполезные «user» и «pass».

                                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.