Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Баги на Почте.ру (https://forum.antichat.xyz/showthread.php?t=24000)

Digimortal 15.09.2006 12:49

Баги на Почте.ру
 
Баги на Почте.ру


[intro]

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

Большинство описанных здесь багов были найдены мною еще несколько месяцев назад, и в службу поддержки этого почтового сервиса я отправлял сообщение об обнаруженных уязвимостях и рекомендациями по их устранению. Некоторое время на главной странице сайта провисело сообщение администрации к пользователям с извенениями о возможных неполадках в работе сервиса. Недавно сообщение это убрали, НО ВСЕ БАГИ ТАК ДО СИХ ПОР И ОСТАЛИСЬ.

Непорядок. А ведь Почта.ру достаточно серьезная почтовая система (ее домены: pochta.ru, fromru.com, front.ru, hotbox.ru, krovatka.net, land,ru, mail15.com, mail333.com, pisem.net, pochtamt.ru, pop3.ru, rbcmail.ru, smtp.ru).

[Итак приступим]

Сразу перечислю ряд уязвимых мест, которые присутствуют в данной системе:
1) возможность захода в систему одновременно с разных ip-аресов;
2) хранение ответа на секретный вопрос в открытом виде без необходимости ввода пароля для его просмотра;
3) и, собственно, отсутствие какой либо фильтрации на входящие данные в ключевых скриптах системы, что дает возможность использовать уязвимости типа passive-xss и sql-inj.

Использование взломщиком этих трех уязвимостей системы может привести к следующим последствиям:
1) угон почтового ящика ;
2) угон случайных почтовых ящиков;
3) дефейс, ведь Почта.ру - это еще и бесплатный хостинг;
4) массдефейсы;
5) атаки типа DoS на БД;
6) несанкционированное получение определенной иформации, например, чтение циркулирующих в системе писем или вытаскивание инфрмации из БД адресной книги;
7) теоретичеки существует возможность более серьезного проникновения на сервер, но я не ставил перед собой такой цели, поэтому ничего об этом сказать не могу.

[xss]

Пассивная xss присутствует в скрипте mailbox.php в параметре mailb. Сначала мне показалось, что эту уязвимость использовать для угона cookie нельзя, так как скрипту передается еще уникальный идентификатор сессии (параметр id), который создается при авторизации в системе. Но потом я нашел аж два способа (способы эти, надо сказать, несколько оригинальные :)) обойти это. Один с помощью sql-inj, другой - связан с отсутствием проверки на заход в систему с разных ip.

Надо сказать, что способ угона ящиков через пассивную xss не очень эффективен: во-первых, по умолчанию авторизация через кукисы отключена, а во-вторых большинство пользователей веб-интерфейс не использует, в-третьих, - она ведь пассивка ;). Со дня на день выйдет журнал ][, где подробно будут описаны мои опыты по угону ящиков на Почте.ру (там будет и видео).

[sql-inj в mailbox.php]

Скуль-иньекции, присутствующие на сайте гораздо круче чем пассивная xss. Вчера вот обнаружил такую тему: http://forum.antichat.ru/thread19714-pochta.ru.html :

Цитата:

Сообщение от Zitt
Короче решил я проверить свою почту ввожу лог\пасс вхожу в свой ящик там есть папки Входящие, Исходящие и др. так вот жамкаю на входящие и меня кидает не на мои письма а на совершенно ДРУГОЕ мыло. (через минуту уже все было как надо) я решил проверить написал на ето мыло письмо и оно пришло
Вобщем в итоге я кактто получил доступ к ящику есесно пасса я не знал еще через 7 минут доступа уже не было.
Вот такая интересная истоория!!
Отпишитесь кто чё думает по етому поводу!!!
Zitt, я знаю в чем дело :). Все дело в очень веселой sql-injection уязвимости на этом сайте. Уязвимым оказался сам параметр id - идентификатор сессии. Почему веселой? Просто, если к идентификатору сессии добавить 'or'1 , то оказываешься в чужом ящике и все остальные (ну, я не совсем уверен, что все) юзеры Почты на сервере, для которых в БД лежит id сессии (проще говоря, те кто сидят в этот момент на сайте Почты через браузер), окажутся в этом же ящике. Но это становится уже не совсем чей-то конкретно ящик - там в придачу часто оказывается куча писем, из самого ящика + те что недавно были отправлены/приняты и еще хрен поймешь какие. Все нафиг перемешивается. Это все срабатывает не очень стабильно и очень глючно. Например писем может и не быть. А могут быть, но читаться не будут. Зато можно проделывать с этим ящиком все что угодно: писать с него письма, посмотреть и изменить настройки и т.д. (вероятно, что эти изменения отразятся и на других ящиках, а может и нет - не проверял особо).

В общем, просто перейдя по ссылке
Код:

http://www.pochta.ru/mailbox.php?id=N'or'1
можно посеять маленький хаос в этой почтовой системе ;).

[sql-inj в contact.php]

Идем дальше. Адресная книга. Когда мы просматриваем какую нибудь запись в ней, то урл выглядит следующим образом:

Код:

http://www.pochta.ru/adb/contact.php?id=[id_сессии]&uid=[id_записи]
Параметр uid - номер записи контакта в БД. Пробуем кавычку, получаем ответ сервера:

Код:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'lalala@front.ru'' at line 1
Если добавить к нему 'or' , то становится возможным изменять этот параметр просмотрев по-отдельности все записи, что имеются в БД. Неплохой источник для создания нехилого спам-листа (параметр uid изменяется от 1 до более чем 50 миллионов, так что мейлов насобирать можно немерено). Я нацарапал (чисто из интересу ;)) простенький скрипт, с помощью которого можно доставать эти мыльники и насобирал за пару дней небольшой спам-листик, но после решил, что для шеллов можно найти и лучшее применение :).

Пробуем использовать union в этом параметре:

Код:

http://www.pochta.ru/adb/contact.php?id=[id_сессии]&uid=[id_записи]'or''+union+select+null/*
В ответ получаем:

Код:

The used SELECT statements have a different number of columns
Я пробовал подобрать количество столбцов, но у меня или не получалось или даже приводило к этакому DoS - при восьми нуллах БД пару раз висла и раздел сайта "Контакты" вообще переставал работать (один раз на несколько часов). После этого я решил прекратить подобные попытки скуль-инъекций. Ну вот в общем-то и все... а, нет, еще не все: я упоминал про возможность массдефейсов.

[massdeface]

Еще когда я писал статью об угоне ящиков меня посещала идея о возможности массдефейсов на сайтах, хостящихся на этом почто-хостинге. Реализовать их можно используя sql-inj в параметре id. Для этого можно написать бота, который будет через определенные промежутки времени заходить на сайт по ссылке

Код:

http://www.pochta.ru/hosting/[id_сессии]'or'1/edit/file/?dir=/&file=index.html
, писать че-нибудь тама и сохранять это. Даже на тех аккаунтах, у которых нету сайта, он появится - сразу с дефейсом :).

И еще кое что: можно ведь совмещать xss и sql-inj. Интересно наблюдать как из одной ПАССИВНОЙ xss на снифер приходит штук по 50 записей... ;)

P.S. За все время моих исследований ни один чел не лишился своего мыла, ни один сайт не был задефейсен, и вообще никто не пострадал (про то что "Контакты" не работали - так это я наврал, небыло такого, хе-хе :)). Так что и вы, читающие это, не тупите, ок?

P.P.S. Если у тебя ящик на почте и ты предпочитаешь веб-интерфейс Bat'у, то рекомендую пользоваться старым интерфейсом Почты на http://old.pochta.ru.

[hidden] 15.09.2006 13:40

Оч пользительно!

ZikZak 15.09.2006 13:53

За труд можно и + поставить )))

D=P=CH= MOD= 16.09.2006 19:42

Небольшое дополнение.

Доступен метод TRACE
Описание

С помощью использования метода TRACE в протоколе HTTP возможно выполнение атаки межсайтовый скриптинг.

Ссылки с параметрами
Описание

Список ссылок найденных на веб-сервере, которые используют какие-либо параметры:

/regform.php?rnd2=1&aid=1&bt_next=1&rnd_img_str=1&b t_next=1

/?sid=5e646f6e1048527134e382fbca69c9cb&lng=en&rnd=3 32745106

/?sid=5e646f6e1048527134e382fbca69c9cb&bt_cancel=on &lng=ru

/rnd_img.php?sid=5e646f6e1048527134e382fbca69c9cb

/help.php?caption_id=9&lng=ru&skin=september

/advertising.php?lng=ru&skin=september

/?caption_id=1&lng=ru&skin=september

/regform.php?lng=ru&skin=september

/support.php?lng=ru&skin=september

/help.php?lng=ru&skin=september

/?lng=en&skin=september

/info.php?mid=agreement

/?mid=agreement&lng=en

/help.php?caption_id=

/?caption_id=&lng=en

/regform.php?lng=en

/forgot.php?lng=en

/?lng=en

Список форм
Описание

Обнаружены формы (POST запрос), использующиеся для передачи данных на сервер. В переменных HIDDEN может храниться специфическая или чувствительная информация. Переменные PASSWORD служат для ввода пароля.

Список форм:

POST /login.php HTTP/1.1
reason=&lng=&rnd=&user=&pass=&domain=&rememb=

POST / HTTP/1.1
lng=&skin=

POST /?lng=en HTTP/1.1
skin=

POST /support.php?lng=ru&skin=september HTTP/1.1
userName=&userEmail=&email=&sendCopy=&subject=&dom ain=

POST /forgot.php HTTP/1.1
lng=&login=&domain=

POST /?sid=5e646f6e1048527134e382fbca69c9cb&lng=en&rnd=3 32745106 HTTP/1.1
skin=

POST /?sid=5e646f6e1048527134e382fbca69c9cb&bt_cancel=on &lng=ru HTTP/1.1
skin=

POST /?caption_id=&lng=en HTTP/1.1
skin=

POST /?mid=agreement&lng=en HTTP/1.1
skin=

sWw 17.09.2006 18:45

+
спс харошая статья

blackybr 17.09.2006 19:02

D=p=ch= Mod= хпайдер рулит ?)

статья + однозначно

+toxa+ 17.09.2006 19:19

ЫКСспайдер тут не поможет))

.Slip 17.09.2006 19:38

Статья хорошая. Но автору надо бы сделать получше оформление. Раз начал зелёным цветом выделять, то выделил бы важные места в статье.

Digimortal 17.09.2006 19:58

Цитата:

Сообщение от [sL1p]
Статья хорошая. Но автору надо бы сделать получше оформление. Раз начал зелёным цветом выделять, то выделил бы важные места в статье.

Не люблю я "цветные" статьи, по-моему удобно читать так как есть...

.Slip 17.09.2006 20:01

Я не говорю про цвета цирка шапито, но такие места лучше выделить:
Цитата:

http://www.pochta.ru/hosting/[id_сессии]'or'1/edit/file/?dir=/&file=index.html
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'lalala@front.ru'' at line 1
И т.д.


Время: 06:59