Старый 08.10.2012, 11:46   #21
BlackFan
 
Аватар для BlackFan
 
Регистрация: 08.07.2010
Сообщений: 354
Репутация: 402
По умолчанию

Тоже в тему оперы, так и не смог сделать из этого какой-нибудь реально рабочий вектор.

Опера неправильно обрабатывает страницы, которые сначала отдают html, а потом файл.
Спалил это примерно так:
1) Прошел по ссылке скачивания файла, получил страницу авторизации
2) Прошел авторизацию и нажал кнопку назад
3) Вместо диалога скачивания получил содержимое файла в html

PS: раньше у оперы такая проблема была часто, но вроде это фиксили еще где-то в 11 версии.

Повторить такую ситуацию с игнорированием хидера Content-Type можно вот таким скриптом:
PHP код:
<?php
    
@session_start();
    
$_SESSION['test'] = (isset($_SESSION['test'])) ? !$_SESSION['test'] : false;
    
    if(
$_SESSION['test']) {
        
header("Content-type: application/zip");
        
header("Content-Disposition: attachment; filename=\"1.zip\"");
        
readfile('www.zip');
    } else {
        
header("Content-type: text/html");
        echo 
"<script>location.reload();</script>";
    }
?>
Вложения
Тип файла: zip www.zip (331 байт, 427 просмотров)
BlackFan вне форума   Ответить с цитированием
Старый 08.10.2012, 12:11   #22
M_script
 
Регистрация: 06.07.2010
Сообщений: 113
Репутация: 33
По умолчанию

BlackFan, я находил похожий баг обработки Content-Type и Content-Disposition. В тегах object или embed эти заголовки игнорировались.
http://forum.antichat.net/thread300591.html
Когда пофиксили не знаю, скорее всего в 12 версии. На 11.60 еще работало.

p.s.:
Еще немного на тему оперы.
Сканирование локальных файлов в Opera < 11.61
M_script вне форума   Ответить с цитированием
Старый 08.10.2012, 12:11   #23
Beched
 
Регистрация: 06.07.2010
Сообщений: 395
Репутация: 118
По умолчанию

Раз такая пьянка, таки ещё продолжение позавчера вышло:
http://blog.volema.com/opera-svg-xml-shortcut-uxss.html
Beched вне форума   Ответить с цитированием
Старый 08.10.2012, 14:53   #24
M_script
 
Регистрация: 06.07.2010
Сообщений: 113
Репутация: 33
По умолчанию

Цитата:
Сообщение от Beched Посмотреть сообщение
Раз такая пьянка, таки ещё продолжение позавчера вышло:
http://blog.volema.com/opera-svg-xml-shortcut-uxss.html
Редирект при просмотре картинки есть. Но XSS выполняется не на том домене, где размещена картинка, а на том, с которого происходит последний редирект. Фактически, превращает open redirect в XSS.
Еще один иностранец не дочитал первый пост до location.reload() и не понял суть уязвимости

Но тема с application/internet-shortcut все равно достаточно интересная. Во-первых, множество форумов позволяет размещать картинки, что решает проблему с добычей трафа для различных нехороших дел. Во-вторых, убирает заголовок Referer при перенаправлении, позволяя обойти распространенную защиту от CSRF.
M_script вне форума   Ответить с цитированием
Старый 08.10.2012, 14:57   #25
Aels
 
Аватар для Aels
 
Регистрация: 24.12.2010
Сообщений: 16
Репутация: 2
По умолчанию

Цитата:
Сообщение от Beched Посмотреть сообщение
Раз такая пьянка, таки ещё продолжение позавчера вышло:
http://blog.volema.com/opera-svg-xml-shortcut-uxss.html
Автор даже не понял сути обоих багов. Он странный.
Цитата:
The issue lies in the process of handling 'image/svg+xml' Content-Type with the Refresh server response header.
Уязвимость растет из 2х фактов:
1) url-файлы хендлятся самой оперой, без передачи их винде (в отличие от других браузеров). И открываются без спроса.
2) url-файлы открываются в верхнем окне. Даже не в новой вкладке. url-файл, будучи загруженным в ифрейм, подменит адрес родительской (вообще, самой верхней) вкладки.

SVG был выбран как возможность подгрузить какой-нибудь файл через img-тег.
Ни refresh-хедер, ни упаковка в data-урл, тут не нужна по-сути (просто для красоты добавлен).
Варианты остаются следующие:
1) <ForeignObject> и <meta refresh> теги в теле svg.
2) <ForeignObject> и <iframe>, или <embed> теги в теле svg.
А вот Location-хедер не годится, потому что тогда рисунку не присвоится svg+xml тип.

Паковка в data-урл сделана как задел на будущее (потому что хз сколько все ждут, что подгрузка внешних элементов в svg будет наконец запрещена).

Цитата:
Then Opera interprets a Refresh header as an internet shortcut and redirects the victum to
PHP код:
http://target.com/openredirect?param=data%3atext%2fhtml%3bbase64%2cPHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pOzwvc2NyaXB0Pg%3d%3d 
This URL has an exploit for UXSS 0-day Opera vulnerability embedded in it.
Тоже в общем-то не верно. Тут последний 0-дей и не нужен. Data:-урлы итак наследуют домен в опере.
То есть, хss в данном случае и так сработает.

п.с. M_script опередил.
Aels вне форума   Ответить с цитированием
Старый 11.10.2012, 08:04   #26
slider
 
Аватар для slider
 
Регистрация: 07.07.2010
Сообщений: 15
Репутация: 5
По умолчанию

Есть методы борьбы с данной фитчей, кроме как проверять содержимое URL-а и Location-ов?
Как я понял - на античате рефереры не передаются, но из за фитчи с перезагрузкой и игр с DOM-ом, бага всё рвено актуальна..

Цитата:
function openEx(url)
{
w = window.open();
w.document.write('<meta http-equiv="refresh" content="0;url='+url+'">');
w.document.close();
return false;
}

<span onclick="return openEx('http://..');" style="text-decoration:underline; cursor: pointer;" title="Безопасная ссылка, Referer не передается">линк</span>
__________________
У меня на ужин был старый приятель. Я съел его печень под гарнир с бобами и бокалом кьянти
slider вне форума   Ответить с цитированием
Старый 11.10.2012, 11:35   #27
M_script
 
Регистрация: 06.07.2010
Сообщений: 113
Репутация: 33
По умолчанию

slider, можно защититься через другой баг. application/internet-shortcut скрывает реферер (пост 23 этой темы).
Насчет античата. Функция openEx() уже давно неактуальна. При переходе с https на http реферер не передается. При переходе с http://форумачат по любой ссылке реферер будет виден.
M_script вне форума   Ответить с цитированием
Старый 11.10.2012, 15:04   #28
Aels
 
Аватар для Aels
 
Регистрация: 24.12.2010
Сообщений: 16
Репутация: 2
По умолчанию

slider, это косяк ачата.
Для window.open() наследуется домен, если заранее в вызов не передать другой домен сразу.
window.open("http://newdomain.com"); - так ок должно быть.
А используя application/internet-shortcut, для оперы "стрип-редирект" делается так:
Цитата:
window.open("data:application/internet-shortcut,[INTERNETSHORTCUT]%0D%0AURL=http://newsite.com/");
ну или просто
Цитата:
<a href="data:application/internet-shortcut,[INTERNETSHORTCUT]%0D%0AURL=http://newsite.com/"
Но работает, разумеется, только в опере, и только до фикса (который, почему-то, не торопится, ну и хрен бы с ним))

пс. Да вот собственно, накатал:
Код:
if (window.opera) {
	var nodes = document.getElementsByTagName("a"), i = nodes.length;
	var regExp = new RegExp("//" + location.host + "($|/)");
	while(i--){
		var href = nodes[i].href;
		var isLocal = (href.substring(0,4) === "http") ? regExp.test(href) : true;
		if (!isLocal) nodes[i].href = "data:application/internet-shortcut,[INTERNETSHORTCUT]%0D%0AURL="+nodes[i].href;
	}
}
http://pastebin.com/6K05R4B0

к себе на сайт, или в юзерскрипты.

Последний раз редактировалось Aels; 11.10.2012 в 16:42..
Aels вне форума   Ответить с цитированием
Старый 12.10.2012, 15:46   #29
slider
 
Аватар для slider
 
Регистрация: 07.07.2010
Сообщений: 15
Репутация: 5
По умолчанию

M_script, Aels - премногоблагодарен, спасибо..
__________________
У меня на ужин был старый приятель. Я съел его печень под гарнир с бобами и бокалом кьянти
slider вне форума   Ответить с цитированием
Старый 20.10.2012, 03:30   #30
M_script
 
Регистрация: 06.07.2010
Сообщений: 113
Репутация: 33
По умолчанию

Sin3v, второй вариант
Не забывай, что во фрейме обязательно находится тот же сайт (домен, протокол), с которого был переход по ссылке.
M_script вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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



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