ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

crossdomain.xml
  #1  
Старый 24.02.2009, 14:29
Аватар для SleepShadowWeb
SleepShadowWeb
Новичок
Регистрация: 02.02.2006
Сообщений: 28
Провел на форуме:
351198

Репутация: 54
По умолчанию crossdomain.xml

Ниже написанный текст отношу больше к исследованию и доработке, нежели к уязвимости...
Собственно пару лет назад пришлось заниматься вот этим... Было нужно запустить сайт, который работал бы с bwin.com
Писать своё за небольшим знанием ActionScript было глупо и поэтому целью стало запустить "родной" сайт локально.

С первой проблемой, с которой пришлось столкнуться это вот этой:
http://wiki.flash-ripper.com/?title=Безопасность_во_Flash_Player
а именно файл:
crossdomain.xml


находится он в корне по адресу:
https://www.bwin.com/crossdomain.xml

содержимое этого файла:
Код:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy 
  SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <allow-access-from domain="adadmin.bwin.com" secure="false"/>
   <allow-access-from domain="*.itsfogo.com" secure="false"/>
   <allow-access-from domain="*.itsfogo.com" secure="true"/>
   <allow-access-from domain="videostream.bwin.com" secure="false"/>
</cross-domain-policy>
видно, что доступ к данным из flash могут получать только те флешки, которые расположены на bwin.com и itsfogo.com
пришлось заняться исправлением этого досадного недорозумения...

для начала небольшой кусочек кода из флешки для примера (подобных участков получения данных от разных скриптов в коде несколько):
Код:
comm.getEvents = function ()
{
    if (loadComplete)
    {
        if (getTimer() - comm.lastEventsResponse > comm.eventsTimeout)
        {
        } // end if

//var _loc1 = liveUrl + "V2GetLiveEventsWithMainbets.aspx?cts=" + comm.eventsLastModified + "&lang=" + LID + "&cs=75A940F7&r=" + Math.floor(Math.random() * 1000000);
//var tmp1 = "/V2GetLiveEventsWithMainbets.aspx?cts=" + comm.eventsLastModified + "&lang=" + LID + "&cs=75A940F7&r=" + Math.floor(Math.random() * 1000000);
		var tmp1 = "/V2GetLiveEventsWithMainbets.aspx$cts=" + comm.eventsLastModified + "!lang=" + LID + "!cs=75A940F7!r=" + Math.floor(Math.random() * 1000000);
		var _loc1 = "http://buk.ru/get.php?hostname=live.bwin.com&path="+tmp1;
//trace(tmp1);
//trace(_loc1);
//		var _loc1 = "http://live.bwin.com/V2GetLiveEventsWithMainbets.aspx?cts=0&lang=17&cs=75A940F7&r=1000000";
        comm.xmlevents = new XML();
        comm.xmlevents.onLoad = comm.onGetEventsResponse;
        comm.xmlevents.load(_loc1);
    }
    else
    {
        gui.showEvent("txt_msg", 15, Stage.width / 2 + 84, 62, trans.loadFailed, "ATT");
    } // end else if
};

.....

comm.getEvents();
comm.getEventsTimer = setInterval(comm.getEvents, 30000);

языковые файлы называютя messages_[LanguageID].xml
для русского языка [LanguageID]=17
вот начало файла messages_17.xml
Код:
<MESSAGES LID="17" lang="russian"
sports = "Mixed,,,,Футбол,Теннис,Формула-1,Баскетбол,,Горные лыжи,Велоспорт,Американский футбол,Хоккей с шайбой,Гольф,..........,"
calendarOn = "Показать календарь событий L!VE"
calendarOff = "Скрыть календарь событий L!VE"
expandAllEvents = "Показать детальный обзор всех событий"
.....
содержимое файла get.php
PHP код:
<?php
$hostname 
$_GET['hostname'];     //     www.yandex.ru
$path $_GET['path'];            //     /search.php?word=sss

$path str_replace("$""?"$path);
$path str_replace("!""&"$path);

//print_r($_GET);
/*
http://buk.ru/get.php
?hostname=live.bwin.com
&path=/V2GetEventData.aspx?eid=954767&cts=0&lang=17&mbo=0&cs=75A900F4&r=812318
*/

//$hostname = "live.bwin.com";
//$path = "/V2GetEventData.aspx?eid=954767&cts=0&lang=17&mbo=0&cs=75A900F4&r=462793";

$fp fsockopen($hostname80$errno$errstr30);
if (!
$fp) {
    echo 
"$errstr ($errno)<br />\n";
} else {
    
$out "GET $path HTTP/1.0\r\n";
    
$out .= "Host: $hostname\r\n";
    
$out .= "Accept-Encoding: deflate\r\n";
    
$out .= "Connection: Close\r\n\r\n";

    
fwrite($fp$out);

    while (!
feof($fp))
    {
        
$line fgets($fp2048);
        if(
$line == "\r\n") break;
    }

    while (!
feof($fp)) {
        echo 
fgets($fp2048);
    }
    
fclose($fp);
}
?>
декомпелированный код в главном модуле составил 2738 строк..
первоначально показалось что всё просто и с заменой функций получения данных сайт заработает локально как и на родном сервере..
но как выяснилось всё оказалось совсем наоборот... пришлось приложить немало сил чтобы разобраться в коде и внести нужные изменения
добавлю что главный модуль сотоит из нескольких подмодулей, подгружаемых в процессе его загрузки
и поэтому часть кода, а именно ссылки, функции подгрузки моделей и логические условия пришлось заменить.
также некоторый код пришлось закомментировать, поскольку с ним сайт категорически отказывался загружаться,
но на функционал это никак не повлияло.

но это того стоило, результат был достигнут
...запустил сайт на локальном компьютере,
добавил изменения во флеш и теперь можно делать ставки прямо на сайте..


вот такой небольшой получился обзор...
 
Ответить с цитированием
Ответ





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


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




ANTICHAT.XYZ