Мы начинаем цикл статей посвященный вопросам защиты информации в интернете. Сегодня мы расскажем вам об основных видах уязвимостей интернет сайтов. Разумеется это далеко не все, но мы остановимся на наиболее распространенных на данный момент пробоинах в безопасности:
- Cross Site Scripting
- SQL- injection
- PHP- injection
- HTTP Response Splitting
- HTML code injection
- File Inclusion
- Directory traversal и некоторые другие.
Перечисленные типы уязвимостей могут встречаться во всех веб-приложениях, независимо от того, разработаны они одним специалистом или известной компанией. Только системное проектирование, продумывание вопросов безопасности на всех этапах разработки и детальное тестирование готового приложения могут позволить исключить появления уязвимостей.
Межсайтовый скриптинг (XSS)
Межсайтовый скриптинг (Cross Site Scripting или XSS) - это возможность вставки ("инъекции") HTML-кода в уязвимую страницу. Инъекция кода осуществляется через все доступные способы ввода информации. Любое веб-приложение, которое выводит какую-либо информацию, полученную от пользователя, может быть подвержено атакам этого класса. Возможность успешного проведения такой атаки возникает в результате отсутствия фильтрации значений переменных, полученных от пользователя, на наличие скриптов (JavaScript, VBScript) или опасных HTML-тегов. Данный вид атаки может использоваться злоумышленником для перехвата значений cookie различных пользователей (в том числе и администраторов), пользовательских сессий, а так же в некоторых случаях позволяет обойти механизм аутентификации или если поддерживается SSI (Server Side Include), то выполнить произвольную команду на стороне сервера.
Дополнительная информация:
http://www.bugtraq.ru/library/www/xssanatomy.html
http://www.hacker.3dn.ru/publ/1-1-0-45
HTTP Response Splitting
Ошибки HTTP Response Splitting свойственны большинству веб-приложений и являются следствием невозможности правильно обработать пользовательский ввод. Удаленный атакующий может послать специальный HTTP-запрос, который заставит веб-сервер сформировать определенный выходной поток, который примется жертвой за целых два HTTP-ответа (вместо правильного одного). В данном случае только первый HTTP-ответ, который является поддельным, будет обрабатываться жертвой. HTTP Response Splitting позволяет проводить целый ряд атак, таких как отравление веб кэша, подмену страниц, "cross-user defacement", кража пользовательской информации и межсайтовый скриптинг.
Дополнительная информация:
http://www.cyberinfo.ru/3/1069_1.htm
SQL-инъекция
"SQL-инъекция" - способ нападения на базу данных в обход межсетевой защиты. В этом методе, параметры, передаваемые к базе данных через веб-приложения, изменяются таким образом, чтобы изменить выполняемый SQL-запрос. Например, добавляя различные символы к параметру, можно выполнить дополнительный запрос совместно с первым.
Нападение может использоваться для следующих целей:
1. Получить доступ к данным, которые обычно недоступны, или получить данные конфигурации системы, которые могут использоваться для дальнейших нападений. Например, измененный запрос может возвратить хешированные пароли пользователей, которые впоследствии могут быть расшифрованы методом перебора.
2. Получить доступ к компьютерам организации через компьютер, на котором находится база данных. Это можно реализовать, используя процедуры базы данных и расширения 3GL языка, которые позволяют, например, запускать различные приложения.
Дополнительная информация:
http://www.securitylab.ru/31623.html
http://www.securitylab.ru/42826.html
http://www.securitylab.ru/43048.html
http://www.securitylab.ru/44526.html
http://www.securitylab.ru/40318.html
http://www.securitylab.ru/40714.html
http://www.securitylab.ru/35554.html
http://www.securitylab.ru/38037.html
Code injection
Если веб-приложение неправильно обрабатывает динамически подключаемые файлы или пути к файлам, то появляется возможность выполнить произвольный код (PHP, ASP и другие) на стороне сервера или получить содержимое произвольного файла. Успешно проведенная атака, позволяет злоумышленнику обойти механизм аутентификации, выполнять команды на сервере, читать содержимое файлов, записывать произвольные данные в файл и т.д.