При поиске действительных файлов cookie в списке файлов cookie выполняется сравнение атрибутов домена файла cookie с именем домена в Интернете хоста, с которого будет получен URL-адрес.Если есть совпадение хвостов, то cookie будет проходить сопоставление пути, чтобы увидеть, нужно ли его отправлять.«Сопоставление хвоста» означает, что атрибут домена сопоставляется с хвостом полного доменного имени хоста.Атрибут домена «acme.com» будет соответствовать именам хостов «anvil.acme.com», а также «shipping.crate.acme.com».Только хосты в указанном домене могут устанавливать cookie для домена, и домены должны иметь по крайней мере два (2) или три (3) периода в них для предотвращения доменов в форме: ".com", ".edu" и "va.us».Любой домен, который выходит из строя в пределах одного из семи специальных доменов верхнего уровня, перечисленных ниже, требует только двух периодов.Любой другой домен требует как минимум три.Семь специальных доменов верхнего уровня: «COM», «EDU», «NET», «ORG», «GOV», «MIL» и «INT».
Значением домена по умолчанию являетсяимя хоста сервера, который сгенерировал ответ cookie.
read here .
вы можете загрузить iframe с хоста, который затем перезагружается с закодированным значением cookie в части сегмента (после #).
затем вы можете получить доступ к атрибуту document.location изродительское окно (поражает единственное, что доступно).расшифруйте его и передайте на сервер, выполнив запрос ajax.
Это может выглядеть так.
xss.php (расположен на cookie.example.com):
<?php
$data = array(
'uid' => $_COOKIE['uid'],
'loginhash' => $_COOKIE['loginhash']);
header('Location: xss.php#'.urlencode(json_encode($data)));
для этого конкретного случая это не обязательно должен быть хэштегом!это просто удобно для других ситуаций.это также может быть сделано в javascript.
другой веб-сайт встраивает xss.php:
<iframe id="cookies" src="http://cookies.example.com/xss.php"></iframe>
you need to somehow delay the following of do it in a loop that stops after 5 seconds or something.
if(document.getElementById('cookies').location != 'http://cookies.example.com/xss.php') {
// read location, extract hashtag, json decode using javscript, there you have your user. send it to server for validation or whatever.
}
этот метод называется XSS Reciving.например, он используется Facebook для всех своих библиотек подключения javascript.
возможно, лучшим способом было бы использовать протокол обмена токенами, такой как openid.
amazon также использует это.
Вы можете настроить провайдера openid (есть библиотеки, которые могут сделать это «из коробки») и настроить его на автоматическое перенаправление назад без вмешательства пользователя.Я часто видел протокол openid, используемый для некоторых других целей, таких как междоменная связь.