This page has been robot translated, sorry for typos if any. Original content here.

WWW-ІНТЕРФЕЙС ЕЛЕКТРОННОЇ ПОШТИ

Оскільки методи, що розглядаються в цій статті давно відомі досвідченим користувачам, однак уразливості, що дозволяють зі стовідсотковою гарантією здійснити злом скрізь усунені, вона націлена в першу чергу на ознайомлення з принципами праці Web-пошти (і її недоліками з точки зору безпеки) початківцями.

Розглянемо особисто принцип, за яким здійснюється злом поштової скриньки через WWW. Ми володіємо сервер www.po4ta.ru також нам потрібно проникнути в поштову шкатулка user@po4ta.ru. Реєструємо аккаунт на цьому бла бла сервері test@po4ta.ru також головним заняттям заходимо в налаштування нашого новоспеченого ящика. Найбільший інтерес для нас представляє опція "Зміна пароля", в якому місці пропонується ввести новий пароль, підтвердити його також відправити дані.

Зміна пароля
Введіть новоспечений пароль:
Повторіть введення:


Код такий HTML-сторінки може виглядати наступним чином:

Тут change_pass.php - серверний скрипт, який приймає значення pass1, pass2 (пароль з підтвердженням) також username (вміст прихованого поля, яке вказує на якому саме ящику проводиться зміна пароля)
Якщо сформувати відповідний GET-запит, то полчутся наступний рядок:
http://po4ta.ru/change_pass.php?username=test&pass1=НОВЫЙ_ПАРОЛЬ&pass2=НОВЫЙ_ПАРОЛЬ

Тепер вставимо дане посилання в адресний рядок поточного вікна нашого браузера, а також відішлемо дані на сервер. В результаті ми отримуємо повідомлення про те, що пароль в ящику test@po4ta.ru успішно змінений. А що, якщо спробувати підробити значення змінної username а також змінити пароль на який нас цікавить ящику. відсилаємо:
http://po4ta.ru/change_pass.php?username= user & pass1 = новий_пароль & pass2 = новий_пароль
Сервер швидше за все видасть нам повідомлення типу "Ви зробили доступ до ресурсів, що вимагають авторизації" також тп. Це означає, що change_pass.php, який обробляє запити, встановив, що cookies, записані на наш диск на початку сеансу праці з поштою відповідають користувачеві test@po4ta.ru, але жодним чином ніяк НЕ user@po4ta.ru. Крім cookies ідентифікація користувача може проводитися по IP-адресою або спеціальним ID-ключу, про яке буде розказано пізніше.

Значить користувач змушений відправити запит сам, з ящика user@po4ta.ru. "Змусити" користувача зробити це, можна надіславши йому послання з JavaScript-кодом, при винаході якого дані автоматично відправлені на сервер з його IP також cookies. Приклади такого коду:

Або методом POST:

Всі змінні задаємо в прихованих полях, також при наведенні користувачем курсора миші на тіло нашого листа, обробник подій OnMouseOver оновлює дані. Можна повністю замаскувати процес зміни пароля, модернізувавши код:



ТЕКСТ ПОВІДОМЛЕННЯ


Таблиця розміром 1000x1000 розширює зону дії обробника onMouseOver, однак атрибут target тега form завантажує результат виконання запиту в нульовий фрейм zeroFrame, тепер процес повністю прихований від око користувача.


Можливо, так працював головний поштовий сервер з першим WWW-інтерфейсом. В даний час злом мила таким способом здійснити не можна. По-перше на більшості серверів нині при зміні пароля, поряд з новим, пропонується ввести древній пароль. По-друге важко знайти поштовий сервер, який дозволяє виконувати JavaScript в листах також пріаттаченних файлах.

поштові фільтри

Це програми, які знаходяться на сервері, вони обробляють вхідні листи, вирізаючи або змінюючи в них код, що містить потенційну небезпеку. Так, наприклад script, пізніше фільтрації може виглядати Xscript або scripX. Вся програма, що знаходяться в контейнері script в цьому випадку ніяк не стане інтерпретуватися браузером як ми спланували. Обійти охорону фільтрами дозволено або пошуком документування способів впровадження нашого коду, ніяк не врахованих розробниками поштовиків, або приховуванням його, то їсти відсилання коду в модернізованому, нераспозноваемом для фільтра вигляді.
Розглянемо інші способи виконання запиту, наведеного в попередньому зразку.


Результат зміни настройки завантажується в невидимий фрейм. Дієвий спосіб, але на більшості поштових сервісів вже прикритий.



Замість адреси картинки завантажується адреса настройки зі зміною пароля. Чи не спрацює, якщо користувач відключає графіком в свем браузері. Справно функціонує на більшості серверів. Але на деяких, приміром www.rambler.ru, завантаження URL здійснюється через спеціальний додаток redirect / http: //po4ta.ru/change_pass.php? Username = user & pass1 = новий_пароль & pass2 = новий_пароль




Зазначений URL завантажується після закінчення пори X (сек). Такий тег в даний час працює на www.hotbox.ru

інші уразливості

Досліджуючи настройки поштових скриньок на різних мильних серверах, крім зміни пароля без підтвердження, дозволено знайти ще чимало принципових недоліків, використовуючи які дозволено заволодіти чужим ящиком, прочитати або видалити послання також т.д. Повернемося до нашої поштою на www.po4ta.ru. Знаходимо опцію "Переадресація". Нам пердлагается ввести один або кілька адрес, на які будуть пересилатися листи.



Коли ми в поле emails вкажемо адресу пересилання test1@po4ta.ru, також підтвердимо зміна налаштувань натисканням кнопки "Зберегти", сторінка завантажиться з новою формою:



Щоб зміни вступили в силу, тербуєтся ввести код підтвердження, який відправляється посланням на test1@po4ta.ru. Таким чином, ми можемо купувати всю вхідну кореспонденцію, яка нас цікавить користувача, якщо по черзі відправимо йому пара HTML-листи, в головному з яких міститься вид настройки пересилання, проте в другому - підтвердження зі спеціальним, відомим нам кодом. Така схема "прослуховування" чужого поштової скриньки кілька громіздка, але зате збереглося чимало версій поштовиків, що не запитують пароля на установку переадрісаціі листів.

Наступною істотною дірою в політиці безпеки поштових сервісів є зміна секретного завдання також заперечення, якщо ця операція ніяк не захищена підтвердженням паролем. Ми можемо відрізати користувача від його поштової скриньки, оновивши дані вже відомими нам методами, проте потім, скориставшись службою нагадування пароля встановити свій пароль.

Ще частіше, одним лише тільки натисканням кнопки, в деяких поштовика видаляється обліковий запис користувача. Типовий зразок - www.yandex.ru. На видалення ящика запитується пароль, а ось на видалення сполученого сервісу - сайту * .narod.ru - пароль ніяк не потрібно. Елементарно, дозволено видалити сайт "жертви" за допомогою його поштової скриньки, виконавши запит: http://narod.yandex.ru/registration/unlogin.xhtml?DeleteLogin=%C4%E0, який дозволено заховати в тезі IMG.

Несанкціонована зміна інших параметрів хоч а також представляють значно меншу ризик, але можуть побічно вплинути на захоплення почтвого ящика
Змінити особисті дані (ім'я також т.д.)
Змінити контактну інформацію
встановити фільтр
Очистити папку XXXX
Відіслати листа від імені користувача
Встановити складальник POP3

ID-КЛЮЧ

На початку статті ми обмовився, що в деяких випадках використовується символьний ідентифікатор, при праці з поштою його дозволено спостерігати в адресному рядку браузера:



Запровадження такої системи вже ніяк не дозволяє нам виконати стандартний запит, посокльку ID генерується при кожному новоспечений заході в поштову скриньку, а також знищується пізніше завершення сеансу праці натисканням кнопки "Вихід". Однак, при некоректному завершенні сесії з'являється можливість багаторазового використання ідентифікатора.
Це легко перевірити, скопіювавши адресу в буфер обміну, закрити вікно також вставити в адресний рядок нового вікна - ми знову опинилися в нашому ящику. Тепер, якщо ID-ключ не зіставляється IP-адреса (ще один вид захисту), схожим чином дозволено проникнути в шкатулка іншого користувача, для цього досить перехопити поле location за допомогою впровадження в наше послання тегів, які відсилають запит на html-сниффер, який , в свою чергу, логірует змінну HTTP_REFERER в спеціальному файлі. Самий нехитрий спосіб, як зазвичай, вказати адресу сніффер замість передбачуваної картинки:



Файл логу - http://zero.h12.ru/stat/base.txt
Ще кілька адрес сніфферов їсти на цьому сайті. На самому занятті, наспісать скрипт, що відслідковує з якої адреси до нього надходить запрос- заняття п'яти хвилин, значно складніше знайти хостинг для його розміщення. Приклад такого скрипта на php:



Далі розглянемо ситуацію, в яку пору чужий ID для нас даремний внаслідок того, що йому ставиться в відповідність IP адреса користувача. Повернемося до системи, в який час користувач сам, зі своїм IP, змінює настройки ящика, відкривши наш лист. Припустимо їсти така опція Заблокувати всю вхідну пошту, також нам хотілося б включити її на чиємусь скриньці.



Ідентифікатор передається в прихованому полі "id", тому нині, щоб змінити налаштування, потрібно в реальному пори отримати його також підставити. Перше, що вдається в голову-JavaScript. У ньому їсти спеціалізований об'єкт location, також він містить URL активного акту. Для отримання з поля location нашого ідентифікатора, скористаємося функцією substr ().



Безпосередньо substr () з location не працює, тому додаємо до нього символ #, присвоюємо однієї змінної, проте потім в іншу змінну заносимо результат обчислення, то їсти вирізаний ID-ключ. Аргументи substr (): x-позиція від витоку рядка, що x1-позиція від x. У рядку http://www.newpochta.ru/session?id=a349f8d7be67c90af8873fc7ad803cf5&folder=inbox ідентифікатор починається з 36-ї позиції також володіє 32 символу, тому доводи набуде вигляду substr (36, 32);

Інший засіб отримання ID - знову бла бла використовувати скрипт на своєму хості. Прописуємо в що надсилається файл:




ЩЕ РАЗ ПРО фільтри

Якщо на веб-інтерфейси з cookie-ідентифікацією ми посилали стандартні запити на зміну налаштувань, також могли використовувати прості теги HTML, то при праці з ID-ключами починається пряма необхідність впровадження в лист JavaScript- коду, але розробники поштових серверів перекривають таку можливість фільтрами, про них говорилося вище. Тепер поговоримо про способи обдурювання цих фільтрів. Скористатися ніяк не зовсім звичними методами, які програмісти часто не беруть до уваги:



Фактично, JS тут "ховається" в значеннях атрибутів тегів, які працюють з URL а також генерується динамічно, при завантаженні зазначеної адреси.

Іноді фільтр дозволено обдурити, мало приховавши систему з шкідливого html, так на www.mail.ru всередину всякого тега дозволено впровадити обробник подій JS. У номральном режимі рядок



Але якщо прибрати пробіл між значенням атрибута і обробником, то фільтр пропустить таку конструкцію:



Вада такого способу в тому, що в деякій мірі з'являється прив'язка до певного браузеру, оскільки іноді їм властиво по-різному інтерпретувати HTML-код.
Наступний значний момент - в якому вигляді відіслати листа. Якщо прикріпити html-файл, то цілісність послання збережеться в аттачменті, але в тексті листа потрібні параметри ніяк не відобразяться. Тому доцільно відправляти в HTML-форматі. Таку функцію підтримують деякі WWW-інтерфейси також поштові програми POP3. У диспетчері повідомлень при цьому біля послання ніяк не стане не рухатися значок прикріпленого файлу.

ПІДБИВАЮЧИ ПІДСУМКИ

Отже, маючи на меті проникнути в чужий поштову скриньку, в першу чергу потрібно досліджувати систему на наявність вразливостей. Іноді програмісти допускають суттєві похибки в написанні сценаріїв. Приблизно кожна служба володіє функцію відновлення забутих паролів. Зазвичай на першій сторінці вводиться логін, на інший заперечення на секретний завдання, однак на третій, якщо відповідь правильна - зміна пароля. Припустимо, на що цікавить нас системі є серйозна прогалина в системі безпеки, однак саме: ми відповіли правильно на секретний завдання, також згенерувати нову сторінку з формою зміни пароля, однак при розгляді HTML цієї сторінки, виявили, що розпізнавання користувача відбувається тільки по змінної в поле "username", саме, підставивши інше ім'я користувача, міняємо пароль в чужому ящику. Або такий варіант: в обмін на правильний заперечення видається ідентифікатор, схожий того, що використовується протягом сеансу праці з поштою. Можливо, отримавши актуальний ID-ключ також підставивши в приховані поля, сервер прийме нові настройки. Сподіватися на такі упущення, я думаю, безглуздо, тому що за цим стежать суворо також подібні похибки не повторюються. Тому будемо шукати уразливості в самому принципі організації сервісу.

Якщо придивитися до web- поштою на www.newmail.ru (nm.ru, pochta.ru, orc.ru, nightmail.ru, hotmail.ru), то там як раз є такі недоліки. Звернемося знову до опції відновлення пароля. Пропонується відповісти на секретний завдання, також якщо відповідь безпомилковий - пароль пересилається на вказаний в налаштуваннях e-mail. І хоч відповідь також e-mail знаходяться в різних сторінках всередині пошти, представляється можливим змінити також те також інше, тим більше фільтр ніяк не вирізане навіть JavaScript. На додаток до всього при відновленні пароля виводиться ще одна форма, в неї потрібно ввести як дозволено більше даних (вони так бла бла знаходяться в настройках ящика) а також відправити правителю. Як заздалегідь присвоїти будь-які дані потрібного користувачеві - вже відомо.

Природно, в більшості поштовиків все перекрито, але лазівки їсти прктіческі завжди. І якщо в проникненні в шкатулка користувача для нас є великий інтерес або необхідність, то отримавши про нього як дозволено більше інформації і розробивши своєрідну "стратегічну" схему з представлених в цій статті методів, дозволено досягти непоганих результатів.
Ось реальні приклади. Зловмисник хоче отримати пароль від конкретного сервісу, яким користується "жертва" (не обов'язково поштовий, наприклад хостинг). При цьому йому достеменно відомо що забутий пароль висилається на user@pisem.net. Він відправляє на цей бла бла шкатулка послання з html-тегами:





Після видалення облікового запису він реєструє нову, з таким бла бла ім'ям також набуває на неї пароль.

Збереглася можливість проникнути з такою бла бла метою також в акаунт на mail.ru. Одним посланням скидаємо настройки безпеки



Тепер при кожному наступному заході користувачеві видається ID-ключ, причому IP-адреса не враховується, проте як вже було розглянуто, якщо перехопити його за допомогою сніффер, то нескладно виявитися всередині також прочитати потрібний лист.

На закінчення ще раз зазначу, що інформація, викладена тут, давним-давно відома більш-менш грамотним користувачам, також все бла бла підхід до злому ящика через html, на мій погляд також сьогодні відчужує більше результатів ніж Брутфорс або соціальна інженерія. Потрібно всього лише тільки знайти слабке приміщення а також спосіб скористатися ним.