S2-52 分析

From: S2-52 分析(含POC)

0x01 漏洞描述

2017年9月5日,Apache Struts发布最新安全公告,Apache Struts2的REST插件存在远程代码执行的高危漏洞,该漏洞由lgtm.com的安全研究员汇报,漏洞编号为CVE-2017-9805(S2-052)。Struts2 REST插件的XStream组件存在反序列化漏洞,使用XStream组件对XML格式的数据包进行反序列化操作时,未对数据内容进行有效验证,存在安全隐患,可被远程攻击。

Struts2启用了rest-plugin后并编写并设置了XStreamHandler后,可以导致远程命令执行这一严重问题。

xxlegend师傅已经分析了官方缓解措施无效《S2-052漏洞分析及官方缓解措施无效验证》

建议升级到Struts 2.5.13 or Struts 2.3.34

0x02 测试环境

使用struts官方showcase, 2.5.12、2.3.33及以下,下载地址: https://archive.apache.org/dist/struts/ 。

载入工程,apps目录下rest-showcase为可进行。

S2-52 分析_第1张图片
image.png

0x03 漏洞分析

struts2的ContentTypeInterceptor会根据ContentType、url后缀寻找响应的处理handler,并调用handler相关的反序列化函数。xml形式的restfull请求转至XStreamHandler进行处理。

S2-52 分析_第2张图片
image.png

struts2-rest-plugin请求处理handler定义:

image.png

XStreamHandler在没有进行任何验证的情况下直接反序列化xml形式的数据。

image.png

这里在调试的是否发现一坑,反序列化的栈中若只有一个对象,将会导致直接返回toObject函数传入的target对象。

S2-52 分析_第3张图片
image.png
image.png

0x04 POC执行

目前公布的POC由于使用了jdk.nashorn,javax.imageio,需要用jdk1.8以上。

POC执行链

S2-52 分析_第4张图片
image.png

最终在ImageIO$ContainsFilter.filter中触发POC构造的命令执行

S2-52 分析_第5张图片
image.png
S2-52 分析_第6张图片
image.png

你可能感兴趣的:(S2-52 分析)