
Exploit pour Apache Struts CVE-2017-9805, une vulnérabilité d'exécution de code à distance dans le plugin REST. Permet les tests d'intrusion et l'évaluation de la sécurité des applications Web Java basées sur Struts.
Le framework web Apache Struts est une solution open source gratuite pour créer des applications web Java.
Les applications web se distinguent des sites web conventionnels par le fait qu'elles peuvent générer une réponse dynamique. De nombreux sites web ne diffusent que des pages statiques. Une application web peut interagir avec des bases de données et des moteurs de logique métier pour personnaliser une réponse.
Les applications web basées sur JavaServer Pages mélangent parfois le code de base de données, le code de conception de pages et le code de contrôle de flux. En pratique, nous constatons qu'à moins de séparer ces préoccupations, les applications plus importantes deviennent difficiles à maintenir.
Une façon de séparer les préoccupations dans une application logicielle est d'utiliser une architecture Modèle-Vue-Contrôleur (MVC). Le Modèle représente le code métier ou de base de données, la Vue représente le code de conception de pages et le Contrôleur représente le code de navigation. Le framework Struts est conçu pour aider les développeurs à créer des applications web qui utilisent une architecture MVC.
Le framework fournit trois composants clés :
Un gestionnaire de « requête » fourni par le développeur de l'application et mappé à une URI standard. Un gestionnaire de « réponse » qui transfère le contrôle à une autre ressource qui complète la réponse. Une bibliothèque de balises qui aide les développeurs à créer des applications interactives basées sur des formulaires avec des pages serveur. L'architecture et les balises du framework sont conformes au jargon à la mode. Struts fonctionne bien avec les applications REST conventionnelles et avec des technologies comme SOAP et AJAX.
Le projet Apache Struts est la communauté open source qui crée et maintient le framework Apache Struts. Le projet se compose d'un groupe diversifié de bénévoles qui partagent des valeurs communes concernant le développement open source collaboratif et communautaire. Le projet Apache Struts est fier de partager ces valeurs avec notre organisation mère : The Apache Software Foundation.
Le projet s'appelle « Struts » parce que le framework est destiné à fournir les « fondations invisibles » qui soutiennent le développement d'applications professionnelles. Struts fournit la colle qui assemble les différents éléments de la plateforme Java standard en un tout cohérent. Notre objectif est de tirer parti des normes existantes en produisant les pièces manquantes dont nous avons besoin pour créer des applications d'entreprise faciles à maintenir dans le temps.
Le projet Apache Struts a proposé deux versions majeures du framework Struts. Actuellement, nous ne maintenons que la version Struts 2. Il est recommandé de faire migrer toutes les applications Struts 1.x vers Struts 2. Veuillez ne pas démarrer de nouveau développement d'application avec Struts 1.x, car nous n'émettons plus de correctifs de sécurité.
Struts 2 était à l'origine connu sous le nom de WebWork 2. Après avoir travaillé indépendamment pendant plusieurs années, les communautés WebWork et Struts ont uni leurs forces pour créer Struts 2. Le framework 2.x est le meilleur choix pour les équipes qui apprécient les solutions élégantes à des problèmes difficiles.
Apache Struts est un framework web moderne, maintenu et riche en fonctionnalités. Il existe depuis des années et, étant donné l'énorme base d'utilisateurs, il est peu probable qu'il disparaisse de sitôt. Non seulement nous avons des utilisateurs et des développeurs dévoués sur le projet. Apache Struts est sous licence Apache License 2.0 et cela ne changera pas. Nous maintenons une propriété intellectuelle propre et vous êtes « en sécurité » en utilisant le projet. Parfois, vous n'êtes pas « en sécurité » en utilisant un projet lorsqu'une entreprise contrôle le SCM. L'accès au code source ne signifie pas qu'il est gratuit. Avec Apache Struts, vous êtes non seulement libre d'« en faire ce que vous voulez », mais vous pouvez même contribuer (ce qui n'est pas toujours le cas). Et le meilleur dans tout cela : vous pouvez aussi devenir membre de l'équipe principale.
Il est généralement très facile d'intégrer d'autres technologies avec Apache Struts. Si vous utilisez un ORM comme Apache Cayenne, Hibernate ou JDBC, vous n'aurez aucune restriction. Apache Struts n'est pas non plus trop lié à une technologie frontend. Autrefois, c'était JSP, puis sont venus Velocity et Freemarker. De nos jours, vous pouvez construire votre application web avec simplement du HTML statique et AngularJS. Ou vous voulez utiliser Sitemesh ou Tiles. Tout cela ne pose aucun problème grâce aux mécanismes d'extension élégants et faciles à utiliser de Struts.
Contrairement à d'autres frameworks orientés composants, nous ne cherchons pas à masquer la nature sans état du web. Nous pensons qu'il est parfaitement acceptable de construire sur un cycle Requête/Réponse. Nous pensons également que le modèle MVC n'est pas si mauvais, simplement parce qu'il est ancien. En fait, nous croyons que l'architecture d'Apache Struts est propre et facile à comprendre.
Bien sûr, si vous souhaitez construire des composants côté serveur qui s'affichent côté frontend, vous faites probablement fausse route avec Struts. C'est une approche différente qui promet de réduire la quantité de connaissances HTML/JavaScript nécessaires et de créer des composants réutilisables pour la couche de présentation. Des projets comme Wicket et Tapestry remplissent très bien cette fonction. Comme avec chaque framework, vous devez décider s'il est pertinent pour vous de construire des composants ou si vous êtes mieux avec l'approche Struts.