Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Firefox отменил данный запрос!

Вот такое сообщение об ошибке мне показал сегодня FF 3.5:

Сюда не ходи, туда ходи (5.52КиБ)

Очень не люблю когда программа за меня решает что мне делать. Особенно издевательски смотрится кнопка «Попробовать снова». Зачем мне на неё жать? Firefox может передумать?

25 комментариев
kalvado.livejournal.com 2009

А на какой порт он так ругнулся, если не секрет?

invalidCCIE (blog.invalid.org.ua) 2009

Комментарий для kalvado.livejournal.com:

ну на 23й порт 100% ругается :)
я так понял что и на другие обычно занятые другими службами будет ругаться.

Евгений Степанищев (bolknote.ru) 2009

Комментарий для kalvado.livejournal.com:

Не помню. Какой-то 683-й что ли.

Евгений Степанищев (bolknote.ru) 2009

Комментарий для splurov.livejournal.com:

Да, я видел, спасибо!

Евгений Степанищев (bolknote.ru) 2009

Комментарий для kalvado.livejournal.com:

636, вспомнил!

nikelin.livejournal.com 2009

Вполне нормальная логика — защита пользователей. А кому сильно нужно просто пойдут и поправят дефолтные настройки ФФ в about:config.

nikelin.livejournal.com 2009

Комментарий для nikelin.livejournal.com:

А кнопочка «Повторить» нужна в случае, если вы эти настройки таки поправили.

Евгений Степанищев (bolknote.ru) 2009

Комментарий для nikelin.livejournal.com:

Защита пользователей от чего, если уж на то пошло?

maxim-zotov.livejournal.com 2009

Комментарий для Евгения Степанищева:

Защита от отправки данных внутри локальной сети пользователя, например, по ссылке выше: «A simple exploit of this hole allows an attacker to send forged unsigned mail through a mail server behind your firewall»

Файервол и вообще различные сервисы сильнее защищены от внешних соединений, но внутренним адресам делают послабления.

Евгений Степанищев (bolknote.ru) 2009

Комментарий для maxim-zotov.livejournal.com:

Звучит как фантастика. HTTP и SMTP сильно отличаются, я не представляю как можно из браузер отослать почту без почтового клиента.

maxim-zotov.livejournal.com 2009

Комментарий для Евгения Степанищева:

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

Если там дальше по ссылкам пойти, там очень много всякого текста про cross-protocol scripting, готовые программы-эксплойты. Я не вникал.

Один из примеров такой:
http://ftp://%0ahelo%20localhost%0amail%20from%3A%20%3Ctest%40example.com%3E%0arcpt%20to%3A%20%3CXXXXX%40netscape.com%3E%0adata%0atest%20test%20test%0a.%0aquit:whocares%40localhost:25/

Браузер соединяется с smtp-сервером, как будто это ftp, и выдает ему вместо пароля smtp-сессию.

Другой пример: отправка какому-то сервису строки alert(document.cookie), сервис повторяет её в качестве текста ошибки, а браузер выполняет, считая, что ему ответили html-кодом, таким образом можно своровать куки.
http://eyeonsecurity.org/papers/Extended%20HTML%20Form%20Attack.htm

maxim-zotov.livejournal.com 2009

Вот PDF’ка с описанием:
http://www.remote.org/jochen/sec/hfpa/hfpa.pdf

Кратко: в textarea формы находится smtp-сессия, она посылается в виде multipart/form-data, то есть в незакодированном виде, начальные строки до первого HELO игнорируются smtp-сервером.

Евгений Степанищев (bolknote.ru) 2009

Комментарий для maxim-zotov.livejournal.com:

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

За ссылки на HTML Form-атаку спасибо, буду изучать. Это для меня новый пласт. Правда запрет ходить на какие-то порты не защитит от echo-атаки. Можно поднять echo-сервис на любом порту, если я правильно понимаю её смысл.

Евгений Степанищев (bolknote.ru) 2009

Комментарий для maxim-zotov.livejournal.com:

Ага, прочитал про «Extended HTML Form Attack». Очень забавно. То есть кража куки с чужого сайта делается при помощи echo-сервиса этого сайта, если он конечно есть. Странно, что русскоязычных источников на эту тему я не вижу.

Евгений Степанищев (bolknote.ru) 2009

Комментарий для maxim-zotov.livejournal.com:

Правда, браузеру придётся отработать с нарушениями стандартов. Например, он должен, при указанном «Content-type: text/plan» всё-таки отобразить документ как HTML. Так делали IE 6 и ниже и какие-то древние версии «Оперы», что указано в статье.

Вторую статью я пролистал пока по диагонали, но. Все эти атаки работают с протоколом ftp или с использованием POST-запроса. В моём же случае, протокол HTTPS, а запрос сделан руками, прямой, без всякого POST.

maxim-zotov.livejournal.com 2009

Комментарий для Евгения Степанищева:

«при помощи echo-сервиса этого сайта, если он конечно есть»
Не только echo-сервиса, он приведен просто в качестве сферического примера.

Там ниже есть табличка с реальными сервисами и программами: Serv-U, WU-FTP, Imail, ProFTPD, QPOP.

Например:
$ telnet ftp.rbc.ru 21
Trying 80.68.240.41...
Connected to ftp.rbc.ru.
Escape character is ’^]’.
220 ftp.rbc.ru FTP server ready
user <html><script>alert(document.cookie)</script>
331 Password required for <html><script>alert(document.cookie)</script>.

Теоретически в этом случае браузер мог бы выдать куки домена rbc.ru.

Практически же сейчас попробовал так сделать, послать форму с таким кодом на 21-ый порт (перед этим убрал запрет на работу с ним), Firefox-2 показывает вывод ftp-сервера как text/plain, поэтому ничего не происходит. В MSIE 6 тоже попробовал, выдаёт ошибку загрузки страницы, но у MSIE всегда одна и та же ошибка, поэтому не разберёшь, что именно ему не нравится, возможно, именно порт.

maxim-zotov.livejournal.com 2009

Комментарий для Евгения Степанищева:

«Можно поднять echo-сервис на любом порту, если я правильно понимаю её смысл.»

echo-сервис не атакующий поднимает.

echo-сервис (или любой другой, выдающий в ответ то, что ему написали) должен работать в домене того сайта, с которого атакующий хочет получить куки. Если хочет получить куку yandex.ru, то на каком-то сервере *.yandex.ru должен работать такой сервис.

maxim-zotov.livejournal.com 2009

О! Получилось. Просто нужно было в action ставить адрес с расширением html, тогда firefox (пробовал на 2 и 3) считает это html-страницей и выводит alert с куками.

http://support.li.ru/tmp/rbc.html

Перед этим в prefs.js файерфокса нужно записать строку:
user_pref(«network.security.ports.banned.override», «21»);

Евгений Степанищев (bolknote.ru) 2009

Комментарий для maxim-zotov.livejournal.com:

Я там писал комментарии по мере того как читал текст и разбирался. Теперь-то я до конца всё прочитал :)

Евгений Степанищев (bolknote.ru) 2009

Комментарий для maxim-zotov.livejournal.com:

Как я и сказал, достаточно было поднимать шум на POST-запросах и на протоколах, отличных от HTTP/HTTPS.

maxim-zotov.livejournal.com 2009

Комментарий для Евгения Степанищева:

Думаю, лучше перебдеть, чем пытаться понять, возможен ли взлом не через post или нет. Да и вообще, зачем нужно запускать http-сервис на порту, закреплённым за другим сервисом? Зачем нужно вносить дополнительную путаницу, если можно решить задачу прямым способом без извращений?

Вот, кстати, работающий пример воровства куки домена masterhost.ru безо всяких дополнительных разрешений портов: http://support.li.ru/tmp/mh.html
Это к вопросу о безопасности запуска сервисов вообще на любых нестандартных портах (1024+). А казалось бы, что может быть страшного от почты на порту 2525.

Конечно, кука мастерхоста никому не нужна, но всё-таки. У того же mail.ru тоже есть smtp на 2525, но голыми руками его не взять, он выдаёт ошибку, если ему приходит слишком много неправильных команд (http-заголовок).

Евгений Степанищев (bolknote.ru) 2009

Комментарий для maxim-zotov.livejournal.com:

В интранете многое может понадобится. Например, запустить ещё один HTTPS-сайт на том же IP. TLS SNI ещё далеко не все браузеры умеют. А порт был выбран случайным образом.

Евгений Степанищев (bolknote.ru) 2009

Комментарий для maxim-zotov.livejournal.com:

А чьи логин и пароль там светятся на странице mh.html?

maxim-zotov.livejournal.com 2009

Комментарий для Евгения Степанищева:

Какого-то идиота, которому пришло в голову опубликовать свой логин-пароль в интернете.