Аудит веб-приложений
С каждым годом веб-приложения становятся неотъемлемой частью нашей повседневной жизни. Однако с ростом популярности таких решений возрастают и риски, связанные с безопасностью. Чтобы обеспечить надёжную защиту, важно понимать, на какие угрозы стоит обратить внимание и какие меры безопасности принять. Давайте разберёмся, как правильно анализировать защищённость веб-приложений, и на примере Bitrix24 посмотрим, как эффективно решаются вопросы безопасности.
Угрозы, с которыми сталкиваются веб-приложения
Каждое веб-приложение подвержено определённым рискам. Вот несколько наиболее распространённых угроз:
-
Утечка учётных данных (UIDH)
По умолчанию список пользователей не опубликован, но с помощью этой уязвимости злоумышленник может подобрать список логинов. Она использует функцию «Запомнить меня на этом компьютере», через которую при запросе валидного логина сервер выдаёт строку BITRIX_SM_UIDH=deleted, подтверждая, что логин существует. Злоумышленник, зная логины, может упрощённо атаковать пароли.
-
Межсайтовый скриптинг (XSS)
Атаки XSS позволяют хакерам внедрить вредоносный скрипт в страницу, который затем выполняется на компьютере пользователя. Это может привести к краже сессии пользователя и доступа к порталу. Например, в Bitrix до версии 20.0.0 уязвимость XSS существовала в конечной точке galleries_recalc.php, где веб-приложение не фильтровало параметр arParams[IBLOCK_ID]. Злоумышленник мог внедрить произвольный скрипт, что позволяло получить доступ к сессиям через социальную инженерию и похищение cookie-файлов.
-
Атаки CSRF
Злоумышленники могут заставить пользователя выполнить нежелательное действие на сайте, например, изменить настройки или перейти на вредоносный ресурс. В Bitrix версии content spoofing присутствует в нескольких формах:
Content Spoofing (AJAX) позволяет изменять контент страницы через параметры items[1][TITLE] и ITEMS[1][DETAIL_LINK] в ajax.php. Злоумышленник может изменить содержимое страницы или сообщения, чтобы ввести пользователя в заблуждение. Content Spoofing (Image) работает через параметр img в imagepg.php, позволяя изменять изображения на странице, чтобы обмануть пользователя, побуждая его нажать на вредоносную ссылку.
-
Неправильная настройка серверов
Иногда безопасность нарушается из-за неверных настроек серверов или программного обеспечения. Например, на внешнем периметре могли быть доступны файлы архива сайта и портала Bitrix, такие как .settings.php и dbcon.php, содержащие чувствительную информацию о конфигурации сервера и подключениях к базе данных.
-
Open redirection
Эта уязвимость позволяет злоумышленникам перенаправлять пользователей на сторонние вредоносные ресурсы. URL-перенаправления могут вводить пользователей в заблуждение относительно того, какой сайт они посещают, и способствовать фишинговым атакам. В Bitrix использование функции LocalRedirect() может привести к открытым перенаправлениям, которые помогут злоумышленникам перехватить данные пользователей или распространить вредоносное ПО.
-
Full Path Disclosure
Эта уязвимость позволяет раскрыть полный путь к директории сайта через ошибки, возникающие при некорректной обработке. Если PHP настроен для отображения ошибок (display_errors=On), атакующий может использовать конечные точки, такие как /bitrix/admin/restore_export.php, чтобы получить полный путь к корневой директории. Это даёт злоумышленнику возможность узнать структуру файлов и пути, что облегчает дальнейшие атаки.
-
Server-Side Request Forgery (SSRF)
Уязвимость SSRF в Bitrix, выявленная в скриптах main.urlpreview и html_editor_action.php, позволяет злоумышленнику отправлять запросы от имени системы на произвольные серверы. В случае, если функция url_preview_enable активирована, злоумышленник может получить доступ к внутренним ресурсам и конфиденциальным данным.
-
Local File Disclosure / Include
Эта уязвимость была найдена в скрипте virtual_file_system.php. Она позволяет злоумышленнику при определённых условиях читать локальные файлы или включать их в ответ сервера. При определённой настройке или в связке с другими уязвимостями это может привести к утечке конфиденциальных данных сервера.
-
Arbitrary Object Instantiation
Уязвимость Arbitrary Object Instantiation позволяет злоумышленнику создавать объекты произвольных классов, используя параметры запроса. Например, с помощью vote/uf.php атакующий может создать экземпляр встроенного класса PHP, например PDO, что позволяет совершить SSRF-атаку или другие действия. Уязвимость эксплуатирует особенности внутренней логики Bitrix и может быть сложной для обнаружения.
-
Arbitrary File Write
Уязвимость в html_editor_action.php даёт возможность злоумышленнику записывать файлы в определённые директории, такие как upload/tmp/, на сервере.