Информационная безопасность становится все более важной, особенно в текущем периоде. Поиск уязвимостей и их устранение — важная задача для программистов и веб-мастеров. В этой статье мы предлагаем некоторые алгоритмы, которые поддерживают сканирование уязвимостей, таких как XSS, CSRF, SQL инъекция, использование для создания автоматизированных программ сканирования, снижая риск небезопасных с веб-сайтов.
Ключевые слова: сканер веб-сайта, веб-приложение, анализ уязвимости веб-сайтов, CSS.
Information security is becoming more and more important, especially in the current period. Finding vulnerabilities and fixing them is an important task for programmers and webmasters. In this article, we propose some algorithms that support scan vulnerabilities such as XSS, CSRF, SQL Injection, used for building automated scanning programs, reducing the risks and unsafety for the website.
Keywords: Website Scanner, Web based application, Website Vulnerability Analysis, CSS.
Введение
Безопасность — важная часть ваших веб-приложений. Веб-приложения по определению позволяют пользователям получать доступ к центральному ресурсу — веб-серверу — и через него — к другим, таким как серверы баз данных. Понимая и применяя надлежащие меры безопасности, вы охраняете свои собственные ресурсы, а также предоставляете безопасную среду, в которой ваши пользователи удобны в работе с вашим приложением [1, 2, 9].
Безопасность веб-приложений — это подразделение «Информационная безопасность», которое специально занимается безопасностью веб-сайтов, веб-приложений и веб-сервисов [7, 9].
Веб-безопасность блокирует веб-угрозы для снижения вредоносных программ, снижает количество инцидентов в справочных службах и освобождает ценные ИТ-ресурсы. Он имеет более 100 категорий безопасности и фильтрации, сотни веб-приложений и протокольные средства управления, а также отчеты с 60 плюс с настройкой и доступом на основе ролей.
Определение проблемы иподход
Уязвимость — это недостаток или слабость приложения, которое может быть недостатком дизайна или ошибкой реализации, что позволяет злоумышленнику наносить вред заинтересованным сторонам приложения [13]. Заинтересованные стороны включают владельца приложения, пользователей приложений и другие объекты [3, 4].
Эта технологическая структура была выбрана из-за ее популярности и широкого использования. Каждый сканер уязвимостей веб-приложений протестирован против веб-приложения по предписанному подходу, который включает в себя набор процедур инициализации, выполнения, классификации и анализа. Используя безопасную и небезопасную версию настраиваемого веб-приложения, ложноположительные и ложноотрицательные результаты могут быть связаны с методами, используемыми сканерами для обнаружения уязвимостей. Эта связь между используемыми методами и ложноположительными или ложными негативами может быть использована, чтобы предложить улучшения для методов сканирования веб-приложений [7, 9, 11].
Шаг 1. Введите URL-адрес.
Шаг 2. Выберите тип уязвимости, которую вы хотите отсканировать.
Шаг 3. Запустите сканирование.
Шаг 4: Проверьте данные условия в соответствии с выбранным сканированием уязвимостей.
Шаг 5: После наблюдения за условиями выбранной уязвимости подготовьте отчет.
На основе общего алгоритма мы привели конкретные алгоритмы для обнаружения определенных уязвимостей, таких как SQL Инъекция, XSS, CSRF, Clickjacking...
Алгоритм для инъекций SQL (Рис. 1)
1. Инициализировать SQL-символы в массиве
Рис. 1. Блок-схема алгоритма инъекций SQL
2. Создайте два списка для хранения сообщений об ошибках SQL.
(i) Один для хранения сообщений об ошибках конкретной базы данных, таких как сообщения об ошибках SQL и т. д.
(ii) Другое для хранения общих сообщений об ошибках базы данных
3. Инициализировать значения ошибок в картах/списке, указанных выше.
4. Инициализировать метод сканера — сканер принимает сообщение http в качестве ввода от искателя. HTTP-сообщение содержит сведения о каждом запросе или URL-адресе с списком параметров.
5. Для каждого параметра в сообщении HTTP
(i) Введите SQL-символы из массива SQL-символов
(ii) Проверьте ответ, чтобы проверить соответствует сообщениям об ошибках из две карты или списки.
(iii) Если происходит совпадение -Flag as SQL-уязвимость
(iv) Else — Повторите шаг до тех пор, пока не будет достигнут конец списка параметров
6. Конец
Алгоритм для XSS (Рис. 2)
Рис. 2. Блок-схема алгоритма XSS
1. Начало
2. Для каждого URL-адреса в списке посещаемых URL-адресов
(i). Определить все параметры
(ii). Ввод параметров в список параметров
(iii). Для каждого параметра в очереди параметров
(iv). Поставьте сценарий или тестовый пример XSS в качестве входного параметра и передайте запрос
(v). Проверьте ответ, чтобы определить предоставленный сценарий или тестовый случай, отраженный назад
3. Сообщите об этой уязвимости, если в ответе есть скрипт
4. Конец
Создание программы
Чтобы создать сканер уязвимостей веб-сайта, мы использовали Python 3 (интегрированный с пакетом Anaconda), среда программирования — Pycharm; веб-сервер Apache, SQL-сервер MySQL (все компоненты включены в установочный пакет XAMPP).
Интерактивная модель (Рис. 3)
Рис. 3. Схема процесса проверки
‒ Пользователь: используйте клиентскую программу (написанную на Python), чтобы проверить наличие уязвимостей на веб-сайте, связав сайт с тестовым сайтом.
‒ Клиентская программа подключается к серверу, загружает соответствующую веб-страницу, анализирует, чтобы получить все связанные ссылки; Затем выполните соответствующую атаку на веб-сайте и получите результат. Анализирует, содержит ли веб-сайт дефект и уведомляет пользователя.
‒ Серверная программа: получать соединение с клиентом, отвечать соответствующим требованиям. С соответствующими настройками для тестирования на сервере, который содержит любой веб-сайт, который может содержать недостатки или нет.
Операционная модель программы (Рис. 4)
Согласно анализу интерактивной модели, мы моделируем производительность программы на основе этих взаимодействий.
Рис. 4. Модель взаимодействия программы
Механизм сканирования выполняет соединение с сервером через ссылку, предоставленную пользователем через параметр, анализируя входные параметры, чтобы найти соответствующий механизм сканирования (или атакующего). Если параметры не используются, все сканируемые компоненты будут выполнены.
На стороне сервера используемое веб-приложение (которое подробно описано ниже) содержит некоторые уязвимости в сети, которые могут быть уязвимыми в базе данных или связанными с ними уязвимостями. для проверки входных данных и т. д. Если сканер может найти и выдавать предупреждение, программист должен проверить безопасность для этого сайта.
Архитектура программы (Рис. 5)
Программа встроена в разные модули, выполняя конкретные задачи.
‒ Нижняя часть — это модули языка программирования Python с соответствующими библиотеками;
‒ Модуль Core содержит более мелкие модули, которые выполняют разные задачи: модуль собирает ссылки на веб-сайт, преобразует их в разные форматы в соответствии с обычной структурой веб-сайта, такими как: форма, текст, ссылки, текстовое поле,... модули также предоставляют инструменты для ведения журнала, параметры анализа и некоторые другие вспомогательные функции;
‒ Модуль содержит атаки для выполнения проверок на сайте, включая XSS, CSRF, Breach, Clickjack.
Рис. 5. Архитектура программы уязвимости веб-сайта
Построение тестовых компонентов
В модуле Attacks мы приступили к созданию некоторых компонентов атаки для проверки уязвимостей для веб-сайта:
‒ уязвимость XSS: тестирование уязвимости XSS;
‒ Уязвимость CSRF: проверка уязвимости CSRF;
‒ Уязвимость Clickjacking: уязвимость Clickjacking;
‒ Уязвимость сканирования файлов cookie: проверка уязвимости Проверка файлов cookie;
‒ CRLF-уязвимость: проверка уязвимости CRLF.
Результаты иобсуждения
Мы использовали Веб-сайт «Примеры Вею-уязвимостей», который содержит несколько уязвимостей для тестирования. Это приложение написанное на python, работает на порту 8666 и содержит ряд уязвимостей для использования:
‒ Проверка авторизации на стороне клиента;
‒ Расширение длины MAC;
‒ Подделка запросов на межсайтовые запросы;
‒ Отраженный межсайтовый скриптинг;
‒ Сохраненные межсайтовые скрипты;
‒ SQL Injection;
‒ Обход траектории.
Рис. 6. Интерфейс веб-сайта уязвимостей
Сканировать все уязвимости
Команда: python webscan.py http://localhost:8666/
Результаты сканирования
It might be XSS vulnerability: http://localhost:8666/reflected_xss/?username= %3Cscript %3Ealert %28 %22XSS_STRING %22 %29 %3B %3C %2Fscript %3E XSS with parameter “username” It might be vulnerability CSRF: http://localhost:8666/csrf/send Lo hong CSRF Summary report Warning: http://localhost:8666/stored_xss/send HTML Error Encountered , expected |