Опубликован список из 25 самых опасных уязвимостей ПО / Positive Technologies corporate blog / Habr
Изображение: Unsplash
Американская организация MITRE опубликовала список из 25 самых опасных уязвимостей программного обеспечения. Исследователи составили таблицу наиболее опасных и распространенных проблем безопасности, с указанием идентификаторов CWE (Common Weakness Enumeration).
В топ-25 попало большое количество уязвимостей, которые позволяют злоумышленникам полностью захватить контроль над компьютерными программами, выводить их из строя и похищать обрабатываемые в них данные. Список позволяет специалистам по информационной безопасности лучше понимать ландшафт угроз безопасности, но будет полезен также разработчикам ПО, тестировщикам и пользователям программных продуктов.
Методология исследования
Для составления списка специалисты MITRE использовали информацию об опубликованных уязвимостях (CVE, Common Vulnerabilities and Exposures), информацию о них из базы данных NVD (National Vulnerability Database), а также рейтинги опасности уязвимости CVSS (Common Vulnerability Scoring System). Был разработан уникальный алгоритм оценки распространенности и опасности уязвимостей.
Топ-3 опасных уязвимостей
Согласно отчету, наиболее опасной оказалась уязвимость под названием «Неверное ограничение операций внутри границ буфера памяти» (Improper Restriction of Operations within the Bounds of a Memory Buffer). Ошибка возникает, когда софт работает внутри выделенного буфера памяти, но при этом получает возможность читать или записывать данные и вне границ этого буфера. Эксплуатация этой уязвимости позволяет атакующим исполнять произвольный код, похищать критически важные данные и полностью выводить программные комплексы из строя.
На втором месте по опасности оказалась уязвимость с кодом CWE-79 — «Неверная нейтрализация ввода во время генерации веб-страницы» (Improper Neutralization of Input During Web Page Generation). Межсайтовое выполнение сценариев (XSS) — более привычное ее название. Уязвимости такого типа встречаются часто и могут приводить к серьезным последствиям из-за недостаточного контроля данных, которые пользователи вводят на страницах сайта.
На третьем месте уязвимость «Неверная валидация ввода» (CWE-20). Атакующий может составить специальный вредоносный запрос и система отреагирует на него, предоставив повышенные привилегии или доступ к критически важным данным.
Ниже полная таблица самых опасных уязвимостей по версии MITRE.
Другие актуальные киберугрозы
Рейтинг MITRE — не единственный источник информации об актуальных киберугрозах. Positive Technologies публиковала отчет об атаках на веб-приложения по итогам 2018 года. В тройку наиболее распространенных атак на веб-сайты вошли «Внедрение SQL-кода» (SQL Injection), «Выход за пределы каталога» (Path Traversal) и «Межсайтовое выполнение сценариев» (Cross-Site Scripting, XSS). Кроме того, эксперты Positive Technologies раз в квартал публикуют аналитические отчеты об актуальных киберугрозах. Так, во втором квартале 2019 года киберпреступники активно эксплуатировали уязвимость в почтовом сервере Exim (CVE-2019-10149). Ошибка используется по-разному: одни злоумышленники загружают с ее помощью софт для майнинга криптовалют, другие внедряют бэкдоры на почтовые серверы.
habr.com
Типы уязвимостей сайтов | Losst
Сайты в интернете, как и другое программное обеспечение, подвержены различным уязвимостям, что позволяет злоумышленникам получать доступ к секретным и важным данным или выполнять другие незаконные действия. Некоторые уязвимости очень опасны и встречаются чаще, чем хотелось бы, другие же менее опасны и встречаются редко. Важно знать какие уязвимости бывают, проверять свой ресурс на их присутствие и вовремя их исправлять.
В этой статье мы рассмотрим самые опасные типы уязвимостей сайтов и веб-приложений по версии проекта ТОП 10 OWASP в 2017 году. Все уязвимости отсортированы по важности. Самые частые и самые опасные — вверху, менее опасные — ниже. Но если они уже попали в этот список, значит на них стоит обратить внимание.
Содержание статьи:
Типы уязвимостей сайтов
А теперь давайте перейдем к нашему списку.
1. Инъекции/Injection
Под инъекциями подразумеваются уязвимости, которые возникают в результате передачи не проверенных, введенных пользователем данных интерпретатору для выполнения. Таким образом, любой пользователь может выполнить произвольный код в интерпретаторе. Самые распространенные типы инъекций — SQL, OS, XXE и LDAP.
Если три последние вам ни о чем не говорят, то про SQL инъекции вы однозначно слышали. С помощью них злоумышленник может получить доступ к базе данных, прочитать из нее секретные данные или даже записать свои значения. Инъекции возникают, когда данные, передаваемые интерпретатору не проверяются на наличие управляющих последовательностей и команд, таких, как кавычки в SQL.
2. Проблемы аутентификации и проверки сессий
Многим приложениям необходимо идентифицировать пользователей для работы с ними. Часто функции для проверки подлинности и управления сессиями реализуются неверно, что позволяет злоумышленникам получать доступ к учетным записям пользователей в обход паролей. Злоумышленники могут каким-либо образом перехватить ключи или токены сеанса, которые выступают в качестве идентификаторов пользователей и использовать их временно или постоянно.
3. XSS
Первые две уязвимости представляли больше опасности для сайта и его сервера. XSS не так опасна для сервера, но опасна для пользователя. Она работает в браузере пользователя, и поэтому позволяет только украсть его данные. XSS или Cross-Site Scripting работает в JavaScript. Принцип тот же, что и в инъекциях. Злоумышленник передает специальную строку в каком-либо поле, в строке содержится JS код, далее браузер думает, что этот код отправлен сайтом и выполняет его, а код может быть любым. Для противодействия таким атакам нужно экранировать все специальные символы с помощью функции htmlspecialchars или аналогов.
4. Проблемы контроля доступа
Нередко по недосмотру администраторов обычным пользователям становятся доступны данные, которые должны быть закрыты. Этой проблеме подвержены даже популярные движки. Ярким тому примером можно привести файлы в корне сайта. Например, файл wp-config.php с паролями доступа к базе данных недоступен, потому что имеет расширение php. Но если вы редактируете его в Vim и сохраняете неверно, то создается резервная копия с расширением .swp и ее то уже можно открыть в браузере без препятствий.
Также под проблемой контроля доступа можно понимать ошибки в коде вашего приложения, которые открывают доступ к секретным данным для не авторизованных пользователей.
5. Неверная конфигурация
Для хорошей безопасности приложению требуется безопасная конфигурация не только спланированная и разработанная на уровне приложения и фреймворка, но и правильно настроенные сервера. Настройки безопасности должны разрабатываться, реализовываться и постоянно поддерживаться. Конфигурация многих сервисов по умолчанию не безопасна. Кроме того, программное обеспечение должно быть всегда в актуальном состоянии.
6. Незащищенные конфиденциальные данные
Многие веб-приложения, сайты и API не защищают конфиденциальные данные пользователя и передают их в открытом виде. К таким данным могут относиться не только пароли, токены и ключи, но и медицинская, финансовая информация. Злоумышленники могут похитить или даже модифицировать важные данные с помощью атаки «Человек посередине». Конфиденциальные данные должны быть защищены, например, с помощью шифрования https или других методов.
7. Недостаточная защита от атак
Большинство приложений и API не имеют базовых возможностей по обнаружению, предотвращению и реагированию как на ручные, так и на автоматические атаки. Защита от атак — это нечто большее, чем базовая проверка соответствия логина и пароля. Она также должна включать обнаружение, протоколирование и даже блокирование попыток неверного входа и других несанкционированных действий. Авторы приложений также должны иметь возможность быстро развертывать исправления для защиты от новых атак.
8. Уязвимости CSRF
Атака CSRF или Cross-Site Request Forgery позволяет злоумышленнику заставить браузер жертвы отправить определенный HTTP запрос, включая куки, файлы сеанса и любую другую, автоматически включаемую информацию в уязвимое веб-приложение.
Таким образом, злоумышленник получает возможность генерировать запросы из браузера жертвы, которые приложение считает правильными и отправленными самой жертвой. Например, вы просто открываете ссылку, а сайт уже отправляет вашим друзьям сообщение с рекламным содержанием без вашего ведома или удаляет ваш аккаунт.
9. Использование компонентов с уязвимостями
Компоненты, такие как библиотеки, фреймворки и другие программные модули работают с теми же полномочиями, что и приложение. Если в одном из компонентов есть уязвимость, то в результате атаки на нее злоумышленник может украсть важные данные или даже получить управление над сервером. Приложения и API, использующие компоненты с известными уязвимостями могут подорвать защиту приложений и сделать возможными различные атаки. Там могут быть разные типы уязвимостей сайтов, и они могут открыть доступ к разным данным.
10. Незащищенные API
Большинство современных приложений часто включают в себя клиентские приложение и богатые API интерфейсы, доступные через JavaScript в браузере или из мобильных приложений. Они могут работать по протоколам SOAP/XML, REST/JSON, RPC, GWT и так далее. Эти API очень часто не защищены и тоже содержат множество ошибок, которые приводят к уязвимостям.
Выводы
В этой статье мы рассмотрели виды уязвимостей сайта, которые встречаются чаще всего по версии ресурса owasp. Как видите, среди чисто программных проблем, таких, как SQL инъекции, XSS или СSRF есть и проблемы в настройке серверов, которые тоже часто причиняют проблемы. Во всяком случае, теперь вы знаете какие уязвимости веб-сайтов бывают, и можете сделать ваш ресурс более безопасным.
Оцените статью:
Загрузка…losst.ru
сравниваем восемь популярных сканеров / T.Hunter corporate blog / Habr
Сканеры веб-приложений — довольно популярная сегодня категория софта. Есть платные сканеры, есть бесплатные. У каждого из них свой набор параметров и уязвимостей, возможных для обнаружения. Некоторые ограничиваются только теми, что публикуются в OWASP Top Ten (Open Web Application Security Project), некоторые идут в своем black-box тестировании гораздо дальше.В этом посте мы собрали восемь популярных сканеров, рассмотрели их подробнее и попробовали в деле. В качестве тренировочных мишеней выбрали независимые точки на двух платформах (.NET и php): premium.pgabank.com и php.testsparker.com.
OWASP ZAP
Как можно догадаться по названию, за выпуск OWASP ZAP отвечает та самая организация OWASP, что мы упомянули во вступлении. Это бесплатный инструмент для тестирования на проникновение и для поиска уязвимостей в веб-приложениях. Основные возможности OWASP ZAP:
- Man-in-the-middle Proxy
- Traditional and AJAX spiders
- Automated scanner
- Passive scanner
- Forced browsing
- Fuzzer
Дополнительные фичи
- Dynamic SSL certificates
- Smartcard and Client Digital Certificates support
- Web sockets support
- Support for a wide range of scripting languages
- Plug-n-Hack support
- Authentication and session support
- Powerful REST based API
- Automatic updating option
- Integrated and growing marketplace of add-ons
Интерфейс программы переведен на русский, что будет удобно для некоторых пользователей. Рабочая область OWASP ZAP складывается из нескольких окон. Внизу — вкладки с текущими заданиями и процесс их выполнения, слева — дерево сайтов, дополнительно можно вывести в правую часть окна запросов и ответов.
С помощью маркетплейса можно немного расширить функциональность сканера.
У каждого компонента программы есть много настраиваемых параметров. Например, мы можем настроить входящие векторы для активного сканирования, сгенерировать динамические SSL-сертификаты, добавить идентификаторы HTTP-сессий и т.д.
Перейдем к тестам. При сканировании сайта php.testsparker.com была найдена Blind SQL Injection. На этом критичные уязвимости заканчиваются.
Полные результаты OWASP ZAP на php.testsparker.comH: Advanced SQL Injection — AND boolean-based blind — WHERE or HAVING clause
M: X-Frame-Options Header Not Set
L: X-Content-Type-Options Header Missing
L: Web browser xss protection is not enabled
На premium.bgabank.com мы видим более интересные результаты: найдена возможность Server Side Include (SSI) и Reflected Cross Site Scripting.Полные результаты OWASP ZAP на premium.bgabank.com
H: Server Side Include
H: Reflected Cross Site Scripting
M: X-Frame-Options Header Not Set
M: Application Error Disclosure
M: Directory Browsing
M: Secure Pages Include Mixed Content (Including Scripts)
L: X-Content-Type-Options Header Missing
L: Web browser xss protection is not enabled
L: Cross-Domain JavaScript Source File Inclusion
L: Incomplete or No Cache-control and Pragma HTTP Header Set
L: Cookie No HttpOnly Flag
L: Cookie Without Secure Flag
L: Content-Type Header Missing
L: Private IP Disclosure
I: Image Exposes Location or Privacy Data
Все результаты сканирования можно экспортировать в отчет (поддерживается *.pdf, *.html, *.xml, *.json). В отчете подробно описываются уязвимости, найденные векторы, а также методы «закрытия» уязвимостей.
В целом работать с OWASP ZAP нам понравилось. Есть все необходимые инструменты для пентеста веб-приложения, простой и понятный интерфейс, быстрое сканирование в один клик. И при этом гибкие, глубокие настройки для более детального сканирования, что может послужить отправной точкой для дальнейшего ручного поиска уязвимостей. Ниже мы еще расскажем о сканере Burp Suite Pro, который имеет с OWASP ZAP много общего. По количеству и качеству найденных уязвимостей первый рассмотренный нами сканер показал очень неплохой результат. Рекомендован к использованию в работе.
W9scan
W9scan — это бесплатный консольный сканер уязвимостей сайта с более чем 1200 встроенными плагинами, которые могут определять отпечатки веб-страниц, портов, проводить анализ структуры веб-сайта, находить различные популярные уязвимости, сканировать на SQL Injection, XSS и т. д.Более полный список возможностей W9scan— Fingerprint detection
- Can identify common website CMS fingerprints ( 300+)
- Recognizable common website frame
- Identify common port service fingerprints
- Detect website scripting language
- Detect operating system type
- Detection Website Firewall (WAF)
— Attack parameter
- SQL injection (based on crawlers)
- XSS injection (based on reptiles)
- A large number of Fuzz parameter scans
- CVE vulnerability
- struts Vulnerability collection (including automatic detection)
- Shellshock cgi test
- heartbeat Bleeding heart
- IIS parsing vulnerability
- IIS Put vulnerability
— Violent cracking
- Backup files and directories (based on crawlers)
- Backup files and directories (based on domain name)
- Common directory
- Common file
- Subdomain violence analysis
- fckeditorPath enumeration
- Common mdbdatabase enumeration
- git svn Leak identification
- TOMCAT web.xml Give way
— Сollect message
- Emails (based on reptiles)
- Private IP (based on reptiles)
- E-mail (based on reptiles)
- Detecting Warnings, Fatal Error,…
- PHP version identification
- IIS information disclosure
- IP address attribution
- Integrated Wappalyzer recognition script
- robots.txt Analysis
- Detecting unsafe headers in headers
- Detecting unsafe factors in cookies
W9scan автоматически генерирует отчеты о результатах сканирования в формате HTML. Для запуска сканирования требуется только указать URL сайта и плагины, которые будут использоваться. Можно выбрать сразу все, дописав «all».
При сканировании php.testsparker.com W9scan нашел svn и возможные пути загрузки payload. Из менее критичного — определил версии используемых сервисов, возможные векторы проведения XXE, XXS-атак, нашел конфигурационные файлы сервера и провел поиск субдоменов.
На сайте premium.bgabank.com ничего критичного найдено не было. Но сканер определил возможные векторы проведения атак, определены версии сервисов, директории и субдомены.
По результатам сканирования W9scan автоматически генерирует файл отчета в формате HTML.
W9scan сканер подойдет для быстрого запуска в одну команду и мы рекомендуем использовать его как вспомогательный инструмент для определения версий сервисов, а также потенциальных векторов атак.
Wapiti
Ещё один неплохой консольный сканер. Так же, как и W9scan, готов к старту в одну команду, при этом имеет больше разных настроек сканирования.
Wapiti производит поиск следующих уязвимостей:
- File disclosure (Local and remote include/require, fopen, readfile…)
- Database Injection (PHP/JSP/ASP SQL Injections and XPath Injections)
- XSS (Cross Site Scripting) injection (reflected and permanent)
- Command Execution detection (eval(), system(), passtru()…)
- CRLF Injection (HTTP Response Splitting, session fixation…)
- XXE (XML External Entity) injection
- SSRF (Server Side Request Forgery)
- Use of know potentially dangerous files
- Weak .htaccess configurations that can be bypassed
- Presence of backup files giving sensitive information
- Shellshock
В дополнение ко всему перечисленному имеется поддержка прокси (HTTP, HTTPs и SOCKS5), различных методов аутентификации (Basic, Digest, Kerberos, NTLM), поддержка SSL-сертификатов, возможность добавления различных HTTP-заголовков или настроек user-agent.
При сканировании сайта php.testsparker.com были найдены уязвимости Blind SQL Injection, Cross Site Scripting, Commands execution. На premium.bgabank.com Wapiti в сравнении с другими сканерами показывает не такие выдающиеся результаты: был обнаружен только Cross Site Scripting.
По результатам работы сканера также формируется отчет в формате HTML, в котором содержатся категории и число найденных уязвимостей, их описание, запросы, команды для curl и советы о том, как закрыть найденные дыры в безопасности.
Как и следовало ожидать, Wapiti до уровня OWASP ZAP, конечно, не дотягивает. Но все же он отработал качественнее W9scan, хотя не был произведен поиск директорий, субдоменов и определение версий сервисов.
Arachni
Мощный бесплатный комбайн для теста защищенности веб-приложений и поиска уязвимостей. Имеет графический интерфейс и огромную функциональность, о которой более подробно можно почитать на официальном сайте.
Активное тестирование:
- SQL injection — Error based detection
- Blind SQL injection using differential analysis
- Blind SQL injection using timing attacks
- NoSQL injection — Error based vulnerability detection
- Blind NoSQL injection using differential analysis
Полный список функций для активного тестирования
- CSRF detection
- Code injection
- Blind code injection using timing attacks
- LDAP injection
- Path traversal
- File inclusion
- Response splitting
- OS command injection
- Blind OS command injection using timing attacks
- Remote file inclusion
- Unvalidated redirects
- Unvalidated DOM redirects
- XPath injection
- XSS
- Path XSS
- XSS in event attributes of HTML elements
- XSS in HTML tags
- XSS in script context
- DOM XSS
- DOM XSS script context
- Source code disclosure
- XML External Entity
Пассивное тестирование:
- Allowed HTTP methods
- Backup files
- Backup directories
- Common administration interfaces
- Common directories
- Common files
Полный список функций для пассивного тестирования
- HTTP PUT
- Insufficient Transport Layer Protection for password forms
- WebDAV detection ( webdav).
- HTTP TRACE detection
- Credit Card number disclosure
- CVS/SVN user disclosure
- Private IP address disclosure
- Common backdoors
- .htaccess LIMIT misconfiguration
- Interesting responses
- HTML object grepper
- E-mail address disclosure
- US Social Security Number disclosure
- Forceful directory listing
- Mixed Resource/Scripting
- Insecure cookies
- HttpOnly cookies
- Auto-complete for password form fields.
- Origin Spoof Access Restriction Bypass
- Form-based upload
- localstart.asp
- Cookie set for parent domain
- Missing Strict-Transport-Security headers for HTTPS sites
- Missing X-Frame-Options headers
- Insecure CORS policy
- Insecure cross-domain policy
- Insecure cross-domain policy
- Insecure client-access policy
Внушительно, не правда ли? Но и это не все. В «паутину» завернута ещё куча плагинов, например Passive Proxy, Dictionary attacker for HTTP Auth, Cookie collector, WAF Detector и др.
Сканер имеет приятный и лаконичный веб-интерфейс:
И вот что нашел Arachni на наших тестовых сайтах. Php.testsparker.com:
- Cross-Site Scripting (XSS) in script context
- Blind SQL Injection (differential analysis)
- Code injection
- Code injection (timing attack)
- Operating system command injection (timing attack)
- Operating system command injection
Остальные уязвимости на php.testsparker.com
H: File Inclusion
H: Cross-Site Scripting (XSS) in HTML tag
H: Cross-Site Scripting (XSS)
H: Path Traversal
M: Backup file
M: Common directory
M: HTTP TRACE
L: Missing ‘X-Frame-Options’ header
L: Password field with auto-complete
L: Insecure client-access policy
L: Insecure cross-domain policy (allow-access-from)
L: Common sensitive file
На premium.bgabank.com из критичного была обнаружена только возможность межсайтовой подделки запросов (CSRF).Полные результаты Arachni на premium.bgabank.com
H: Cross-Site Request Forgery
M: Mixed Resource
M: HTTP TRACE
M: Common directory
M: Missing ‘Strict-Transport-Security’ header
L: Private IP address disclosure
Отдельно отметим, какие симпатичные отчеты выдает нам Arachni. Поддерживается немало форматов — HTML, XML, text, JSON, Marshal, YAML, AFR.
В общем, Arachni оставляет после работы только положительные впечатления. Наше мнение: это «маст хэв» в арсенале любого уважающего себя спеца.
Paros
Еще один сканер веб-уязвимостей с графическим интерфейсом. По умолчанию включен в дистрибутив Kali Linux и установлен там локально. Имеет встроенный прокси, через который добавляются сайты для анализа, встроенный веб-паук, способный анализировать сайт и строить карту запросов.
Для сканирования личного кабинета пользователя необходимо авторизоваться в браузере с включенным перенаправлением трафика через прокси Paros. Сканер будет использовать авторизованные куки в процессе сканирования. Отчет о работе можно экспортировать в HTML. Он сохраняется в файл root/paros/session/LatestScannedReport.htm и в дальнейшем перезаписывается. Если вы хотите сохранить результат предыдущего сканирования, то перед началом следующего сканирования необходимо создать копию имеющегося файла.
Основные возможности (с оглядкой на OWASP TOP 10 2017):
- A1: Injection — SQLinjection, SQLinjection Fingerprint (места, где потенциально может быть SQLinj)
- A6: Security Misconfiguration — Directory browsing, ISS default file, Tomcat source file disclosure, IBM WebSphere default files и некоторые другие стандартные или устаревшие файлы (Obsolete file), содержащие исходный код и прочее.
- A7: XSS
Дополнительные возможности:
- Поиск включенного автозаполнения для форм паролей. При этом если у поля input есть атрибут type=«password», получается ложное срабатывание.
- CRLF injection
- Secure page browser cache (кэширование страниц в браузере c важной информацией)
- Возможность сканирования защищенной области пользователя (личный кабинет)
- Возможность сканирования веб-приложений в локальной сети
В финальном отчете к каждому типу уязвимостей есть более подробная информация и некоторые рекомендации о способе устранения.
В нашем тестировании Paros показал довольно слабые результаты. На php.testsparker.com были найдены:
H: SQL injection
M: XSS
M: Устаревшие файлы с исходным кодом
M: Использование автозаполнения в формах с важной информацией (пароли и прочее).
L: Раскрытие внутренних IP
На premium.bgabank.com и того меньше:
M: Directory browsing
M: Использование автозаполнения в формах с важной информацией (пароли и прочее).
В итоге, хотя сканер Paros прост и достаточно удобен в использовании, слабые результаты сканирования заставляют отказаться от его использования.
Tenable.io
Платный многофункциональный облачный сканер, который умеет находить большое число веб-уязвимостей и почти полностью покрывает OWASP TOP 10 2017.
Сервис имеет встроенного веб-паука. Если в настройках сканирования указать данные авторизации (запрос авторизации, логин и пароль, авторизованные куки), то сканер проверит и личный кабинет (зону авторизованного пользователя).
Кроме сканирования веб-приложений, Tenable.io умеет сканировать сеть — как на предмет известных уязвимостей, так и для поиска хостов. Возможно подключение агентов для сканирования внутренней сети. Есть возможность экспортирования отчета в различные форматы: *.nessus, *.csv, *.db, *.pdf.
На скриншоте все домены «тестовые»
Дополнительные профили сканирования. В данной статье не затрагиваются
После сканирования становится доступна статистика и приоритизация найденных уязвимостей — critical, high, middle, low, information
В карточке уязвимости представлена дополнительная информация о ней и некоторые рекомендации по ее устранению.
Сканируем php.testsparker.com. Уязвимости с приоритетом high:
H: Уязвимости компонентов
— вышедшая из поддержки версия PHP
— вышедшая из поддержки версия Apache
H: Code injection
H: SQLinj
H: XSS
H: LFI
H: Path Traversal
M: Раскрытие ценных данных — полный путь, бекапы
M: Раскрытие внутренних IP
M: Cookie без флага HTTPOnly
M: Отправка пароля по HTTP
L: Использование автозаполнения в формах с важной информацией
L: Ответ сервера на TRACE запросы
L: Не установлены header`ы Cache-Control, X-Content-Type-Options, X-Frame-Options, X-XSS-Protection
Теперь premium.bgabank.com. Уязвимости с приоритетом high:
H: Уязвимости компонентов
- вышедшая из поддержки версия PHP
- уязвимости Apache
- уязвимости Bootstrap
- уязвимости JQuery
Middle- и low-уязвимости
M: Web server phpinfo()
M: Совместное использование HTTP и HTTPS
M: Отсутствие перенаправления с HTTP на HTTPS
M: Directory browsing
M: Найдены backup файлы
M: Использование небезопасной версии протокола SSL
M: Истечение срока сертификата SSL/TLS
L: Раскрытие внутренних IP
L: Cookie без флага HTTPOnly
L: Ответ сервера на TRACE запросы
L: Не установлены header`ы Strict-Transport-Security, Cache-Control, X-Content-Type-Options, X-Frame-Options, X-XSS-Protection
Сканер Tenable.io показал себя хорошо, нашел множество уязвимостей. Работу с ним упрощает удобный графический интерфейс и представление данных. Еще один плюс — наличие дополнительных профилей сканирования, в которые мы пока решили не зарываться. Важной особенностью является облачная структура сервиса. С одной стороны, сервис не использует локальные вычислительные ресурсы рабочего компьютера. С другой — не сможет просканировать веб-приложения в локальной сети.
Burp Suite Pro
Burp Suite — это комплексное решение для проверок веб-приложений. Оно включает в себя разнообразные утилиты, позволяющие улучшить и ускорить поиск уязвимостей веб-приложений.
В составе Burp Suite есть следующие утилиты:
- Proxy — прокси-сервер, который перехватывает трафик, проходящий по протоколу HTTP(S), в режиме man-in-the-middle. Находясь между браузером и целевым веб-приложением, эта утилита позволяет перехватывать, изучать и изменять трафик, идущий в обоих направлениях.
- Spider — веб-паук, который в автоматическом режиме собирает информацию о содержимом и функционале приложения (веб-ресурса).
- Scanner (только в Burp Suite Pro) — сканер для автоматического поиска уязвимостей в веб-приложениях.
- Intruder — гибкая утилита, позволяющая в автоматическом режиме производить атаки различного вида. Например, перебор идентификаторов, сбор важной информации и прочее.
- Repeater — инструмент для ручного изменения и повторной отсылки отдельных HTTP-запросов, а также для анализа ответов приложения.
- Sequencer — утилита для анализа случайных данных приложения на возможность предсказания алгоритма их генерации.
- Decoder — утилита для ручного или автоматического кодирования и декодирования данных приложения.
- Comparer — инструмент для поиска визуальных различий между двумя вариациями данных.
- Extender — инструмент для добавления расширений в Burp Suite
Утилита Scanner представлена в одноименной вкладке основного окна программы Burp Suite. Интерфейс англоязычный, но кого сейчас это может отпугнуть?
На вкладке Issue Definition представлен полный список всех уязвимостей, которые способен выявить данный сканер. Следует отметить, что список весьма внушительный.
Все уязвимости разделены на 3 категории: high, medium, low. Также есть категория information, к которой относятся механизмы сбора различной полезной информации о сканируемом ресурсе.
При запуске сканирования в окне Scan queue мы можем наблюдать за прогрессом по этапам. «Цветовая дифференциация штанов» присутствует.
На вкладке Options выполняется основная настройка параметров сканирования.
Для удобства опции разбиты по категориям. При необходимости можно получить справку по каждой категории прямо из окна настройки.
В целом Burp Suite Pro показал неплохой результат. При сканировании php.testsparker.com было найдено и классифицировано достаточно уязвимостей чтобы получить полный контроль над веб приложением и его данными — это и OS command injection, и SSTI, и File path traversal.
Полные результаты Burp Suite Pro на php.testsparker.comH: OS command injection
H: File path traversal
H: Out-of-band resource load (HTTP)
H: Server-side template injection
H: Cross-site scripting (reflected)
H: Flash cross-domain policy
H: Silverlight cross-domain policy
H: Cleartext submission of password
H: External service interaction (DNS)
H: External service interaction (HTTP)
M: SSL certificate (not trusted or expired)
L: Password field with autocomplete enabled
L: Form action hijacking (reflected)
L: Unencrypted communications
L: Strict transport security not enforced
На сайте premium.bgabank.com были найдены:
H: Cross-site scripting (reflected)
M: SSL cookie without secure flag set
M: SSL certificate (not trusted or expired)
L: Cookie without HttpOnly flag set
L: Password field with autocomplete enabled
L: Strict transport security not enforced
Если для веб-пентеста вы часто используете Burp Suite, вам нравится его экосистема, но хотелось бы как-то автоматизировать процесс поиска уязвимостей, то эта утилита отлично впишется в ваш арсенал.
Acunetix
В заключение — еще один весьма неплохой коммерческий сканер. Его очень активно продвигают с помощью рекламы, но Acutenix не добился бы успеха без своей обширной функциональности. Среди доступных ему для обнаружения уязвимостей — все виды SQL injection, Cross site scripting, CRLF injection и прочие радости пентестера веб-приложений. Стоит отметить, что для качественного сканирования требуется выбрать правильный профиль.
Интерфейс дашборда приятный:
Все выявленные уязвимости по традиции раскладываются на четыре категории: High, Medium, Low. Ну и куда же без категории Information, в которую включаются все интересные, по мнению сканера, данные.
На вкладке Scans мы можем наблюдать прогресс сканирования и прочую диагностическую информацию.
После завершения сканирования на вкладке Vulnerabilities мы можем ознакомиться с тем, что и в каком количестве было найдено. Цветовая дифференциация на месте.
В тесте на php.testsparker.com сканер показал неплохой результат, а вот с premium.bgabank.com откровенно подкачал.
Полные результаты Acunetixphp.testsparker.com:H: Apache 2.2.14 mod_isapi Dangling Pointer
H: Blind SQL Injection
H: Cross site scripting
H: Cross site scripting (verified)
H: Directory traversal
H: File inclusion
H: PHP code injection
H: Server-side template injection
H: SVN repository found
H: User controllable script source
M: Access database found
M: Apache 2.x version older than 2.2.9
M: Apache httpd remote denial of service
M: Apache httpOnly cookie disclosure
M: Application error message
M: Backup files
M: Directory listing
M: HTML form without CSRF protection
M: Insecure clientaccesspolicy.xml file
M: Partial user controllable script source
M: PHP hangs on parsing particular strings as floating point number
M: PHP preg_replace used on user input
M: Source code disclosure
M: User credentials are sent in clear text
L: Apache 2.x version older than 2.2.10
L: Apache mod_negotiation filename bruteforcing
L: Clickjacking: X-Frame-Options header missing
L: Login page password-guessing attack
L: Possible relative path overwrite
L: Possible sensitive directories
L: Possible sensitive files
L: TRACE method is enabled
premium.bgabank.com:
L: Clickjacking: X-Frame-Options header missing
Acunetix имеет большие возможности и подойдет, если вы ищете stand-alone решение. Веб-интерфейс прост и понятен, инфографика и отчеты выглядят вполне удобоваримо. Возможны осечки при сканировании, но, как говорил Тони Старк: «С мужиками такое случается. Не часто. Один разок из пяти».
Общие итоги
А теперь выводы по всем протестированным сканерам.
- OWASP ZAP нам понравился. Рекомендуем к использованию.
- W9scan мы рекомендуем использовать как вспомогательный инструмент для определения версий и сервисов, а также потенциальных векторов атак.
- Wapiti до OWASP ZAP не дотягивает, но у нас отработал качественнее W9scan.
- Arachni — это просто «маст-хэв».
- Paros сканирует слабо, и мы его не рекомендуем.
- Tenable.io хорош, находит множество уязвимостей. Но стоит учесть, что он облачный.
- Burp Suite Pro мы советуем тем, кому нравится экосистема Burp Suite, но не хватает автоматизации.
- Acunetix подойдет тем, кто ищет сканер как stand-alone приложение.
habr.com
Примеры распространенных уязвимостей | Энциклопедия «Касперского»
Наиболее распространенная в настоящее время на подключенных к интернету компьютерах операционная система Microsoft Windows содержит множественные опасные уязвимости. Чаще всего хакерами используются уязвимости в IIS, MS SQL и Internet Explorer, а также системах обработки файлов и сервисах сообщений самой операционной системы.
Уязвимость в IIS, подробно описанная в Microsoft Security Bulletin MS01-033, является одной из наиболее часто используемых уязвимостей Windows. В последние годы было написано множество сетевых червей, пользующихся данной уязвимостью, но одним из наиболее известных является CodeRed. CodeRed был впервые обнаружен 17 июля 2001 года, и, по некоторым оценкам, заразил около 300 тысяч компьютеров, помешал работе множества предприятий и нанес значительный финансовый ущерб компаниям по всему миру. Хотя Microsoft и выпустила вместе с бюллетенем MS01-033 патч, закрывающий используемую червем уязвимость, некоторые версии CodeRed до сих пор продолжают распространяться.
Сетевой червь Spida, обнаруженный спустя почти год после появления CodeRed, использовал для своего распространения открытость в MS SQL. Некоторые стандартные инсталляции MS SQL не защищали паролем системный эккаунт «SA», позволяя любому человеку с доступом к системе через сеть запускать на ней на исполнение произвольные команды. При использовании этой уязвимости, червь открывает эккаунту «Guest» полный доступ к файлам компьютера, после чего производит загрузку самого себя на заражаемый сервер.
Сетевой червь Slammer, обнаруженный в конце января 2003 года, использовал более простой способ заражения компьютеров под управлением Windows с работающим сервером MS SQL, а именно — уязвимость при переполнении буфера в одной из подпроцедур обработки UDP-пакетов. Поскольку червь был достаточно мал — всего 376 байт — и использовал протокол UDP, предназначенный для быстрой пересылки малых объемов данных, Slammer распространялся с невероятной скоростью. По некоторым оценкам, Slammer поразил порядка 75 тысяч компьютеров по всему миру за первые 15 минут эпидемии.
Три этих характерных сетевых червя использовали уязвимости и открытости в программах, работающих на разных версиях Microsoft Windows, в то время как обнаруженный 11 августа 2003 года червь Lovesan использовал для своего распространения гораздо более опасную уязвимость при переполнении буфера в одном из основных компонентов самой Windows. Эта уязвимость подробно описана в Microsoft Security Bulletin MS03-026.
Sasser, впервые появившийся в мае 2004 года, использовал еще одну уязвимость в компоненте ядра Windows, в службе Local Security Authority Subsystem Service (LSASS). Информация об этой уязвимости была опубликована в Microsoft Security Bulletin MS04-011. Sasser распространялся молниеносно и заразил миллионы компьютеров, причинив огромный финансовый ущерб.
Все операционные системы содержат уязвимости и открытости, которые могут быть использованы хакерами и создателями вирусов в своих целях.
Разумеется, все операционные системы содержат уязвимости и открытости, которые могут быть использованы хакерами и создателями вирусов в своих целях. Хоть уязвимости Windows и получают наибольшее освещение из-за огромного числа компьютеров, работающих под управлением этой операционной системы, свои слабые места есть и у UNIX.
Годами одной из наиболее популярных открытостей в мире UNIX была служба finger. Эта служба позволяет пользователям вне какой-либо сети видеть, кто в настоящее время к этой сети подключен, с каких компьютеров и какие сетевые ресурсы используются. Finger полезен, но раскрывает слишком много интересной хакерам информации.
Вот пример того, как выглядит результат работы службы finger:
Login Name Tty Idle Login Time Office
xenon pts/7 22:34 May 12 16:00 (chrome.chiba)
polly pts/3 4d May 8 14:21
cracker DarkHacker pts/6 2d May 10 11:58
Из этой таблицы всем умеющим пользоваться службой finger становится доступна следующая информация: к сети подключено три пользователя, но два из них не обращались к ресурсам уже более двух суток, в то время как последний отошел от своего компьютера 22 минуты назад. Логины, которые демонстрирует сервис finger, можно использовать в процессе подбора комбинации логин-пароль. Это самый элементарный путь проникновения в систему, поскольку множество пользователей подбирают себе пароли на основе все тех же логинов (например, добавляя в конце логина какие-либо цифры).
Служба finger не только открывает важную информацию о сервере, на котором она работает, но является целью множества эксплойтов, одним из которых пользовался самый первый сетевой червь, созданный Робертом Моррисом (Robert Morris) 2 ноября 1988 года. По этой причине большинство современных дистрибутивов UNIX поставляются с отключенным сервисом finger.
Программа sendmail, изначально созданная Эриком Олмэном (Eric Allman), представляет собой еще один пример популярной цели для хакеров. Sendmail была разработана для осуществления пересылки электронной почты через интернет. Из-за большого числа операционных систем и компьютерных конфигураций Sendmail постепенно стала чудовищно сложной программой с длительной и поучительной историей обнаружения критических уязвимостей. Все тот же червь Morris использовал для своего распространения эксплойт уязвимости в sendmail наравне с уязвимостью в службе finger.
В мире UNIX есть множество других часто используемых уязвимостей в программных пакетах вроде SSH, Apache, WU-FTPD, BIND, IMAP/POP3 и в различных частях ядра ОС.
Все описанные выше инциденты позволяют сделать вывод, что сетевой червь или иная автоматизированная хакерская утилита, распространяющаяся через уязвимости в обычных подключенных к интернету компьютерах под управлением Windows, общее число которых, вероятно, превышает несколько сотен миллионов, представляет чрезвычайно серьезную угрозу стабильности и работоспособности всего интернета.
encyclopedia.kaspersky.ru
практический взгляд на безопасность веб-приложений / SimplePay corporate blog / Habr
Хабр, привет! Мы — Иван Притула и Дмитрий Агапитов, занимаемся разработкой решений, которые делают жизнь людей проще и комфортнее. Сегодня мы хотим представить один из наших новых сервисов – это платежный агрегатор SimplePay. Все что мы делаем продиктовано мучительной невозможностью мириться с несовершенством в целом, и несовершенством конкретных программных решений в частности. Именно в погоне за совершенством и рождаются наши продукты. Стараемся мы изо всех сил, а уж насколько мы близки, судить не нам.Чтобы Всем было интереснее, мы не будем рекламировать свой сервис (ну если только чуть-чуть). Вместо этого, мы подготовили первую серию публикаций, которая будет посвящена такой увлекательной и крайне актуальной теме, как безопасность Web-приложений. Мы постараемся раскрыть опасности, сопутствующие любому действующему интернет-проекту и простым языком донести всю важность ответственного подхода к рутинным, казалось бы, мелочам в вопросах безопасности данных. Надеемся наши статьи будут не бесполезны для Вас. Уверены, так Вы узнаете нас гораздо лучше.
Мы предлагаем следующие услуги:
- Организацию приема платежей на Вашем сайте
- Возврат средств покупателю
- Выставление произвольного счета покупателю
- Уведомления о платежах как на URL, так и по e-mail
- Рекуррентные платежи
- Псевдорекуррентные платежи во всех популярных платежных системах с кошельками
Короткая справка:
- Банк эквайер: Промсвязьбанк
- Платежи в пользу третьих лиц: РНКО РИБ
- Юрисдикция: РФ, 161-ФЗ
- Работа с нерезидентами: Нет
- Собственный API: Да
- Совместимые API: Да
- CMS-модули: Да
- Встроенные модули в сторонних системах: BG Billing, WP-shop
- Переадресация сразу на ПС без промежуточной страницы: Да
- API на возвраты: Да
Безопасность веб-приложений
Современный мир несет в себе тысячи угроз и потенциальных опасностей буквально на каждом шагу и в каждый момент времени. Всемирная сеть, ставшая неотъемлемой частью нашей жизни, не является исключением.
Киберпреступность сейчас развита как никогда – ведь почти каждая компания имеет свой сайт в интернете, а злоумышленник в сети может легко оставаться абсолютно анонимным.
При этом все компании, имеющие сайт в интернете, делятся на три типа:
- Те, чей сайт уже сломали;
- Те, чей сайт еще не ломали;
- Те, кто знаком с основными векторами атак и защитил приложения.
Представителям третьей категории дальнейшее изложение вряд ли будет очень интересно. Остальным двум категориям следует как минимум знать об основных векторах атак на веб-приложения и возможности их практического применения – ведь, предупрежден, – почти защищен.
Акцент на возможности практического применения сделан не случайно. Мы считаем, что недостаточно знать теорию для понимания истинного масштаба угрозы – ведь уязвимости, которые выглядят не очень страшно в теории, зачастую могут нести катастрофические для бизнеса последствия.
Количество угроз растет пропорционально росту бизнеса, однако как показала многолетняя практика, 99% атак происходят через десяток стандартных ошибок валидации входящих данных, либо обнаруженные уязвимости в установленных компонентах программного обеспечения сторонних производителей, либо банально, по халатности системных администраторов, использующих настройки и пароли, установленные по-умолчанию.
Классификацией векторов атак и уязвимостей занимается сообщество OWASP (Open Web Application Security Project). Это международная некоммерческая организация, сосредоточенная на анализе и улучшении безопасности программного обеспечения.
OWASP создал список из 10-и самых опасных векторов атак на Web-приложения, этот список получил название OWASP TOP-10 и в нем сосредоточены самые опасные уязвимости, которые могут стоить некоторым людям больших денег, или подрыва деловой репутации, вплоть до потери бизнеса.
В этой вводной статье мы пробежимся по списку OWASP TOP-10, а далее в рамках серии наших статей «Теория и практика защиты Web-приложений» подробно рассмотрим каждый из перечисленных векторов атак, методы практической эксплуатации, степень опасности на примерах реального бизнеса, а также методы практической защиты Web-приложений и Web-сервисов.
Мы постараемся вести изложение максимально доступно, с целью донести информацию не только и не столько до технических специалистов, но также до собственников и управляющих бизнеса, которые, порой, пребывают в счастливом неведении, пока их не сломали злоумышленники, и занимаются онлайн-бизнесом, не ведая о серьезнейшей опасности, нависшей над ними.
Итак, поехали.
1. Инъекции — Injections
Все данные, как правило, хранятся в специальных базах, обращения к которым строятся в виде запросов, чаще всего написанных на специальном языке запросов SQL (Structured Query Language – структурированный язык запросов).
Приложения используют SQL-запросы для того, чтобы получать, добавлять, изменять или удалять данные, например при редактировании пользователем своих личных данных или заполнении анкеты на сайте. При недостаточной проверке данных от пользователя, злоумышленник может внедрить в форму Web-интерфейса приложения специальный код, содержащий кусок SQL-запроса.
Такой вид атаки называется инъекция, в данном случае самый распространённый — SQL-инъекция. Это опаснейшая уязвимость, позволяющая злоумышленнику получить доступ к базе данных и возможность читать/изменять/удалять информацию, которая для него не предназначена.
Например, изменить вместе с именем и фамилией баланс своего счета, посмотреть баланс чужого счета, или же, похитить конфиденциальные личные данные.
Эта уязвимость является следствием недостаточной проверки данных, поступающих от пользователя. Это позволяет злоумышленнику «подсунуть», например, в веб-формы, специально подготовленные запросы, которые «обманут» приложение и позволят прочитать или записать нелегитимные данные.
В целом эта разновидность атак имеет общее название «Ошибки валидации», к ней относятся далеко не только SQL-инъекции и мы будем упоминать этот вектор еще не раз.
2. Недочеты системы аутентификации и хранения сессий (Broken Authentication and Session Management)
Для того, чтобы отличать одного пользователя от другого, web-приложение использует так называемые сессионные куки. После того, как Вы ввели логин и пароль и приложение вас авторизовало, в хранилище браузера сохраняется специальный идентификатор, который браузер в дальнейшем предъявляет серверу при каждом запросе страницы вашего web-приложения. Именно так web-приложение понимает, что Вы это именно Вы.
В случае, если ваш идентификатор украдет злоумышленник, а в системе не были реализованы проверки, скажем IP-адреса сессии, или проверки наличия более одного соединения в одной сессии, злоумышленник сможет получить доступ в систему с правами вашего аккаунта. А если это интернет-банк или кабинет платежной системы, о последствиях такого несанкционированного доступа Вы можете легко догадаться сами.
3. Межсайтовый скриптинг – XSS (Cross Site Scripting)
Межсайтовый скриптинг – еще одна ошибка валидации пользовательских данных, которая позволяет передать JavaScript код на исполнение в браузер пользователя. Атаки такого рода часто также называют HTML-инъекциями, ведь механизм их внедрения очень схож с SQL-инъекциями, но в отличие от последних, внедряемый код исполняется в браузере пользователя. Чем это чревато?
Во-первых, злоумышленник может украсть вашу сессионную cookie, последствия чего были описаны во втором пункте, буквально парой абзацев выше. Нужно отметить, что далеко не все серверы приложений уязвимы к данному типу атак, об этом мы отдельно поговорим в пункте под номером 5.
Во-вторых, могут быть украдены данные, вводимые в формы на зараженной странице. А это могут быть конфиденциальные персональные данные, или, что еще хуже, данные кредитной карты вместе с CVC-кодом.
В третьих, через JavaScript можно изменять данные, расположенные на странице, например, там могут быть реквизиты для банковского перевода, которые злоумышленник с удовольствием подделает и заменит подставными.
4. Небезопасные прямые ссылки на объекты (Insecure Direct Object References)
Данный вид уязвимости является также следствием недостаточной проверки пользовательских данных. Суть ее заключается в том, что при выводе каких-либо конфиденциальных данных, например личных сообщений или учетных карточек клиентов, для доступа к объекту используется идентификатор, который передается в открытом виде в адресной строке браузера, И не реализована проверка прав доступа к объектам. Например, есть страница, которая отображает личное сообщение и она имеет адрес вида:
mysite.ru/read_message.jsp?id=123654
Перебирая число после «id=» можно будет читать чужие личные сообщения. Эксплуатация данной уязвимости очень проста и не требует вообще никаких специальных навыков – достаточно лишь перебирать число в адресной строке браузера и наслаждаться результатом. Как ни парадоксально, но этой детской болезни, порой были подвержены достаточно крупные европейские платежные системы.
5. Небезопасная конфигурация (Security Misconfiguration)
Безопасность Web-приложения требует наличия безопасной конфигурации всех компонентов инфраструктуры: компонентов приложения (таких как фреймворки – frameworks), веб-сервера, сервера баз данных и самой платформы. Настройки компонентов сервера по-умолчанию зачастую небезопасны и открывают возможности к атакам. Например, кража сессионной cookie через JavaScript при XSS-атаке становится возможна благодаря выключенной по-умолчанию настройке cookie_http only.
При правильной настройке сервера и включенной опции cookie_httponly, получить сессионную cookie через JavaScript невозможно, но зачастую эта простая и важная настройка отсутствовала в таких критично важных местах, как личные кабинеты платежных систем.
Еще один пример детской уязвимости – использование настроек по-умолчанию в серверах баз данных, таких как Redis, Memcached и других – закрытая служба может быть доступна на публичном IP-адресе сервера, и/или использовались пароли, установленные производителем по-умолчанию. Это позволяет злоумышленнику запросто читать и изменять данные, в числе которых, нередко бывают и сессионные cookies (чем это чревато – мы уже знаем) и выводимые пользователям в браузер данные (что позволяет еще и XSS-атаку применить).
Кроме того, программное обеспечение должно быть в актуальном состоянии: уязвимости находят каждый день в самых различных программных компонентах – операционной системе, web-серверах, серверах баз данных, почтовых серверах и т.д. И даже если ваше приложение правильно написано и тщательно проверяет все входящие данные, и вообще, хорошо защищено, это не означает что в один прекрасный момент не найдется уязвимость в вашей ОС или Web-сервере.
6. Незащищенность критичных данных (Sensitive Data Exposure)
Многие веб-приложения не защищают конфиденциальные данные, такие как кредитные карты и учетные данные для аутентификации. Злоумышленники могут украсть или модифицировать такие слабо защищенные данные для использования в своих корыстных целях.
Самый простой пример – передача данных по протоколу HTTP. Дело в том, что данные передаваемые по протоколу HTTP никак не шифруются, а при прохождении данных от компьютера пользователя до Web-сервера, данные пройдут достаточно много различных узлов: маршрутизатор офиса или домашний роутер, маршрутизатор провайдера, маршрутизатор на канале, маршрутизатор в дата-центре хостинг-провайдера сервера и так далее. На каждом из этих узлов может затаиться зловред, так называемый сниффер, программа, которая считывает весь трафик и передает злоумышленнику. А последний просматривает полученные данные на предмет персональных данных и данных кредитных карт.
Такие данные должны передаваться исключительно по протоколу HTTPS, о чем должна гласить соответствующая надпись в адресной строке браузера:
Еще одна задача SSL-сертификата (а именно так называется специальный ключ, при помощи которого осуществляется проверка подлинности и шифрование в HTTPS) – подтвердить, что он выдан именно для данного сайта. В случае, если сертификат просрочен или подделан, Вы увидите следующую картину:
Другой пример – отсутствие шифрования критичных данных, таких как пароли или номера кредитных карт. В случае, если данные зашифрованы, то даже в случае получения несанкционированного доступа на сервер, злоумышленник не сможет украсть критичные данные. К паролям, в частности, должна применяться необратимая хеш-функция – расшифровать шифрограмму при этом не возможно и проверка пароля происходит путем формирования шифрограммы введенного пароля и сравнения ее с имеющейся в базе.
7. Отсутствие функций контроля доступа (Missing Function Level Access Control)
Суть уязвимости, как следует из названия, заключается в отсутствии проверки наличия надлежащего доступа к запрашиваемому объекту.
Большинство веб-приложений проверяют права доступа, прежде чем отобразить данные в пользовательском интерфейсе. Тем не менее, приложения должны выполнять те же проверки контроля доступа на сервере при запросе любой функции. Ведь есть еще множество вспомогательных служебных запросов, которые, зачастую отправляются в фоновом режиме асинхронно, при помощи технологии AJAX.
Если параметры запроса не достаточно тщательно проверяются, злоумышленники смогут подделать запрос для доступа к данным без надлежащего разрешения.
Частный, и пожалуй, самый распространенный случай данной уязвимости мы уже рассмотрели в 4 пункте нашей статьи – отсутствие проверки пользователя в личных сообщениях.
8. Межсайтовая подделка запроса (Cross-Site Request Forgery, CSRF/XSRF)
Вектор атаки CSRF, также известный как XSRF, позволяет злоумышленнику выполнять от имени жертвы действия на сервере, где не реализованы дополнительные проверки.
Например, в некоторой платежной системе для перевода средств на другой аккаунт, есть страница вида:
demobank.com/transfer_money.jsp?transfer_amount=1000&transfer_account=123456789
где transfer_amount – сумма для перевода и transfer_account – номер аккаунта, куда должны быть переведены средства.
Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на вышеуказанную страницу платежной системы. Как результат – деньги уйдут на счет злоумышленника, после чего, вероятно, будут оперативно обменяны на Bitcoin или переведены в другую безвозвратную платежную систему, и получить их назад уже не получится.
Предполагается, что жертва должна была предварительно пройти аутентификацию в платежной системе и должна быть открыта активная сессия (скажем, страница платежной системы открыта в другой вкладке браузера).
Решается проблема достаточно просто и об этом мы расскажем в отдельной статье, посвященной CSRF.
9. Использование компонентов с известными уязвимостями (Using Components with Known Vulnerabilities)
Зачастую web-приложения написаны с использованием специальных библиотек или «фреймворков» (англ – framework), которые поставляются сторонними компаниями. В большинстве случаев эти компоненты имеют открытый исходный код, а это означает, что они есть не только у вас, но и у миллионов людей во всем мире, которые штудируют их исходный код, в том числе, и на предмет уязвимостей. И нужно отметить, что делают они это отнюдь не безуспешно.
Также уязвимости ищут (и находят) в более низкоуровневых компонентах системы, таких как сервер базы данных, web-сервер, и наконец, компоненты операционной системы вплоть до ее ядра.
Очень важно использовать последние версии компонентов и следить за появляющимися известными уязвимостями на сайтах типа securityfocus.com.
10. Непроверенные переадресации и пересылки (Unvalidated Redirects and Forwards)
Web-приложения зачастую переадресуют пользователя с одной страницы на другую. В процессе могут использоваться ненадлежащим образом проверяемые параметры с указанием страницы конечного назначения переадресации.
Без соответствующих проверок, атакующий может использовать такие страницы для переадресации жертвы на подложный сайт, который, к примеру, может иметь очень схожий или неотличимый интерфейс, но украдет ваши данные кредитной карты или другие критичные конфиденциальные данные.
Этот вид уязвимостей, также как и многие другие перечисленные выше, является разновидностью ошибок проверки входящих данных (input validation).
Вместо заключения
Мы рассмотрели основные виды уязвимостей из OWASP TOP-10 в общем виде, постарались рассказать о них максимально простым языком, а также показать на простых практических примерах, какие риски несут для вашего бизнеса те или иные векторы атак.
В первую очередь эта статья была рассчитана на собственников интернет-проектов и молодых разработчиков. В дальнейших статьях мы осветим более подробно каждый из упомянутых векторов атак, уже с развернутыми техническими подробностями и наглядными примерами, и конечно же, способами защиты.
Если Вы – собственник бизнеса, мы надеемся, что ваше понимание рисков, связанных с IT-безопасностью стало более полным, а следующие статьи могут стать отличным пособием для ваших IT-специалистов.
habr.com
Vulners — Гугл для хакера. Как устроен лучший поисковик по уязвимостям и как им пользоваться / Журнал Хакер corporate blog / Habr
Часто нужно узнать всю информацию о какой-нибудь уязвимости: насколько найденный баг критичен, есть ли готовые сплоиты, какие вендоры уже выпустили патчи, каким сканером проверить наличие бага в системе. Раньше приходилось искать вручную по десятку источников (CVEDetails, SecurityFocus, Rapid7 DB, Exploit-DB, базы уязвимостей CVE от MITRE/NIST, вендорские бюллетени) и анализировать собранные данные. Сегодня эту рутину можно (и нужно!) автоматизировать с помощью специализированных сервисов. Один из таких — Vulners, крутейший поисковик по багам, причем бесплатный и с открытым API. Посмотрим, чем он может быть нам полезен.
Vulners — это очень большая и непрерывно обновляемая база данных ИБ-контента. Сайт позволяет искать уязвимости, эксплоиты, патчи, результаты bug bounty так же, как обычный поисковик ищет сайты. Vulners агрегирует и представляет в удобном виде шесть основных типов данных:
- Популярные базы уязвимостей. Они содержат общие описания уязвимостей и ссылки на источники. Например, известная CVЕ американского агентства MITRE и института NIST. Но, помимо информации из нее, в Vulners добавляются общие описания уязвимости и других исследовательских центров и центров реагирования: Vulnerability Lab, XSSed, CERT, ICS, Zero Day Initiative, Positive Technologies, ERPScan.
- Вендорские бюллетени безопасности. Это баг-репорты, которые пишут сами вендоры об уязвимостях в своих продуктах. Сейчас это разнообразные дистрибутивы Linux (Red Hat CentOS, Oracle Linux, Arch Linux, Debian, Ubuntu, SUSE), FreeBSD, сетевые устройства (F5 Networks, Cisco, Huawei, Palo Alto Networks) и популярные и критичные программы (OpenSSL, Samba, nginx, Mozilla, Opera), в том числе и CMS (WordPress, Drupal).
- Эксплоиты из Exploit-DB и Metasploit. Они парсятся и сохраняются полностью, с исходниками (их можно сразу смотреть в удобном редакторе).
- Nessus-плагины для детекта уязвимостей. Легко посмотреть, можно ли найти ту или иную уязвимость при сканировании сети этим популярным сканером.
- Дисклозы багов с сайтов bug bounty программ. В Vulners поддерживаются записи с HackerOne.
- Публикации на тематических ресурсах. Собираются данные с Threatpost и rdot.org, где часто освещают темы, связанные с уязвимостями.
Все это обрабатывается, каталогизируется, структурируется и доступно для поиска в любой момент.
Вендоры, от которых собирается и анализируется инфа в Vulners
В отличие от других баз, которые описывают баги в специальном формализованном виде (например, на языке OVAL-баз CIS или SecPod), Vulners хранит данные в формализованном виде и автоматически устанавливает связи между ними, быстро ищет и красиво отображает результаты поиска. Что с этим делать, целиком зависит от фантазии конечного пользователя.
Кто и на чем пишет Vulners?
Vulners пилят на энтузиазме в свободное от основной работы время пять человек:
- Кирилл «isox» Ермаков пишет ядро и админит;
- Игорь «Videns» пишет поиск;
- Ваня «Ванкувер» пишет фронт;
- Саша «Plex» пишет роботов-сборщиков;
- Александр Леонов пишет статьи и аналитику.
Первую версию Vulners выкатили уже через пару месяцев с начала разработки к конференции Black Hat USA 2015 в Лас-Вегасе. Сейчас проекту уже год.Весь движок Vulners написан на Python + Django, в качестве базы взята MongoDB + Elasticsearch. MongoDB используется только для закладки данных роботами — сборщиками информации, Elasticsearch только для фронтенда. Деплой производится с Bitbucket’а скриптом. Масштабирование заложено прямо в ядре: MongoDB и Elasticsearch шардятся. Фабрика роботов написана хостонезависимой и может гоняться отдельно от всего проекта. Одна из крутых фишек — ребята уже полностью перешли на Python 3.5+ и asyncio в своем проекте. Так что поиск не всегда работает точно, но всегда очень быстро :).
На текущий момент в базе Vulners 319 557 бюллетеней и 144 684 эксплоита. А занимает все это в базе меньше 2 Гбайт. Такая компактность достигается за счет дедупликации и упаковывания. Все лежит в оперативной памяти, поэтому скорость поиска значительно увеличивается. Стоит упомянуть и то, что Vulners защищается WAF Wallarm, работающим в блокирующем режиме.
Архитектура Vulners
Но довольно слов, давай попробуем что-нибудь поискать.
Первое, что видишь, когда заходишь на Vulners, — это, конечно же, строка поиска. Просто введи название приложения, сайта или CVE-код уязвимости, и Вульнерс выдаст тебе все последние публичные баги по этому продукту со ссылками на эксплоиты, плагины для детекта и различные публикации.
Типовая выдача Vulners по багам WordPress. Обрати внимание: данные обновляются постоянно и в автоматическом режиме
Естественно, простые запросы вроде «wordpress» или «xakep.ru» рассматривать скучно, с этим ты и сам разберешься. Давай посмотрим, что интересного умеет Vulners.
Задача: найти критичные баги CentOS со ссылками на сплоиты
Запрос:
type:centos order:published
Vulners позволяет фильтровать результаты поиска и/или сортировать их по любому полю баги:
- по типу бюллетеня;
- по CVSS Score;
- по дате;
- по номеру плагина детекта;
- по имени ресерчера.
И так далее. Искать и сортировать можно абсолютно по любому полю.
Благодаря этому мы можем сформировать сложный запрос типа type:centos cvss.score:[8 TO 10] order:published, что означает «найди мне все новые баги CentOS, где CVSS Score от 8 до 10, то есть критичный». Поскольку Вульнерс автоматически связывает с багой все собранные данные, на странице CVE ты увидишь доступные патчи и эксплоиты.
Также результаты выполнения этого запроса можно получать при помощи API — это пригодится тебе в автоматизированных сканерах. Для этого достаточно сделать GET-запрос на https://vulners.com/api/v3/search/lucene/?query=type:centos%20cvss.score:[8%20TO%2010]%20order:published
. В ответ придет отформатированный машиночитаемый JSON.
Еще один полезный параметр API-запросов — references=true
, который позволяет получить в результатах запроса не только объекты безопасности, но и все их связи (плагины детекта, эксплоиты и прочее). Например, такой запрос:https://vulners.com/api/v3/search/lucene/?references=True&query=type:centos%20cvss.score:[8%20TO%2010]%20order:published
— выведет еще и все references, связные элементы из базы.
Графическое задание запроса
Получаем больше двадцати записей от Vulners
По умолчанию Vulners отдает только первые двадцать записей запроса. Если хочется больше, нужно задать параметрsize
. Так можно получить до 10 000. А если и этого мало, то можно запрашивать несколько раз по 10 000, пропуская уже полученные результаты при помощи параметраskip
.
Задача: обосновать IT-департаменту, зачем нужен патч-менеджмент (или просто найти все сплоиты по определенной баге)
Запрос:
cvelist:CVE-2014-0160 type:exploitdb
При помощи Vulners сравнительно просто обосновать IT-департаменту, почему уязвимости, обнаруженные сканером, действительно опасны и их стоит патчить. Для этого можно показать список эксплоитов, найденных по номеру CVE или другому идентификатору. Доступен поиск по Exploit-DB или Metasploit. На одной странице будет и описание, и исходники эксплоита, по которым также можно искать.
Ищем сплоиты по CVE–2014–0160
Как видим, на странице эксплоита приводится его полный текст. По этому тексту также можно искать.
Эксплоит можно просмотреть в удобной превьюшке
Задача: узнать, сколько денег и на каких bug bounty заработал определенный хакер
Запрос:
isox order:bounty
Уникальная фича Vulners — поиск по баг-баунти. Можно найти, какие уязвимости софта зарепортил исследователь, и посмотреть его достижения в bug bounty программах. Результаты можно сортировать по командам, исследователям, цене и прочему.
Например, ищем по нику, сортируем по размеру вознаграждения за баг-баунти:
Пример поиска по bounty
Вульнерс нашел зарепорченную багу в Mail.Ru, за которую заплатили 400 долларов
А если уточнить в запросе reporter, можно считать чужие деньги, что стыдно, но любопытно.
$ curl "https://vulners.com/api/v3/search/lucene/?query=type%3Ahackerone+order%3Alastseen+reporter%3Aisox" 2>/dev/null | awk '{if($0~"\"bounty\""){gsub(",","",$2)}; earn+=$2 }END{print earn}'
Ответ (в долларах):
2640
Также можно искать примеры реальных SQL-инъекций или уязвимостей, которые находили на конкретном сервисе, например на Vimeo:
type:hackerone Vimeo
.
Ищем зарепорченные на HackerOne баги по сервису Vimeo
Задача: найти баги по плагинам Nessus
Запрос:
type:nessus order:published
Поиск по плагинам Nessus — также уникальная фича Vulners. Так, запрос выше выведет список последних добавленных плагинов.
Пример поиска по Nessus
Найденная уязвимость с GNU C Library
Задача: найти потенциальные уязвимости мобильных приложений
Еще одна крутая особенность Vulners — возможность искать по уязвимостям более чем 13 000 топовых Android-приложений из Google Play! Store US через базу HackApp. HackApp — это условно-бесплатный тулкит и сервис для поиска багов в мобильных приложениях. HackApp ведут свою базу найденных уязвимостей, где подробно описывают векторы атак и уязвимые версии.
С помощью Vulners и HackApp можно искать по уязвимостям более чем 22 025 топовых Android-приложений из Google Play! Store. Для поиска нужно указать тип type:hackapp. В результатах поиска отображается тайтл, количество уязвимостей по степени критичности и информация о приложении.
Поиск уязвимостей по базе HackApp
На момент написания статьи публично доступен только поисковый API. В JSON передается запрос и количество результатов (size), которое хочется получить. Максимальный размер выдачи — 10 000 записей. Хватит, чтобы утащить все бюллетени CentOS сразу. А чтобы забрать что-то совсем большое, за несколько раз, можно задать смещение с помощью параметра skip.
Поскольку Vulners использует Elasticsearch, любой запрос обрабатывается Apache Lucene. А это значит, что запросы к Vulners строятся точно так же, как к Lucene. Имена полей для поиска можно узнать в помощнике API. Любой ключ «схемы» для каждого типа коллектора можно использовать в качестве «ключа» в запросе Lucene, например:
title
description
affectedPackage
sourceData
cvelist
Пример запроса по API, который вернет данные по CVE–2014–0160:
curl https://vulners.com/api/v3/search/lucene/?query=type:cve%20id:CVE-2014-0160
Ответы также в JSON:
{ "data": { "exactMatch": null, "search": [ { "_index": "bulletins", "_score": 9.942732, "_source": { "type": "cve", "title": "CVE-2014-0160: OpenSSL heartbeat information disclosure", "published": "2014-04-07T18:55:03", "objectVersion": "1.0", "href": "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-0160", "reporter": "NVD", "modified": "2015-10-22T10:19:38", "references": [ "http://www.securitytracker.com/id/1030081", "http://public.support.unisys.com/common/public/vulnerability/NVD_Detail_Rpt.aspx?ID=1", "http://advisories.mageia.org/MGASA-2014-0165.html", ], "description": "OpenSSL could allow a remote attacker to obtain sensitive information, caused by an error in the TLS/DTLS heartbeat functionality. An attacker could exploit this vulnerability to remotely read system memory contents without needing to log on to the server. Successful exploitation could allow an attacker to retrieve private keys, passwords or other sensitive information.\r\n\r\nThis vulnerability is commonly referred to as \"Heartbleed\".", "lastseen": "2016-03-19T07:17:51", "cvss": { "vector": "AV:NETWORK/AC:LOW/Au:NONE/C:PARTIAL/I:NONE/A:NONE/", "score": 5.0 }, "id": "CVE-2014-0160", "scanner": [], "bulletinFamily": "NVD" }, "_id": "CVE-2014-0160", "_type": "bulletin" } ] }, "result": "OK" }
В апреле Vulners запустили бота для мессенджера Telegram. Пользоваться просто. Отправь боту сообщение /subscribe и свой поисковый запрос и получай новые результаты поиска, как только они будут появляться на Vulners. Но главное — с его помощью можно создавать настраиваемые подписки на security content.
Бот позволяет делать запросы, так же как на сайте.
Этот сервис может помочь безопасникам оставаться в курсе публикации новых уязвимостей. Ребята из эксплуатации могут подписаться на рассылки по программному обеспечению, которое используют. Пентестеры — оперативно получать информацию об эксплуатации уязвимостей на практике.
Хочешь просмотреть свежие публикации CVE? Нет проблем:
/subscribe type:cve
Хочешь видеть апдейты по эксплоитам?
/subscribe bulletinFamily:exploit
Твои серверы работают под Debian? Следи за их безопасностью!
/subscribe type:debian
А у Vulners есть альтернативы?
Vulners — не единственный агрегатор уязвимостей. Есть, к примеру, базы Secunia и OSVDB, но одна закрылась 5 апреля, а другая платная.Еще существует отечественный БнД УБИ ФСТЭК, но они хранят только описания самих уязвимостей и больше ничего (нет данных об эксплоитах), да и те, честно говоря, формализованы не очень. К тому же «Банк данных угроз безопасности информации» не предоставляет открытого API, то есть использовать его в автоматизированных сканерах не получится.
Vulners — уникальный и незаменимый помощник любому хакеру и безопаснику. Он очень сильно экономит время при исследовании и эксплуатации сложных векторов атак. Конечно, инструмент только развивается, но уже сейчас он вполне юзабелен. А что еще более важно, Vulners открытый и бесплатный для конечного пользователя и всегда будет таким.
Кстати, уязвимости, найденные на vulners.com, можно сабмитить на https://hackerone.com/vulnerscom. Искать можно все что угодно. Так как проект бесплатный, то и финансирования для выплаты вознаграждений нет, но public disclosure разработчики гарантируют. Email для связи [email protected], прочие контактные данные здесь.
Впервые опубликовано в Журнале «Хакер» от #06/2016
Подпишись на «Хакер»:
habr.com
Hacksplaining — интерактивный курс по веб-уязвимостям / OWASP corporate blog / Habr
Hacksplaining представляет каталогизированный и наглядный онлайн-туториал по основным веб-уязвимостям. По каждой уязвимости представлено подробное описание, насколько часто встречается, как сложно ее эксплуатировать и уровень ее критичности. К каждой уязвимости приложено подробное описание, вектор эксплуатации, уязвимый код и рекомендации по устранению и защите. В качестве примера в статье приведен разбор одного из заданий по взлому виртуального онлайн-банкинга с помощью эксплуатации sql-инъекции.
Рассматриваемые уязвимости:
SQL Injection
Внедрение SQL-кода — один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода.Cross-site Scripting (XSS)
XSS — «межсайтовый скриптинг» тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника. В контексте сайта рассматриваются три вида таких атак: хранимые, отраженные и DOM-based.Command Execution
Атака, при которой целью является выполнение произвольных команд в операционной системе хоста через уязвимое веб-приложение.Clickjacking
Client-side вектор атаки: пользователь, совершая клик на специально сформированной странице злоумышленника, на самом деле кликает по ссылке на совершенно другом сайте.Cross-site Request Forgery
«Межсайтовая подделка запроса», — вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную операцию (например, перевод денег на счёт злоумышленника).Directory Traversal
Обход каталога (или обход пути) заключается в использовании недостаточной проверки безопасности предоставленных пользователем имен файлов, так что символы, представляющие переход к родительскому каталогу, передаются через API.File Upload Vulnerabilities
К загрузкам файлов следует относиться с осторожностью — они представляют собой простой способ для злоумышленника внедрить вредоносный код в ваше приложение.Broken Access Control
Все ресурсы на вашем сайте должны иметь реализованный контроль доступа, даже если они не предназначены для обычных пользователей. Полагаться на «security through obscurity» нельзя.Open Redirects
Большинство веб-приложений использует функционал переадресаций. Если ваш сайт перенаправляет все URL-адреса, указанные в строке запроса — это может помочь злоумышленнику сформировать фишинговые вектора атак.Unencrypted Communication
Недостаточное шифрование может сделать вас уязвимыми для атак типа «Man-in-the-Middle». Обязательно используйте HTTPS при передаче любого типа конфиденциальной информации.User Enumeration
Если злоумышленник может злоупотреблять функцией проверки подлинности, чтобы проверить, существует ли имя пользователя на вашем сайте, это значительно упростит использование других уязвимостей.Information Leakage
Выявление служебной информации помогает злоумышленнику узнать о технологиях вашего сайта, путях и т.д. и может дать возможность злоумышленникуPassword Mismanagement
Безопасная обработка паролей имеет важное значение для безопасной системы аутентификации.Privilege Escalation
Повышение привилегий — злоумышленник использует уязвимость для представления другим пользователем (как правило с более высокими правами) или получения дополнительных разрешений.Session Fixation
Небезопасная обработка идентификаторов сеансов может привести к захвату сессии пользователя.Weak Session IDs
Предполагаемые идентификаторы сеанса делают ваш сайт уязвимым для захвата сеанса.XML Bombs
XML-документы могут включать встроенные макросы. Небезопасная обработка этих макросов может сделать ваш сервер уязвимым для атак из специально сформированных XML-файлов.XML External Entities
XML-файлы могут включать встроенные ссылки на другие документы. Небезопасная обработка внешних ссылок позволяет злоумышленнику получить доступ к файловой системе.Разбор кейса уязвимости SQL-инъекция
На первом шаге мы видим форму авторизации онлайн-банкинга и уведомление о наличии вероятной уязвимости:
Для удобства внизу страницы расположен лог запроса:
Далее нас просят ввести произвольный легитимный логин и пароль:
Данные неверны, попробуем обойти системы авторизации:
Получаем сообщение об ошибке (и более детальную информацию в логе):
На появившейся вкладке CODE выявляем природу ошибки:
Мы видим завершение запроса, теперь попробуем использовать эту уязвимость для обхода авторизации онлайн-банкинга:
Как вы видите мы добавили условие «1=1», значит критерием проверки будет «если логин ‘user’ или 1=1», но ведь 1 всегда равно 1. Если описать более простым языком — мы пытаемся войти в систему под пользователем user, с паролем равным условию 1=1.
Условие соблюдено — 1=1, а парольное поле отбрасывается!
Таким способом мы проникли внутрь онлайн-банкинга. Далее нам предоставляется описание методов защиты от инъекций: примеры кода, описание рисков и т.д.
Дополнительно
В качестве дополнения к эксплуатации вектора SQL-инъекция рекомендую ознакомиться: со следующим материалом:
Заключение
Онлайн туториал сделан довольно подробно и добротно и рекомендован к изучению в первую очередь разработчикам в качестве наглядного пособия «как не надо писать код.» Для специалистов по информационной безопасности это неплохая шпаргалка и средство визуализации веб-уязвимостей с хорошим описанием и пошаговой демонстрацией вектора атаки.
www.hacksplaining.com
habr.com