
Эксплойт для Apache Struts CVE-2017-9805 — уязвимость удалённого выполнения кода в плагине REST. Позволяет проводить тестирование на проникновение и оценку безопасности Java-веб-приложений на основе Struts.
Веб-фреймворк Apache Struts — это бесплатное решение с открытым исходным кодом для создания Java-веб-приложений.
Веб-приложения отличаются от обычных веб-сайтов тем, что могут создавать динамический ответ. Многие веб-сайты отдают только статические страницы. Веб-приложение может взаимодействовать с базами данных и механизмами бизнес-логики, чтобы настраивать ответ.
Веб-приложения на основе JavaServer Pages иногда смешивают код работы с базой данных, код дизайна страниц и код управления потоком. На практике мы обнаруживаем, что если эти задачи не разделены, большие приложения становится трудно сопровождать.
Один из способов разделить задачи в программном приложении — использовать архитектуру Model-View-Controller (MVC). Модель представляет бизнес-логику или код базы данных, Представление — код дизайна страницы, а Контроллер — код навигации. Фреймворк Struts разработан, чтобы помочь разработчикам создавать веб-приложения, использующие архитектуру MVC.
Фреймворк предоставляет три ключевых компонента:
Обработчик «запроса», создаваемый разработчиком приложения и сопоставляемый со стандартным URI. Обработчик «ответа», который передаёт управление другому ресурсу, завершающему ответ. Библиотеку тегов, которая помогает разработчикам создавать интерактивные формы на серверных страницах. Архитектура и теги фреймворка соответствуют современным требованиям. Struts хорошо работает с обычными REST-приложениями и с такими технологиями, как SOAP и AJAX.
Apache Struts Project — это сообщество с открытым исходным кодом, которое создаёт и поддерживает фреймворк Apache Struts. Проект состоит из разнообразной группы волонтёров, разделяющих общие ценности совместной разработки на основе сообщества. Apache Struts Project гордится тем, что разделяет эти ценности с нашей родительской организацией: Apache Software Foundation.
Проект называется «Struts», потому что фреймворк предназначен для обеспечения «невидимой основы», поддерживающей профессиональную разработку приложений. Struts предоставляет связующее звено, которое объединяет различные элементы стандартной платформы Java в единое целое. Наша цель — использовать существующие стандарты, создавая недостающие части для разработки приложений корпоративного уровня, которые легко поддерживать с течением времени.
Apache Struts Project предлагал две основные версии фреймворка Struts. В настоящее время мы поддерживаем только версию Struts 2. Рекомендуется перевести все приложения Struts 1.x на Struts 2. Пожалуйста, не начинайте разработку новых приложений на Struts 1.x, так как мы больше не выпускаем исправления безопасности.
Struts 2 изначально был известен как WebWork 2. После нескольких лет независимой работы сообщества WebWork и Struts объединились, чтобы создать Struts 2. Фреймворк 2.x — лучший выбор для команд, которые ценят элегантные решения сложных проблем.
Apache Struts — это современный, поддерживаемый и полнофункциональный веб-фреймворк. Он существует уже много лет, и благодаря огромной пользовательской базе вряд ли исчезнет в ближайшее время. Кроме того, у нас есть преданные пользователи и разработчики в проекте. Apache Struts распространяется по лицензии Apache License 2.0, и это не изменится. Мы поддерживаем чистую интеллектуальную собственность, и вы можете «безопасно» использовать проект. Иногда вы не можете «безопасно» использовать проект, когда компания контролирует SCM. Доступ к исходному коду не означает, что он свободен. С Apache Struts вы не только свободны «делать с ним всё, что хотите», но и можете вносить свой вклад (что бывает не всегда). И самое лучшее: вы тоже можете стать частью основной команды.
Обычно очень легко интегрировать другие технологии с Apache Struts. Если вы используете ORM, такой как Apache Cayenne, Hibernate или JDBC, у вас не будет никаких ограничений. Apache Struts также не слишком привязан к технологиям фронтенда. В старые времена это был JSP, затем появились Velocity и Freemarker. Сегодня вы можете создавать веб-приложение на простом HTML и AngularJS. Или использовать Sitemesh или Tiles. Всё это не проблема благодаря элегантным и простым в использовании механизмам расширения Struts.
В отличие от других компонентно-ориентированных фреймворков, мы не стремимся скрывать отсутствие состояния в вебе. Мы считаем, что вполне допустимо строить на основе цикла Запрос/Ответ. Мы также считаем, что паттерн MVC не так уж плох, просто потому что он старый. На самом деле мы полагаем, что архитектура Apache Struts чистая и её легко понять.
Конечно, если вы хотите создавать компоненты на серверной стороне, которые отображаются на фронтенде, Struts вам, скорее всего, не подойдёт. Это другой подход, который обещает уменьшить объём знаний HTML/JavaScript и создать переиспользуемые компоненты для слоя представления. Такие проекты, как Wicket и Tapestry, отлично служат этой цели. Как и в случае с любым фреймворком, вам нужно решить, имеет ли смысл создавать компоненты или вам лучше подход Struts.