Информационная безопасность становится все более важной, особенно в текущем периоде. Поиск уязвимостей и их устранение — важная задача для программистов и веб-мастеров. В этой статье мы предлагаем некоторые алгоритмы, которые поддерживают сканирование уязвимостей, таких как 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 Warning: http://localhost:8666/stored_xss/ HTML Error Unclosed tag |
Сканирование уязвимостей XSS
Команда: python webscan --xss 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” Summary report Warning: http://localhost:8666/stored_xss/send HTML Error Encountered , expected Warning: http://localhost:8666/stored_xss/ HTML Error Unclosed tag (and 4 similar) |
Обнаруживает уязвимость CSRF
Команда: python webscan --csrf http://localhost:8666 /
It might be CSRF vulnerability: http://localhost:8666/csrf/send -- CSRF vulnerability Summary report Warning: http://localhost:8666/stored_xss/ HTML Error Unclosed tag (and 3 similar) |
Обнаружение уязвимости Clickjacking
Команда: python webscan --clickjack http://localhost:8666/
Summary report: Warning: http://localhost:8666/stored_xss/ HTML Error Unclosed tag Warning: http://localhost:8666/stored_xss/?username=Benutzer %21 HTML Error Unclosed tag |
Результаты работы программы
Программа обнаружила уязвимости, такие как XSS, CSRF, Clickjacking. Это основные ошибки, но сайты обычно содержат много статистики OWASP.
Наш сканер уязвимостей веб-сайта может найти основной недостаток, и эти уязвимости действительно существуют на тестовом сайте. Одним из сайтов для изучения уязвимостей и для пен-тестирования является DVWA (Damn Vulnerable Web Application). И результаты довольно хорошие.
Тем не менее, существует ограничение на то, что при выполнении тестов для уязвимостей SQL Injection точность не очень высока, так как многие веб-сайты требуют проверки подлинности пользователя для проверки, поэтому программа не всегда работает хорошо. В следующий раз мы сосредоточимся на улучшении этого.
Будущая работа
В будущем мы сосредоточимся на разработке интерфейсного сканера для удобства пользователей. И одним из решений является использование веб-интерфейса для сборки. В то же время мы также улучшим, добавив алгоритмы, чтобы программа обнаруживала больше уязвимостей.
Вывод
В этом исследовании мы предложили метод разработки сканера уязвимостей веб-сайта. Благодаря автоматическому сканированию программа сэкономит время и деньги на обслуживание систем веб-сайта. Исходя из этого, администраторы будут своевременно устранять уязвимости, снижать риск безопасности и защиты информации, тем самым уменьшая стоимость ущерба при наступлении атаки.
Литература:
- Elizabeth, F. Building a Test Suite for Web Application Scanners. Elizabeth F., Romain, G., Vadim, O., Paul, B.
- Emre, E. Web Vulnerability Scanners: A Case Study. Emre, E., Angel, R. 2017.
- Fonseca, J., Vieira, M., & Madeira, H. (2014). Evaluation of Web Security Mechanisms using Vulnerability & Attack Injection. Dependable and Secure Computing, IEEE Transactions on, 11(5), 440–453.
- Kinnaird, Mc. Open Source Web Vulnerability Scanners: The Cost Effective Choice? 2014 Proceedings of the Conference for Information Systems Applied Research Baltimore, Maryland USA. ISSN: 2167–1508.
- M. Parvez, P. Zavarsky and N. Khoury»,Analysis of effectiveness of black-box web application scanners in detection of stored SQL injection and stored XSS vulnerabilities», 2015 10th International Conference for Internet Technology and Secured Transactions (ICITST), London, 2015, pp. 186–191. doi: 10.1109/ICITST.2015.7412085
- M. Parvez, P. Zavarsky and N. Khoury, «Analysis of effectiveness of black-box web application scanners in detection of stored SQL injection and stored XSS vulnerabilities», 2015 10th International Conference for Internet Technology and Secured Transactions (ICITST), London, 2015, pp. 186–191. doi: 10.1109/ICITST.2015.7412085
- Pallavi Deshmane. Web Vulnerability Scanner Application. Pallavi Deshmane, Shweta Singh, Nakshi Doshi, Harshit Punatar, Shashank Gangar. Imperical Journal of Interdisciplinary Research, Vol 3, Issue-2, 2017. ISSN: 2454–1362.
- Rik A. J. Web Application Vulnerability Testing with Nessus. The OWASP Foundation.
- Stefan, K. SecuBat: A Web Vulnerability Scanner. Stefan, K., Engin, K., Christopher, K. Nenad, J.
- The government of the Hong Kong Special Administrative Region. An Overview of Vulnerability Scanners. 2/2018.
- Vieira, “Using Web Security Scanners to Detect Vulnerabilities in Web Services”; IEEE/IFIP Intl Conf. on Dependable Systems and Networks, DSN 2009, Lisbon, Portugal, June 2009; http://eden.dei.uc.pt/~mvieira
- Zanero, S. Automatic Detection of Web Application Security Flaws. 2005.
- https://en.wikipedia.org/wiki/Vulnerability_(computing)
- Дмитрий Евтеев. SQL Injection от А до Я
- Козлов Д. Д. Методы обнаружения уязвимостей в web- приложениях. Козлов Д. Д., Петухов А. А.