Struts2高危漏洞S2-048分析附(poc)

颓废 2019年5月19日10:07:47评论815 views字数 772阅读2分34秒阅读模式
摘要

漏洞简要描述:当Struts 2中的  Struts 1插件启用的情况下,攻击者通过使用恶意字段值可能造成RCE。这些不可信的输入数据被带入到ActionMessage类中的错误信息中。

漏洞编号:CVE-2017-9791

漏洞作者:icez ic3z#qq.com

影响版本:Struts 2.3.x

漏洞等级:高危

漏洞简要描述:当Struts 2中的  Struts 1插件启用的情况下,攻击者通过使用恶意字段值可能造成RCE。这些不可信的输入数据被带入到ActionMessage类中的错误信息中。

Struts2高危漏洞S2-048分析附(poc)

org.apache.struts2.s1.Struts1Action 类为一个 Wrapper 类,用于将 Struts1 时代的 Action 包装成为 Struts2 中的 Action,以让它们在 struts2 框架中继续工作。

在 Struts1Action 的 execute 方法中,会调用对应的 Struts1 Action 的 execute 方法(第一个红色箭头处)。在调用完后,会检查 request 中是否设置了 ActionMessage,如果是,则将会对 action messages 进行处理并回显给客户端。处理时使用了 getText 方法,这里就是漏洞的触发点。所以漏洞的触发条件是:在 struts1 action 中,将来自客户端的参数值设置到了 action message 中。

在官方提供的 Showcase 中,就存在漏洞,如下图:
Struts2高危漏洞S2-048分析附(poc)

getText 方法的主要作用就是实现网站语言的国际化,它会根据不同的 Locale 去对应的资源文件里面获取相关文字信息(这些文件信息一般保存在 .properties 文件中),这些文字信息往往会回显至客户端。

Action messages 会通过 getText 方法最终进入 com.opensymphony.xwork2.util.LocalizedTextUtil.getDefaultMessage(String, Locale, ValueStack, Object[], String) 方法,如下:
Struts2高危漏洞S2-048分析附(poc)

以上是n1nty分析

POC

自行下载

需要登录才能下载

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
颓废
  • 本文由 发表于 2019年5月19日10:07:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Struts2高危漏洞S2-048分析附(poc)http://cn-sec.com/archives/68419.html

发表评论

匿名网友 填写信息