Курс „Ethical Hacking Complete Course Zero to Expert“
Хаквайте като хакери тип „черна шапка“. Тестване за проникване, Kali Linux, WiFi и уеб хакерство, както и хакерският начин на мислене зад тях.
CSS в имейл постави фалшив прозорец за вход в Microsoft върху активна пощенска кутия в Outlook и прочете паролата буква по буква. Достатъчно е само да се отвори съобщението. Outlook, Gmail, Fastmail, Proton Mail, Yahoo Mail и AOL Mail се предадоха. 🧐
Microsoft и Google все още не са коригирали своята част от проблема.
Уеб пощата има проблем, който никога не е бил напълно разрешен. Някой ви изпраща HTML и този HTML трябва да се покаже вътре в страница, която съдържа също вашата пощенска кутия, вашите бутони и вашия профил. За да се справи с това, уеб пощата прекарва съобщението през филтър за изчистване (sanitizer), който премахва или пренаписва всичко, което счита за опасно, и предава останалото на браузъра. Слабото място се крие в думата „счита“. Филтърът има свой собствен прочит на HTML и CSS, браузърът има друг, и там, където тези два прочита се различават, се появява пролука. Някои клиенти отиват стъпка по-напред и оставят браузъра първо да анализира съобщението, след което филтрират това, което браузърът е генерирал. Този изходен резултат също може да бъде превърнат в нещо злонамерено.
Една пролука се намира в HTML елемент, на който се обръща много малко внимание. Етикетът (label) сочи към елемент на формуляр по неговия идентификатор (id), като използва атрибута си for, и кликването върху етикета насочва кликването към елемента, към който сочи. Това работи навсякъде по страницата, а не само вътре в блока с HTML, който ви е изпратен, и филтрите пропускат етикетите, защото етикетът сам по себе си изглежда безопасен. Насочете го към id, принадлежащо на самия Outlook, и съобщението започва да управлява програмата, която го показва:
Първият ред отваря собствената лента (ribbon) на Outlook. Вторият закача съобщението на подателя в горната част на входящата ви кутия. Поне три клиенти за уеб поща позволиха това и Outlook е един от тях. Намирането на цели в друг клиент отнема един ред в инструментите за разработчици (devtools): document.querySelectorAll('input[id],button[id],select[id],textarea[id]').
Друга пролука се намира във вашия клипборд. Когато копирате текст от уеб страница, вие не копирате само думите, вие копирате HTML кода зад тях. Джеймс Кетъл от PortSwigger копира IP адрес от сайт, постави го в имейл и получи реклама заедно с него. И така, какво попада в черновата ви, когато този скрит HTML е злонамерен CSS?
Тест с <style>*{color:red}</style>, копиран като HTML и поставен в AOL Mail или Yahoo Mail, оцветява текста на страницата в червено за момент, преди филтърът да се задейства. Стилизирането достига до страницата и има времеви прозорец, в който се прилага. Chrome изглежда пренаписва блоковете със стилове в стилови атрибути, а Safari изглежда ги премахва, но Firefox пропуска тага style заедно с неговите заявки за фонови изображения.
Това е достатъчно за превземане на профил. Medium ви позволява да влезете с връзка, изпратена по имейл, и тази връзка носи токен от дванадесет шестнадесетични знака. Всеки, който притежава токена, е влязъл като вас.
Редът на събитията е следният. Атакуващият иска от Medium връзка за вход за вашия адрес, така че имейлът с токена попада във входящата ви кутия. Той вкарва своя CSS във вашия клипборд. Вие го поставяте в чернова и сега неговият CSS се намира на същата страница като тази връзка. Оттам той започва да налучква. По едно правило за всяка част от токена, която иска да тества, като всяко правило казва: „зареди фоново изображение от моя сървър, ако връзката съдържа тази част“. Правило, което съвпадне, задейства заявката, а адресът на тази заявка назовава частта, която току-що е открил. Достатъчно попадения и той има токена. Влагането е това, което поддържа всички тези правила достатъчно малки, за да се поберат в имейл.
Medium не е единственият сайт, на който това работи. Почти всеки дванадесетзнаков токен се извлича по същия начин, стига да няма повтарящи се четиризнакови части.
Кражбата на натискания на клавиши с CSS не е нова идея. Публикуваната техника използва селектор на атрибути, който съвпада с края на стойността на въвеждането (input), така че въвеждането на буква се предполага да задейства заявка за фоново изображение. Тя се разпространява от години и не работи. Когато пишете в поле за въвеждане, браузърът обновява свойството value в DOM, той не обновява атрибута value в HTML, а CSS селекторите на атрибути четат атрибута. Така че селекторът съвпада с това, което е било на страницата при зареждането ѝ, и никога не вижда буква, която пишете. За да проработи, е необходима JavaScript рамка (framework), която да свърже атрибута и свойството, а в имейла няма такава рамка. Докладът озаглавява тази секция, като нарича настоящите CSS кейлогъри лъжа.
Работещ такъв се получава от падащо меню. Менюто за избор (select) реагира на вашата клавиатура – натиснете клавиш и съответната опция се избира, а псевдокласът :checked поставя фоново изображение на тази опция. Зареждането на това изображение е заявка, носеща буквата, която сте натиснали. Филтърът на Outlook блокира :checked, когато зависи от клас, така че изброяването на опциите със селектори за съседни елементи (sibling selectors) го заобикаля:
Два реда стандартен CSS превръщат това меню в нещо, което изглежда като поле за парола: appearance:none премахва стилизирането на менюто, а -webkit-text-security:disc маскира знаците. Етикет, поставен върху него, улавя...