Ddos атака. Инструкция по эксплуатации программы. В заключении представлены развернутые выводы по данной работе
Скачать 1.22 Mb.
|
К оч етк ов Пав ел 2015 Выпускная квалификационная раб ота МГТУ им. Н. Э. Баумана 2 РЕФЕРАТ Целью данной работы является создание конкурентоспособной системы автоматизированного тестирования WEB-приложения на наличие уязвимости типа межсайтовое исполнение сценария. Данная работа состоит из введения, технического задания, исследовательской, конструкторской и технологической частей, а также заключения и списка литературных источников. Во введении описывается актуальность и цель данной работы. Техническое задание устанавливает основное назначение разрабатываемого программного продукта, его технические характеристики, а также специальные требования. В исследовательской части проведена работа по изучению предметной области, приведена классификация уязвимости типа межсайтовое исполнение сценариев, собран список инъекций, необходимых для проверки WEB- приложения. Также, были рассмотрены существующие решения данной проблемы, выделены их основные достоинства и недостатки. В конструкторской части рассмотрены ключевые алгоритмы работы созданной системы автоматизированного тестирования, описаны способы решения основных проблем. В технологической части приведено обоснование выбора используемых при разработке технологий и результаты работы созданного программного обеспечения. Также, в технологическую часть включена инструкция по эксплуатации программы. В заключении представлены развернутые выводы по данной работе. 3 Оглавление РЕФЕРАТ…………………………………………………….…….………………2 ОГЛАВЛЕНИЕ……………………………………………….….………………...3 ВВЕДЕНИЕ……………………………………………………..………………….5 ТЕХНИЧЕСКОЕ ЗАДАНИЕ…………………………………..………………….7 1. ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ…………………………………………. 12 1.1. Анализ и классификация существующих типов XSS-уязвимостей ... 12 1.1.1. Принцип работы межсайтингого скриптинга (XSS) ..................... 12 1.1.2. Классификация XSS-уязвимостей ................................................... 13 1.1.3. Список существующих XSS-инъекций .......................................... 17 1.2. Анализ существующих решений ............................................................ 26 1.2.1. NetSparker........................................................................................... 26 1.2.2. Расширение для браузера XSS-Me .................................................. 27 1.2.3. Wapiti .................................................................................................. 28 1.2.4. Итог..................................................................................................... 28 2. КОНСТРУКТОРСКАЯ ЧАСТЬ………………………………. 29 2.1. Описание алгоритма работы программы ............................................... 29 2.2. Описание алгоритма работы основных задач ....................................... 30 2.2.1. Создание карты сайта. LinkFinder ................................................... 31 2.2.2. Реализация поиска форм. XssPreparer ............................................. 32 2.2.3. Реализация поиска отраженных xss-уязвимостей. ReflectedXssChecker .......................................................................................... 33 2.2.4. Поиск хранимых XSS-уязвимостей. StoredXssChecker ................ 35 2.3. Реализация многопоточности ................................................................. 35 2.4. Решение проблемы авторизации ............................................................ 36 2.5. Разработка графического пользовательского интерфейса .................. 38 2.6. Реализация вывода результатов работы программы ............................ 38 3. ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ……………………………………………... 40 4 3.1. Выбор и обоснование стека используемых технологий ...................... 40 3.1.1. Selenium WebDriver ........................................................................... 40 3.1.2. Графическая библиотека JavaFX ..................................................... 42 3.2. Инструкция по эксплуатации программы ............................................. 43 3.3. Результаты работы программы ............................................................... 47 3.4. Сравнение с аналогами ............................................................................ 49 ЗАКЛЮЧЕНИЕ…………………………………………………………………. 50 СПИСОК ЛИТЕРАТУРЫ…………………………………………………….… 51 ПРИЛОЖЕНИЕ…………………………………………...……………………...53 5 ВВЕДЕНИЕ На сегодняшний день информатизация является одним из приоритетных направлений развития всех экономических отраслей. Практически каждая организация, коммерческая или государственная, имеет свой интернет-сайт, вводит всевозможные онлайн-услуги. В электронном виде хранятся персональные данные клиентов и сотрудников, финансовая информация и данные о хозяйственной деятельности. В связи с этим задача обеспечения безопасности WEB-приложений становится важнее год от года. К сожалению, разработчики корпоративных информационных систем не всегда следуют требованиям безопасности — из-за отсутствия необходимого опыта или просто сосредоточиваясь на иных целях при разработке системы. На сегодняшний день, подавляющее большинство WEB-приложений содержат уязвимости, которые могут стать причиной финансового или репутационного ущерба. Наиболее распространенной уязвимостью, согласно журналу Positive Techhnologies, является межсайтовое выполнение сценариев (Cross Site Scripting), которое встречается в 78% приложений на 2013 год. [4] Особенно удивительной эта цифра смотрится относительно результата 2012 года – 63%. [9] Обеспечение надлежащего уровня безопасности приложения невозможно без проведения тестирования безопасности. Но, проведение такого тестирования вручную сопряжено с большим количеством затраченных ресурсов и требует более высокой квалификации разработчиков, а иногда, и специального отдела, отвечающего за безопасность. Кроме того, человеческий фактор в вопросах тестирования безопасности приложения может сыграть губительную для компании роль. Таким образом, для обеспечения надлежащего уровня безопасность рекомендуется использовать автоматическое тестирование. 6 Целью данной работы является создание собственной системы автоматизированного тестирования WEB-приложения на наличие XSS- уязвимостей, способной сочетать высокий уровень покрытия и обнаружения, а также простоту настройки и использования. Неотъемлемой частью создания новой системы является изучение существующих систем, позволяющих выполняющих аналогичные цели, выявление основных достоинства и недостатки этих систем. 7 ТЕХНИЧЕСКОЕ ЗАДАНИЕ 1. Введение 1.1. Наименование программы Наименование – «XSS-scanner». 1.2. Краткая характеристика области применения Программа «XSS-scanner» предназначена для автоматизированного тестирования WEB-проектов на наличие XSS-уязвимостей. Программа позволяет выявлять XSS-уязвимости двух типов: «отраженные» («reflected XSS» или «Type 1») и «хранимые» («stored XSS» или «Type 2»). 2. Основание для разработки 2.1. Основание для проведения разработки Разработка программного обеспечения проходит в рамках выполнения выпускной квалификационной работы в соответствии с: 1. учебным планом кафедры РК-6 («Системы автоматизированного проектирования») МГТУ им. Н.Э. Баумана; 2. методическими указаниями по дипломному проектированию кафедры РК-6. 8 3. Назначение разработки 3.1. Функциональное назначение Функциональным назначением программы является предоставление пользователю средств для автоматизированной проверки WEB-приложений на наличие XSS-уязвимостей. Программа предоставляет графический интерфейс для удобства взаимодействия с пользователем и множественные настройки режима работы программы. Также, предусмотрен графический вывод результатов работы программы. 3.2. Эксплуатационное назначение Программа должна эксплуатироваться разработчиками WEB- приложений, для контроля уровня безопасности проекта. Конечными пользователями должны являться тестировщики или разработчики WEB-приложения. 4. Требования к программе или программному изделию 4.1. Требования к составу выполняемых функций Программа должна обеспечивать возможность выполнения перечисленных ниже функций: 1. Составление списка всех внутренних URL Web-приложения. 2. Поиск XSS-уязвимостей по карте сайта. 3. Поиск XSS-уязвимостей по строго заданному URL. 4. Просмотр имеющегося Cheat Sheet. 5. Обеспечение параллельного поиска в нескольких открытых браузерах. 6. Отображение состояния тестирования. 7. Выбор степени глубины поиска (поверхностный, средний, глубокий). 9 8. Авторизация в WEB-приложении до начала тестирования и хранение сессии на протяжении всего тестирования 9. Вывод результатов работы программы в формате HTML. 4.2. Требования к временным характеристикам Требования к временным характеристикам программы не предъявляются. Однако, одной из непосредственных задач является минимизация количества http-запросов, трафика и времени работы программы. 4.3. Требования к организации входных данных. Входные данные программ передаются через пользовательский графический интерфейс с соответствующими ограничениями на некорректность ввода. Других специальных требований к организации входных данных не применяется. 4.4. Требования к организации выходных данных Выходные данные программы передаются через графический интерфейс. В качестве входных параметров принимается: URL – в текстовом формате, количество страниц для просмотра (режим одной страницы или режим поиска по всему сайту) вводится через radiobox в графическом интерфейсе программы, количество браузерных окон – целое неотрицательное число. путь к директории, куда будет сохранен отчет о работе программы, вводится через графический интерфейс программы. 10 Флаг о необходимости произвести авторизацию, вводится через checkbox в графическом интерфейсе. 4.5. Требования к информационным структурам и методам решения Требования к информационным структурам (файлов) на входе и выходе, а также к методам решения не предъявляются. 4.6. Требования к исходным кодам и языкам программирования Исходные коды программы должны быть реализованы на языке Java. В качестве интегрированной среды разработки программы должна быть использована среда Intellij Idea. 4.7. Требования к используемым технологиям Проверка выполнения «межсайтового скрипта» осуществляется непосредственно в браузере. Программа «XSS-scanner» взаимодействует с браузером с помощью программной библиотеки для управления браузерами Selenium WebDriver. 4.8. Требования к защите информации и программ Требования к защите информации и программ не предъявляются. 11 4.9. Специальные требования Программа должна обеспечивать взаимодействие с пользователем посредством графического пользовательского интерфейса. 12 1. ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ 1.1. Анализ и классификация существующих типов XSS- уязвимостей 1.1.1. Принцип работы межсайтингого скриптинга (XSS) XSS (англ. Cross Site Scripting — «межсайтовый скриптинг») — тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника. Является разновидностью атаки «внедрение кода». [2]. Специфика подобных атак заключается в том, что вредоносный код может использовать авторизацию пользователя в веб-системе для получения к ней расширенного доступа или для получения авторизационных данных пользователя. Вредоносный код может быть вставлен в страницу как через уязвимость в веб-сервере, так и через уязвимость на компьютере пользователя. XSS находится на третьем месте в рейтинге ключевых рисков Web- приложений согласно OWASP 2013. Долгое время программисты не уделяли им должного внимания, считая их неопасными. Однако это мнение ошибочно: на странице или в HTTP-Cookie могут быть весьма уязвимые данные (например, идентификатор сессии администратора или номера платёжных документов), а там, где нет защиты от CSRF (Межсайтовая подделка запроса), атакующий может выполнить любые действия, доступные пользователю. На популярном веб-ресурсе скрипт может организовать DDoS атаку. Приведем пример «из жизни» сценария внеднерия xss-уязвимости: На одном из форумов, незащищенных от xss-уязвимостей, пользователь опубликовал следующее сообщение: Смотрите, какой красивый котик 13 Это сообщение содержит скрипт, который выполняет закрытие браузерного окна. Таким образом, пользователи, переходившие на страницу форума, автоматически покидали ее. Форум нес большие убытки, пока разработчики не удалили сообщения и не увеличили уровень безопасности Web-приложения. 1.1.2. Классификация XSS-уязвимостей По вектору: Отражённые (Reflected) Атака, основанная на отражённой уязвимости, на сегодняшний день является самой распространенной XSS-атакой. Эти уязвимости появляются, когда данные, предоставленные веб-клиентом, чаще всего в параметрах HTTP-запроса или в форме HTML, исполняются непосредственно серверными скриптами для синтаксического анализа и отображения страницы результатов для этого клиента, без надлежащей обработки. Отражённая XSS-атака срабатывает, когда пользователь переходит по специально подготовленной ссылке. [2] Пример: http://example.com/search.php?q= Если сайт не экранирует угловые скобки, преобразуя их в «<» и «>», получим скрипт на странице результатов поиска. Отражённые атаки, как правило, рассылаются по электронной почте, отправляются личным сообщением через разнообразные социальные сети или размещаются на Web-странице. URL приманки не вызывает подозрения, указывая на надёжный сайт, но содержит вектор XSS. Если доверенный сайт уязвим к вектору XSS, то переход по ссылке 14 может привести к тому, что браузер жертвы начнет выполнять встроенный скрипт. Хранимые (Stored) Хранимый XSS является наиболее разрушительным типом атаки. Хранимый XSS возможен, когда злоумышленнику удается внедрить на сервер вредоносный код, выполняющийся в браузере каждый раз при обращении к оригинальной странице. Классическим примером этой уязвимости являются форумы, на которых разрешено оставлять комментарии в HTML формате без ограничений, а также другие сайты Веб 2.0 (блоги, вики, имиджборд), когда на сервере хранятся пользовательские тексты и рисунки. Скрипты вставляются в эти тексты и рисунки. [2] Фрагмент кода похищения ключа с идентификатором сессии (session ID): По каналам внедрения скрипта: Ошибки в браузере. Из-за ошибок браузер может выполнят нарушать правило Same Domain Policy. Это серьёзные ошибки; после обнаружения их быстро закрывают, однако в переходный период опасными становятся практически все сайты: форумы, вики, имиджборды. Если такая ошибка 15 обнаружилась, рекомендуется, пока не вышло обновление, пользоваться другим браузером. Бывают и более тонкие ошибки, которые проявляются при очень специфичных условиях и крупного урона не наносят. Такие ошибки могут не исправляться годами и выгоднее исправить сайт, чем ждать обновления браузера. Отсутствие экранирования спецсимволов Намного чаще встречаются ошибки на сайтах. Чтобы браузер гарантированно не принял строку за тег HTML, требуется заэкранировать пять символов: 1) ' 2) " 3) & 4) < 5) > Сервер может экранировать не все символы (известный недостаток PHP), либо веб-программист просто забывает заэкранировать строку. Обычно в базах данных текст хранится неэкранированным, и экранировать требуется все пользовательские строки каждый раз, когда они встраиваются в HTML: например, если не заэкранирован URL картинки, пользователь может ввести такой текст http://example.com/img.png" onmouseover="javascript:DoSomething(); Когда клиент запросит у сервера страницу с этой картинкой, сервер, в ответ, вернет клиенту HTML-код страницы, содержищий уязвимость: http://example.com/img.png" onmouseover="javascript:DoSomething()”> Таким образом, при каждом движении мыши будет вызываться функция DoSomething. Многие сайты позволяют форматирование текста с помощью какого-либо языка разметки (HTML, вики-разметка). Часто не проводится 16 полный лексический анализ языка разметки, а лишь преобразование в «безопасный» HTML с помощью регулярных выражений. Это упрощает программирование, однако требует досконального понимания, какими путями скрипт может проникнуть в результирующий HTML-код. Отсутствие фильтрации атрибутов и их значений в разрешенных тегах Типичным примером будет ссылка Даже если форум позволяет внешние ссылки, не стоит пускать протоколы javascript: и data: Подмена кодировки в заголовки страницы Современные браузеры пытаются определить кодировку страницы на ходу и интерпретируют html в соответствии с этой кодировкой. В случае, если тег Если разработчики забывают закрыть тег SRC="javascript:alert('XSS');"> Вставка изображения в тег . Немногие знают о такой возможности. Вставка изображения в тело HTML страницы Использование атрибута динамического содержимого DYNSRC Использование атрибута LOWSRC изображения низкого качества,
22 HREF="javascript:alert('XSS');"> Подмена таблицы стилей на javascript HREF="http://ha.ckers.org/xss.css"> Запись JS-скрипта в css-файл. Работает в NetScape и IE |