S2-003 漏洞就出现在 com.opensymphony.xwork2.interceptor.ParametersInterceptor 拦截器处理时, doIntercept 方法对提交的参数对值栈中的数据进行赋值,同时进行解析,此时过滤不严导致可以通过 ognl 表达式操作值栈中 map/context 栈 的对象来执行方法,进而导致命令执行。 首先我们可以先看看 ognl 取出 context/map 栈中...
S2-003 漏洞就出现在 com.opensymphony.xwork2.interceptor.ParametersInterceptor 拦截器处理时, doIntercept 方法对提交的参数对值栈中的数据进行赋值,同时进行解析,此时过滤不严导致可以通过 ognl 表达式操作值栈中 map/context 栈 的对象来执行方法,进而导致命令执行。 首先我们可以先看看 ognl 取出 context/map 栈中...
S2-003的漏洞核心在于Struts2中的ParametersInterceptor(某个拦截器)会对请求中的参数名称进行OGNL的表达式解析,虽然有一定的过滤,但是过滤的不完全导致被绕过。 影响版本:2.0.0~2.1.8.1 官方issue地址:https://cwiki.apache.org/confluence/display/WW/S2-003 官方issue地址:https://cwiki.apache.org/confluence/di...
五、 POC: 其实S2-003是S2-005的前身,他的POC即为S-005的缩小版,因为S2-003之后官方偷偷修改安全配置,默认让SecurityMemberAccess(管理ognl权限的类)的allowStaticMethodAccess为false,这里简单把S2-005的POC去掉&('\u0023_memberAccess.allowStaticMethodAccess\u003dtrue')(bla)(bla)这句话 ?('\u0023context[\'...
Struts2漏洞之S2-016漏洞分析与exp编写 有:S2-003,S2-005,S2-007,S2-008,S2-009,S2-012~S2-016,下面逐一简要说明。 一、S2-003 受影响版本:低于Struts 2.0.12 struts2会将http的每个参数名解析为ongl语句执行(可理解为java代码)。ongl表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,...
0x00 漏洞概述 S2-009是S2-003与S2-005的补丁绕过,当时的补丁是增加了正则以及相关的限制(这些限制可以通过执行OGNL表达式进行修改),主要的防御还是正则。 这次的问题还是出现在ParameterInterceptor这个拦截器上,其漏洞原理类似于二次注入,先将Payload注入到上下文中,取出来时通过某个特定语法就可以执行之前设置过的Payloa...
Struts2 漏洞分析系列 - S2-009/003与005的补丁绕过 0x00 漏洞概述 S2-009是S2-003与S2-005的补丁绕过,当时的补丁是增加了正则以及相关的限制(这些限制可以通过执行OGNL表达式进行修改),主要的防御还是正则。 这次的问题还是出现在ParameterInterceptor这个拦截器上,其漏洞原理类似于二次注入,先将Payload注入到上下文中...
0x00 漏洞概述 S2-009是S2-003与S2-005的补丁绕过,当时的补丁是增加了正则以及相关的限制(这些限制可以通过执行OGNL表达式进行修改),主要的防御还是正则。 这次的问题还是出现在ParameterInterceptor这个拦截器上,其漏洞原理类似于二次注入,先将Payload注入到上下文中,取出来时通过某个特定语法就可以执行之前设置过的Payloa...
Struts 2 漏洞专题 | S2-003 漏洞简介# OGNL除其他功能外,还提供了广泛的表达式评估功能。 该漏洞使恶意用户可以绕过ParametersInterceptor内置的'#'使用保护,从而能够操纵服务器端上下文对象。 因此,例如,要将#session.user设置为“ 0wn3d”,可以使用以下参数名称:...
Struts2的代码执行问题最早要追溯到2010年,当时来自Google安全Team的Meder Kydyraliev发现可以通过用unicde编码的形式绕过参数拦截器对特殊字符“#”的过滤,造成代码执行问题,官方漏洞编号S2-003,我们可以在struts2官方的漏洞公告中看到如下文字,如图: 官方给出了利用代码,但是对却忽视了这个漏洞的威力,因为官方看到Meder...