Віддалений логін з використанням Clickjacking
22:41 18.10.2011В своїй статті Атаки на незахищені логін форми я розповідав про таку атаку на форму аутентифікації, як віддалений логін. Що може бути використанно для різноманітних атак (як і автоматизований логін), коли потрібно, щоб користувач був залогінений в акаунт для проведення атаки. Зокрема це може знадобитися для використання XSS, CSRF, URL Redirector Abuse та інших уразливостей в аккаунтах користувачів чи в адмінці (так звані post-auth дірки).
Звичайна схема атаки, яку я мав на увазі у вищезгаданій статті й яку я продемонстрував на прикладі багатьох дірок в різних веб додатках (як то MyBB чи панель керування ADSL модема Callisto 821+) - це коли відомі логін і пароль до акаунта на сайті. Наприклад, коли є вільна реєстрація на сайті, тому можна зробити акаунт і використати його для подібної атаки, або коли відомі логін і пароль, але в акаунті є прив’язка до IP, або атака відбувається з Інтернета в LAN (через браузер користувача).
Але, якщо розробники встановили захист від CSRF на форму логіна (токени чи перевірку реферера), то тоді віддаленого логіна зробити не вдасться. Але сьогодні я придумав метод, як можна обійти цей захист і все рівно проводити віддалений логін. В тому числі за допомогою цього методу можна проводити віддалений логін в акаунти, логіни і паролі яких не відомі.
Мій метод передбачає використання Clickjacking та Password Manager в браузерах. Менеджери паролів використовуються вже давно - з кінця 90-х років. І всі сучасні браузери мають такі менеджери паролів, що запам’ятовують паролі й підставляють їх в форми аутентифікації на сайтах. Залишиться лише провести Clickjacking атаку на форму логіна, в яку браузер сам підставить логін і пароль (якщо користувач запам’ятав його, а це зручний функціонал, тому більшість людей його використовує), щоб провести віддалений логін.
При цьому не потрібно знати логіна й пароля (бо браузер їх знає й сам підставить за нас) і будь-які захисти від CSRF-атак (такі як токени чи перевірка реферера) в формі аутентифікації не допоможуть. Тому що вони будуть обійдені самим користувачем, що зробить клік в результаті проведення Clickjacking атаки, і зайде в свій акаунт.
Так що завдяки методу віддаленого логіна з використанням Clickjacking стара рекомендація по захисту від CSRF - одразу виходити з акаунту після завершення роботи - вже не актуальна. Так як цей захисний підхід обходиться даним методом. Надійний захист, що допоможе проти цієї атаки, як і в інших випадках (про що я вже писав у вищезгаданій статті) - це використання капчі.
Один з відомих мені популярних веб додатків, що має захист від Clickjacking атак (в тому числі в формі логіна) - це phpMyAdmin. В версії phpMyAdmin 2.11.11 вже був захист від даної атаки. Зокрема розробники phpMyAdmin використали метод прибирання фреймів (frame-buster) в формі логіна. А в phpMyAdmin 3.3.0 і вище, окрім цього ще використовується заголовок X-Frame-Options всередині адмінки (що допоможе лише в деяких браузерах, що його підтримують, але frame-buster захистить від віддаленого логіна).
Неділя, 22:03 30.10.2011
You can read this article on English in The Web Security Mailing List: Remote login with using of Clickjacking.