Нередко у хакера возникает желание прочитать чужую почту. Будь то мыльник любимой девушки или злейшего врага. При этом взломщик применяет всяческие ухищрения: перебор паролей, протроянивание жертвы и т.п. Но данные приемы не особо эффективны и редко дают положительный эффект. Сейчас мы протестируем на прочность две почтовые системы – pochta.ru и yandex.ru. А найденные дырки в скриптах помогут нам легко и быстро попасть в желаемый почтовый ящик.
Pochta.ru – первая жертва
Однажды один мой знакомый поинтересовался у меня, возможно ли получить доступ к почтовому ящику, прописанному на Почте.ру. Я об уязвимостях этого сервиса на тот момент ничего не знал и поэтому решил посмотреть что там к чему. Зайдя на главную страницу, я тут же заметил первый глюк - счетчик, показывающий количество принятых за день писем был нулевым, в то время как отправленных писем было более десяти тысяч. Зарегистрировав себе ящик, я убедился, что это был не глюк системы подсчета пересылаемых писем, просто-напросто письма в тот день на Почту.ру вообще не доходили. То же самое я увидел и на следующий день. К чему я клоню? Просто хочу намекнуть тебе, не использовать данную почтовую службу для пересылки почты стратегической важности.
Впрочем, перейдем к делу. Я знал, что человек, в ящик которого нужно было попасть, использует веб-интерфейс для входа, и весьма высока вероятность того, что исполнение javascript'ов в его браузере разрешено. Понятное дело, разумным будет тогда попробовать найти XSS на сайте и угнать его куки. Решив взглянуть на содержимое cookies, которые передает сайт, я обнаружил, что по умолчанию куки не приходят - нужно при входе в ящик разрешить прием плюшек. Повторив вход, таким образом, я обнаружил целых четыре печенюшки, залетевшие мне на комп. Их содержимое меня, в принципе, мало интересовало. По названиям было видно, что там находятся зашифрованные логин и пароль - в общем, все, что нужно для быстрого входа в ящик. Срок их действия составляет аж целый год. Конечно, далеко не каждый пользователь использует подобный способ аутентификации, но все же стоило попробовать.
Баг 1. XSS
Осмотрев свой почтовый ящик, я принялся экспериментировать с ним, разыскивая наличие XSS. Разыскивать долго не пришлось, точнее не пришлось совсем. Представь мое удивление, когда я обнаружил баг уже с первой попытки! Уязвимым оказался сценарий mailbox.php, служащий для перемещений по папкам почтового ящика. Данному скрипту передается параметр mailb, который содержит название папки, в которую необходимо осуществить переход. Если подставить в этот параметр значение, не совпадающее с имеющейся в данном ящике папкой, то получаем переход на несуществующую папку, название которой попадает в html-код странице. Вставив небольшой кусочек javascript-кода в качестве значения mailb, я увидел в выскочившем окошке содержимое своих кукисов:
http://www9.pochta.ru/mailbox.php?id=Nd ... 983&mailb=<script>alert(Document.cookie)</script>
Но, как ты уже сам видишь, помимо этого скрипту так же передается параметр id, содержащий идентификатор сессии пользователя. Данный параметр, создаваемый при входе в ящик, уникален для каждого входа, и узнать каким он должен быть у человека, который получит ссылку, отравленную XSS, попросту невозможно. Понимая это, я принялся искать брешь там, где данный идентификатор не используется, т.е. за пределами ящика. Но, как и следовало ожидать, ничего не нашел. Возникло предположение, что именно наличием параметра id руководствовались программисты, создавшие скрипт, совершенно не фильтрующий ввод (могли бы хоть спецсимволы запретить). Как оказалось, нет - просто видать не доделали чего-то.
xakep.ru